バッチ正規化
visual-learning POC — ミニバッチの分布を毎回そろえて、深い層の学習を安定させる
① 層に入ってくる事前活性 z(このミニバッチの分布)を作る
+2.5
2.2
0.40
② 学習可能パラメータ γ(スケール)・β(シフト)── 正規化後にもう一度引き伸ばす/動かす
1.00
+0.0
正規化前 平均 / 分散
—
正規化後 x̂ 平均 / 分散
—
y=γx̂+β 平均 / 分散
—
入力分布(正規化前):層ごとにバラバラ
正規化 → γ・β 適用後の分布
③ 収束速度の比較:同じネットを「BN あり / なし」で学習したときの損失曲線(決定論シミュレーション)
層の深さ:
学習率:
BN あり
BN なし
深いネットワークでは、ある層の出力分布が学習中に絶えずズレていきます(内部共変量シフト)。次の層は「足元の地面が毎回動く」状態で学ばねばならず、収束が遅く、深いほど不安定になります。
バッチ正規化は、ミニバッチごとに事前活性を 平均0・分散1 に揃え直してから次の層へ渡します。これで地面が固定され、大きな学習率でも安定して学べます。
ただし常に平均0・分散1だと表現力が落ちるため、学習可能な γ(スケール)と β(シフト)で「どのくらい広げ・ずらすか」をネット自身に決めさせます。
バッチ正規化は、ミニバッチごとに事前活性を 平均0・分散1 に揃え直してから次の層へ渡します。これで地面が固定され、大きな学習率でも安定して学べます。
ただし常に平均0・分散1だと表現力が落ちるため、学習可能な γ(スケール)と β(シフト)で「どのくらい広げ・ずらすか」をネット自身に決めさせます。
いま何が起きている?
ここがポイント
- x̂ =(x−μB)/√(σB²+ε) ── ミニバッチの統計で平均0・分散1に揃える。z変換と同じ式だが「層を流れるたび毎回」適用するのが核心。
- y = γx̂ + β ── 揃えた後に学習可能な γ・β で広げ・ずらす。
γ=σ, β=μなら元に戻せる(恒等変換)ので表現力は失わない。 - 収束が速く安定 ── 各層の入力分布が固定されるので、深い・大きな学習率でも損失が早く下がる(右下の比較)。
- 推論時はバッチ統計の代わりに学習中に蓄えた移動平均を使い、1サンプルでも決定論的に動く。