1行定義
バッチ正規化とは、ミニバッチ内のデータから特徴ごとの平均と分散を求め、層への入力を平均0・分散1にそろえて学習を安定させる手法のことです。
くわしく
バッチ正規化は、ニューラルネットワークの途中の層で、値の範囲をそろえる手法です。2015年にIoffeとSzegedyが提案しました。CNNでは、畳み込み層の直後に入れる構成が広く使われています。
しくみ
学習では、データを数十〜数百件程度ずつまとめたミニバッチ単位で計算します。バッチ正規化は、このミニバッチの中で、特徴(CNNではチャネル)ごとに平均と分散を求めます。そして各値から平均を引き、標準偏差で割って、平均0・分散1にそろえます。
ただし、そろえたままでは層が表せる値の範囲が狭くなります。そこで、学習で決まる2つのパラメータ(スケールγとシフトβ)で拡大と平行移動を加えてから、次の層へ渡します。
効果
- 大きめの学習率でも発散しにくくなり、学習が速く進みます。
- 重みの初期値の影響を受けにくくなります。
- ミニバッチごとに統計量がぶれるため、弱い正則化の効果もあります。提案論文では、ドロップアウトが不要になる場合もあったと報告されています。
提案論文は、学習中に各層への入力の分布が変わる「内部共変量シフト」を減らすことが効く理由だと説明しました。その後、誤差関数の形をなめらかにして最適化を進めやすくすることが主な理由だとする研究も出ています。効く理由の説明は、今も1つに定まっていません。
推論時の扱い
推論では、1件ずつ予測することもあります。そのため、学習中に移動平均などで記録しておいた平均と分散を使って正規化します。学習時と推論時で、使う統計量が異なる点に注意します。
弱点
ミニバッチが小さいと、平均と分散の推定がぶれて、学習が不安定になります。また、系列の長さが変わるRNNには使いにくい面があります。こうした場面では、サンプルごとに統計量を計算するレイヤー正規化やグループ正規化が使われます。
G検定での出題
出題のされ方
ミニバッチ単位で平均と分散を計算する点、学習を速く安定させる効果、推論時は学習中に記録した統計量を使う点、ミニバッチが小さいと不安定になる弱点が問われます。
混同しやすい用語
| 用語 | 意味 |
|---|---|
| バッチ正規化このページの用語 | ミニバッチ内のデータから特徴ごとの平均と分散を求め、層への入力を平均0・分散1にそろえて学習を安定させる手法 |
| レイヤー正規化 | 1つのサンプルの中で、その層のすべてのユニットの値をまとめて平均0・分散1にそろえる正規化の手法 |
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
バッチ正規化は、平均0・分散1にそろえた値に、学習で決まる2つのパラメータによる拡大と平行移動を加えてから出力する。
答えを見る
答え ◯ 正しい
スケールγとシフトβと呼ばれます。正規化で表現できる範囲が狭まらないよう、必要なら元の分布に戻せるようにしています。
-
バッチ正規化を使ったモデルは、推論時にも入力されたデータから毎回平均と分散を計算し直して正規化する。
答えを見る
答え × 誤り
推論時は、学習中に移動平均などで記録しておいた平均と分散を使います。こうすると、1件ずつ予測しても結果が安定します。
-
バッチ正規化を入れると、大きめの学習率を使っても学習が発散しにくくなる。
答えを見る
答え ◯ 正しい
各層への入力の大きさがそろうためです。提案論文でも、より大きな学習率を使えることが利点に挙げられています。
この用語の練習問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目19 正規化層)
- Sergey Ioffe, Christian Szegedy, Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift (2015)
- Shibani Santurkar, Dimitris Tsipras, Andrew Ilyas, Aleksander Madry, How Does Batch Normalization Help Optimization? (2018)
- Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning, MIT Press (2016) (8.7.1 Batch Normalization)