Batch Normalization層

概要

Batch Normalization層は近年提案されるどのネットワークにも大体使用される学習を安定させ高速化させる技術. ミニバッチごとの平均と分散を計算して正規化し、スケールとシフト補正をする.
Facebookシェア Twitterツイート LINEで送る このエントリーをはてなブックマークに追加
この章を学ぶ前に必要な知識
0
効果
  • 学習を安定させる
  • 学習を早くできる
  • 正則化の役割も果たす
ポイント
  • 内部共変量シフトを解消し、ネットワークの無駄な学習労力を減らす
  • 入力されるバッチの平均と分散を調整し、スケール補正とバイアスをかける
  • αX+βによってスケール補正とバイアスをし、αとβをパラメータとして学習

解 説

BatchNormalization層は各層の間に挟み込むように挿入して使用する学習の精度と速度を向上させる層. 実際の計算としては入力されるバッチの平均と分散を計算して正規化を行い、最後にスケールとシフトで調整をする. 学習の際には、スケールとシフトを学習する. 解決した課題 層を深くして、学習時に浅い層でパラメータが更新されたときを考える. 浅い層でパラメータが更新されると同じような画像を入力しても 深い層に入力が到達した時には全く異なった値になってしまってしまう。 そのため深い層ではそれに対応することでいっぱいになり、肝心な非線形関数の学習になかなか力を入れられずに学習が遅くなってしまっていた. Batch Normalizationを使い、その振り幅抑えるようにしたことで学習が安定しやすくなり(安定しやすいため学習係数を大きく設定できる)、 学習が高速になった。
BatchNormalization層
・上記の課題にあるような内部共変量シフトを軽減する ・勾配消失が起こりにくいため, ReluでなくSigmoidでもある程度学習できる ・初期値への依存性が低くなった ・正則化の役割を持つためDropoutを使用しなくてもよい ・学習が早い ・学習係数を大きくしても発散しない
BatchNormalization特徴
BatchNormalizationのアルゴリズム(論文より引用)
BatchNormalizationの特許をリンクしておきます.
また、BatchNormalizationの元論文もリンクしておきます.
この章を学んで新たに学べる
Comments

Reasons
>>隠す