Path: blob/master/site/ja/addons/tutorials/layers_normalizations.ipynb
25118 views
Copyright 2020 The TensorFlow Authors.
概要
このノートブックでは、TensorFlow の正規化レイヤーについて簡単に説明します。現在、サポートされているレイヤーは次の通りです。
グループ正規化 (TensorFlow Addons)
インスタンス正規化 (TensorFlow Addons)
レイヤー正規化 (TensorFlow Core)
これらのレイヤーの基本的な考え方は、活性化レイヤーの出力を正規化してトレーニング中の収束性を向上させることです。バッチ正規化とは対照的に、これらの正規化はバッチではなく、その代わりに単一サンプルのアクティブ化を正規化するので、再帰性ニューラルネットワークにも適しています。
通常、正規化は入力テンソル内のサブグループの平均と標準偏差を計算することによって実行されます。これにスケールとオフセット係数を適用することも可能です。
: 出力
: 入力
: スケール係数
: 平均
: 標準偏差
: オフセット係数
次の画像は、これらの手法の違いを説明しています。各サブプロットは入力テンソルを示し、N をバッチ軸、C をチャンネル軸、(H、W) を空間軸(例えば画像の高さと幅)としています。青色のピクセルは、同じ平均と分散で正規化され、それらのピクセルの値を集約することによって計算されています。
出典: (https://arxiv.org/pdf/1803.08494.pdf)
重み、ガンマ、ベータはすべての正規化レイヤーでトレーニング可能なため、表現力が失われる可能性を補います。これらの要素を有効化するには、center
またはscale
フラグをTrue
に設定します。もちろん、initializers
、constraints
、regularizer
をbeta
とgamma
に使用して、トレーニングプロセス中にこれらの値を調整することができます。
セットアップ
Tensorflow 2.0 と Tensorflow Addons をインストールする
データセットを準備する
グループ正規化のチュートリアル
説明
グループ正規化は、入力チャンネルをより小さなサブグループに分割し、その平均と分散に基づいてこれらの値を正規化します。グループ正規化は単一の例を正規化するので、この手法はバッチサイズに依存しません。
グループ正規化は、実験では、画像分類タスクでバッチ正規化に近い結果を出しました。全体的なバッチサイズが小さく、バッチ正規化のパフォーマンスが悪くなるような場合には、バッチ正規化の代わりにグループ正規化を使用すると効果がある可能性があります。
###例: 標準の "channels last" 設定で Conv2D レイヤーの後の 10 個のチャンネルを 5 つのサブグループに分割します。
インスタンス正規化のチュートリアル
前書き
インスタンス正規化は、グループサイズがチャンネルサイズ(または軸サイズ)と同じサイズである、グループ正規化の特殊なケースです。
実験の結果、バッチ正規化の代わりにインスタンス正規化を用いると、スタイル転送が良好に行われることが示されました。最近ではバッチ正規化の代替として、GAN でもインスタンス正規化が使用されるようになりました。
例
Conv2D レイヤーの後に InstanceNormalization を適用して、一様に初期化されたスケールとオフセット係数を使用します。
レイヤー正規化のチュートリアル
前書き
レイヤー正規化は、グループサイズが 1 であるグループ正規化の特殊なケースです。単一サンプルのすべての活性化から平均と標準偏差を計算します。
実験の結果、レイヤーの正規化はバッチサイズに依存しないため、再帰型ニューラルネットワークに適していることが分かりました。
例
Conv2D レイヤーの後に Layernormalization を適用して、スケールとオフセット係数を使用します。