Github#グループ正規化これはグループ正規化論文のPyTorch実装です。バッチ正規化はバッチ全体で正規化されるため、バッチサイズが十分大きい場合はうまく機能しますが、小さなバッチサイズには適していません。デバイスのメモリ容量により、バッチサイズの大きい大規模モデルのトレーニングは不可能です。本稿では、一連の特徴をグループとしてまとめて正規化するグループ正規化について紹介します。これは、SIFTやHOGなどの古典的特徴はグループごとの特徴であるという観察に基づいています。この論文では、フィーチャチャネルをグループに分割し、各グループ内のすべてのチャネルを個別に正規化することを提案しています。フォーミュレーションすべての正規化層は、次の計算で定義できます。x^i​=σi​1​(xi​−μi​)ここで、xはバッチを表すテンソルで、iは単一値のインデックスです。画像をインデックスするための4次元ベクトルである場合。μi​σi​平均と標準偏差です。μi​σi​​=m1​k∈Si​∑​xk​=m1​k∈Si​∑​(xk​−μi​)2+ε​​Si​は、インデックスの平均と標準偏差を計算するインデックスのセットです。imSi​セットのサイズはすべて同じですi。Si​の定義は、バッチ正規化、レイヤー正規化、インスタンス正規化では異なります。バッチ正規化Si​={k∣kC​=iC​}同じフィーチャチャネルを共有する値はまとめて正規化されます。レイヤー正規化Si​={k∣kN​=iN​}バッチ内の同じサンプルの値はまとめて正規化されます。インスタンス正規化Si​={k∣kN​=iN​,kC​=iC​}同じサンプルと同じ特徴チャンネルの値が一緒に正規化されます。グループ正規化Si​={k∣kN​=iN​,⌊C/GkC​​⌋=⌊C/GiC​​⌋}ここで、Gはグループ数、Cはチャネル数です。グループ正規化は、同じサンプルと同じチャネルグループの値をまとめて正規化します。分類モデルを次に示します。