ココアのお勉強ブログ

技術職の一般人です。趣味でコード書いたりソフト触ったり。

Normalization Layers

Normalization Layersについて調べてた時以下の記事が非常に分かりやすかったので日本語で要約しました。
www.quora.com

Normalization Layers

h がCNNの特徴マップとします。
hには(batch, channel, width, height)の4つの次元があるため、hは4次元テンソルとして表すことができます。
以下の例では、h_{ncij}は、それぞれサイズ6×6で4個の特徴マップを持ち、4サンプルで1バッチだとします。
f:id:hotcocoastudy:20191012104225p:plain

normalization layerはデータから平均μと分散σ^ 2を計算し、次のように特徴マップを正規化します。
f:id:hotcocoastudy:20191012104702p:plain
ここで、

  • γはスケーリングパラメータ
  • βはシフトパラメーター
  • ϵは数値の不安定性(ゼロ除算の問題) を回避するためのもの

基本的に normalization layer でこの一般的な定式は同じですが、それらの間の違いはμσ^ 2の計算方法です。

以下で主な normalization layer を要約し、それらがどのように機能するか説明します。

Batch Normalization

Batch Normalizationは、各チャンネルに対してμσ^ 2を計算します。
例えば次の図のように、各色付きグループは、1つのスカラーμと1つのスカラーσ^ 2になります。
μ∈R^ C, σ^ 2∈R^ C f:id:hotcocoastudy:20191012105526p:plain

Layer Normalization

Layer Normalizationは各サンプルに対してμσ^ 2を計算します。
μ∈R^ N, σ^ 2∈R^ N f:id:hotcocoastudy:20191012111304p:plain

Instance Normalization

Instance Normalizationは各サンプルと各チャンネルに対してμσ^ 2を個別で計算します。
μ∈R^ {N×C}, σ^ 2∈R^ {N×C} f:id:hotcocoastudy:20191012111319p:plain

Group Normalization

Group Normalizationは各サンプルおよび各グループに対してμσ^ 2を個別で計算します。 以下はgroup=2の例です。
μ∈R^ {N×\frac{C}g}, σ^ 2∈R^ {N×\frac{C}g} f:id:hotcocoastudy:20191012111757p:plain

おまけ

Instance NormalizationやGroup NormalizationというNormalizationについて調べると必ずと言っていいほど出てくるこの図。 f:id:hotcocoastudy:20191012112457p:plain 凄い、分かりやすいですね^^
みたいに言っている記事が多いのですが初見の私が見たらマジで意味不明でした...

(補足)そもそもなぜNormalizationは必要?

引用記事