3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Batch Normalizationについてのメモ

Last updated at Posted at 2019-06-11

概要

Batch Normalizationとは,2015年にGoogleの社員2人が提案したパラメータの最適化手法の1つである.

問題

ニューラルネットワークを用いて学習をする際,データに何かしらの前処理を施すことが一般的である.これは,以下の理由などで行うことが多い:

  • sigmoid関数などで引き起こされる,早い段階での勾配消失を無くす
  • 全てのデータが一定の範囲内に収まるようにする
  • etc.

しかし,問題は前処理だけで解決されない.
入力データの分布と推定データの分布が異なる現象をCovariate Shiftという.
例えば,学習データとして黒猫のみを用いると,黒い猫を判定できるモデルが生成される.そこに,三毛猫を判定させようとすると,うまくいかない,という原理である.

そして,同じような現象が,層が深いネットワーク内でも発生する.これをInternal Covariate Shift という.これは,層の入力データの分布と出力データの分布が違うことで発生する.各層は,データの分布に適応しようと学習を行う.しかし,層が深くなるにつれ,データの分布は初期状態から違うものになってしまう.これは,イテレーションが増す毎に酷くなる.

そこで,全てのレイヤーにおいて,データがほぼ同じ分布になるように強制的に変えてしまう,というのがBatch Normalizationである.

解決手法

上記のInternal covariate shiftを無くすための手法としてBatch Normalizationが提案された.
学習中,以下の手法によって,正規化を行う:

  1. レイヤーの入力値の平均と分散を計算
  2. 1の値を用いてレイヤーの入力値の正規化を行う
  3. レイヤーの出力値を得るために,シフトを行う

既存の層に対して,2つのパラメタのみ追加することでBatch Normalizationは実装ができる.

利点

  • 学習が早く進む
  • learning rateを比較的大きく設定ができる
    • Batch Normalizationによって,活性化されても大きすぎたり,小さすぎる出力が得られないようになる
  • 過学習を防ぐ
    • Dropoutと似ており,隠れ層にノイズを含めることができる
  • Dropout回数を減らすことができる

考察

BNはネットワーク内部の活性化の正規化をすることによって,結果に大きな違いを生み出すことができるようになった.

参照

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?