バッチ正規化はディープラーニングの定番テクニックですが、「バッチサイズが小さいと効きが悪い」という弱点があります。その弱点を解決するために生まれたのがグループ正規化(Group Normalization)です。チャネルをグループ分けして正規化するという発想を、バッチ正規化との対比でわかりやすく解説します。

📖 ひと言でいうと

グループ正規化とは、1つのサンプルの中でチャネルを複数のグループに分割し、グループごとに平均と分散をそろえる正規化手法です。ミニバッチ全体の統計量を使わないため、バッチサイズに依存せず安定した学習ができます。

身近な例えでいうと、クラス全員のテスト結果を使って成績を調整する(バッチ正規化)のではなく、生徒1人の答案の中で「国語系の設問グループ」「数学系の設問グループ」といったまとまりごとに採点基準をそろえるイメージです。他の生徒が何人いようと関係なく調整できます。厳密には、正規化とは各グループ内の数値を平均0・分散1に近い分布へ変換する処理を指します。

🖼 1枚でわかるグループ正規化

グループ正規化=チャネルをグループ分けして正規化
  • 仕組み — 各サンプル内のチャネルを複数グループに分割し、グループごとに正規化
  • 最大の強み — バッチサイズに依存せず安定した学習が可能
  • 背景 — バッチ正規化は小バッチやデータ分布の偏りで効果が低減
  • 有効な場面 — バッチサイズが小さい場合、バッチ正規化が適用しにくいRNNなど
  • 仲間 — バッチ/レイヤー/インスタンス正規化と並ぶ正規化手法の一つ
つくもち屋「G検定対策」SUMMARY

📘 公式テキストの説明

グループ正規化(Group Normalization)は、ディープラーニングにおける正規化手法の一つで、特に畳み込みニューラルネットワーク(CNN)で用いられる。従来のバッチ正規化(Batch Normalization)は、ミニバッチ内の全サンプルを用いて各層の出力を正規化するが、バッチサイズが小さい場合や、バッチ内のデータ分布が偏っている場合には効果が低減することがある。これに対し、グループ正規化は、各サンプル内のチャネルを複数のグループに分割し、各グループごとに正規化を行う手法である。この方法により、バッチサイズに依存せず、安定した学習が可能となる。特に、バッチサイズが小さい場合や、バッチ正規化が適用しにくいリカレントニューラルネットワーク(RNN)などのモデルにおいて有効である。グループ正規化は、バッチ正規化やレイヤー正規化(Layer Normalization)、インスタンス正規化(Instance Normalization)と並ぶ正規化手法の一つとして位置づけられ、各手法の特性に応じて使い分けられる。

この説明の構造は「バッチ正規化の弱点→グループ正規化の解決策→有効な場面→手法ファミリーの中での位置づけ」です。何を正規化の単位(統計量を計算する範囲)にするかが手法ごとの違いのすべてであり、グループ正規化は「1サンプル内のチャネルのグループ」を単位に選んだ、と理解すれば全体がつながります。

🔍 しっかり理解する

バッチ正規化の弱点はどこにあるか

バッチ正規化は、ミニバッチ内の全サンプルを集めて「この層の出力の平均と分散」を計算し、それを使って正規化します。つまり統計量の品質はバッチ内のサンプル数に依存します。バッチサイズが32や64あれば統計量は安定しますが、2や4しかないと、たまたま入ったサンプルに引きずられた偏った平均・分散になってしまい、正規化がかえって学習を乱すことがあります。

小さいバッチを使わざるを得ない場面は実務で珍しくありません。高解像度画像や3Dデータ、物体検出やセグメンテーションのような大きなモデルでは、GPUメモリの制約から1バッチに数枚しか載せられないことがあるのです。

グループ正規化の発想——バッチの外に頼らない

グループ正規化は、統計量の計算範囲を「ミニバッチ全体」から「1つのサンプルの内部」に切り替えます。具体的には、あるサンプルの特徴マップのチャネル(たとえば64チャネル)をいくつかのグループ(たとえば8グループ×8チャネル)に分割し、各グループの中で平均・分散を計算して正規化します。

🅰 バッチ正規化
  • ミニバッチ内の全サンプルで統計量を計算
  • バッチサイズが大きければ強力
  • 小バッチ・分布の偏りで効果が低減
  • バッチサイズに依存する
🅱 グループ正規化
  • 1サンプル内のチャネルグループで統計量を計算
  • 他のサンプルを一切参照しない
  • バッチサイズに依存せず安定
  • 小バッチの学習やRNN系でも有効

他のサンプルを参照しないため、バッチサイズが1でも同じように動作します。これが「バッチサイズに依存せず、安定した学習が可能」という最大の利点の理由です。

正規化ファミリーの中での位置づけ

公式テキストにある通り、グループ正規化はバッチ正規化・レイヤー正規化・インスタンス正規化と並ぶ手法群の一員です。違いは「1サンプル内のどの範囲をまとめて正規化するか」にあります。レイヤー正規化は全チャネルを1つにまとめて正規化し、インスタンス正規化はチャネル1つずつ個別に正規化します。グループ正規化はその中間で、チャネルをいくつかのグループに束ねて正規化します。グループ数を1にすればレイヤー正規化に、グループ数をチャネル数と同じにすればインスタンス正規化に一致する、中間的・一般形的な手法と見ることができます。試験対策としては「グループ正規化=両者の中間」というイメージを持っておくと、4手法の関係が整理しやすくなります。

💡 具体例で考える

物体検出モデルの学習を考えてみましょう。高解像度の画像を扱う物体検出では、GPUメモリの都合で1GPUあたりバッチサイズ2程度しか確保できないことがあります。バッチ正規化ではサンプル2個分の統計量しか得られず、正規化が不安定になって精度が落ちがちです。ここでグループ正規化に置き換えると、統計量は各サンプル内部で完結するため、小バッチでも学習が安定します。グループ正規化はまさにこうした「大きなモデル×小さなバッチ」という実務的な制約から生まれた手法です。

もう1つの適用場面がRNNなどの系列モデルです。系列の長さがサンプルごとに異なるRNNでは、バッチ単位の統計量の扱いが難しく、バッチ正規化が適用しにくいことが知られています。バッチに頼らないグループ正規化やレイヤー正規化なら、この問題を回避できます。

⚠️ よくある誤解・紛らわしい用語

💡 ポイント
  • 「グループ」の意味を取り違えない — サンプル(データ)をグループ分けするのではなく、1サンプル内のチャネルをグループ分けします。「何を分割するか」を問う選択肢に注意してください。
  • バッチ正規化との違い — 統計量の計算範囲が「バッチ内の全サンプル」か「1サンプル内のチャネルグループ」かが本質的な違いです。効果の違い(バッチサイズ依存の有無)とセットで覚えましょう。
  • レイヤー正規化・インスタンス正規化との混同 — いずれも1サンプル内で完結する仲間ですが、まとめる範囲が「全チャネル(レイヤー)/グループ(グループ)/1チャネル(インスタンス)」と異なります。
  • 「グループ正規化が常に最良」ではない — バッチサイズが十分大きい場面ではバッチ正規化も強力です。公式テキストの通り「各手法の特性に応じて使い分けられる」が正しい理解です。

📝 試験でのポイント

💡 ポイント
  • 「各サンプル内のチャネルを複数のグループに分割し、グループごとに正規化」という定義文の正誤判定が基本形です。
  • 最大の特徴「バッチサイズに依存せず安定した学習が可能」は、バッチ正規化の弱点(小バッチ・分布の偏りで効果低減)と対にして出題されやすいポイントです。
  • 「バッチサイズが小さい場合」「RNNなどバッチ正規化が適用しにくいモデル」という有効場面を選ばせる応用問題を想定しましょう。
  • 4つの正規化手法の名前を並べ、それぞれの正規化単位を対応させる問題に備えて、違いを一言で言えるようにしておくと安心です。

📚 まとめ

グループ正規化は、1サンプル内のチャネルを複数グループに分割し、グループ単位で正規化する手法です。ミニバッチの統計量に頼らないため、バッチサイズに依存せず安定した学習ができ、小バッチでの学習やバッチ正規化が適用しにくいRNNなどで威力を発揮します。バッチ・レイヤー・インスタンス正規化と並ぶファミリーの一員であり、「何を単位に正規化するか」という軸で比較して覚えるのが攻略の近道です。