バッチ正規化

visual-learning POC — ミニバッチの分布を毎回そろえて、深い層の学習を安定させる

① 層に入ってくる事前活性 z(このミニバッチの分布)を作る
+2.5
2.2
0.40
② 学習可能パラメータ γ(スケール)・β(シフト)── 正規化後にもう一度引き伸ばす/動かす
1.00
+0.0
正規化前 平均 / 分散
正規化後 x̂ 平均 / 分散
y=γx̂+β 平均 / 分散
入力分布(正規化前):層ごとにバラバラ
正規化 → γ・β 適用後の分布
③ 収束速度の比較:同じネットを「BN あり / なし」で学習したときの損失曲線(決定論シミュレーション)
層の深さ:
学習率:
BN あり BN なし
深いネットワークでは、ある層の出力分布が学習中に絶えずズレていきます(内部共変量シフト)。次の層は「足元の地面が毎回動く」状態で学ばねばならず、収束が遅く、深いほど不安定になります。
バッチ正規化は、ミニバッチごとに事前活性を 平均0・分散1 に揃え直してから次の層へ渡します。これで地面が固定され、大きな学習率でも安定して学べます。
ただし常に平均0・分散1だと表現力が落ちるため、学習可能な γ(スケール)と β(シフト)で「どのくらい広げ・ずらすか」をネット自身に決めさせます。

いま何が起きている?

ここがポイント