Batch Normalization(バッチ正規化)
概要
- ニューラルネットワーク内のニューロンの出力値を正規化することで,重みやニューロンの出力の発散を防ぐ.
- 多層ニューラルネットワークでは必須.
何で必要なのか?
- ニューラルネットワークは積和の積み重ねによって出力する仕組みになっている.
- そのため正則化を行って重みの増減を防ぐ仕組みを作っても発散してしまう場合が存在するので,その問題を防ぐために必要.
アルゴリズム
- ニューロンの出力を正規化して,拡大並行移動を行う調整パラメータγ,βを学習時に調整する.(c.f. [2])
given: γ, β, m(batch size) μ: xのバッチでの平均 σ^2: xのバッチでの分散 ε: 微小な値(分散が小さい場合用の補正項.1e-8推奨) x' = (x - μ) / √(σ^2 + ε) y = γx' + β
References
[1]. Ioffe, Sergey, and Christian Szegedy. "Batch normalization: Accelerating deep network training by reducing internal covariate shift." arXiv preprint arXiv:1502.03167 (2015).
[2]. Frederik Kratzert. "Understanding the backward pass through Batch Normalization Layer", (2016).