blog

干货|これはおそらくネット上で最も優れたBatchNormである。

内部共変量シフト\nBatchの元論文の著者は、より標準化されたInternal Covariate Shiftの定義を与えています:ディープネットワークのトレーニング中に、ネットワークが本来あるべき...

Jul 10, 2020 · 14 min. read
シェア

Internal Covariate Shift

バッチ正規化に関する元の論文の著者は、より標準的な内部共変量シフトの定義を与えています:ディープネットワークのトレーニング中、ネットワークのパラメータ変更によって内部ノードのデータ分布が変化するプロセスを内部共変量シフトと呼びます。

Zi=Wi×inputi+biZi=Wi×inputi+biZi=Wi×inputi+biinputi+1inputi+1=giとなります。

  • 最初の方程式は単純な線形変換です;
  • つ目の式は、活性化関数を表す処理です。

ICS問題の捉え方勾配降下が進むにつれて、各層のパラメータWi,bibiWi,biは常に更新され、それはZiZiの分布も常に変化していることを意味し、したがってinputi+inputi+1の分布も変化していることを知ってください。これは、入力データの最初の層が変化しないことに加えて、入力データの分布のすべての層の後に、モデルのパラメータの更新に伴って変化し、各層は、データの分布のこの変化に適応し続けなければならないことを意味し、このプロセスは、内部共変量シフトです。

BN問題解決

ICSによる収束の遅さ各層のパラメータが常に変化しているため、各層の計算結果の分布が変化しており、事後ネットワークはこの分布変化に常に適応しているため、ネットワーク全体の学習速度が遅くなります。

勾配飽和問題ニューラルネットワークはシグモイドやtanhのような飽和活性化関数を使用することが多いため、モデルの学習は勾配飽和領域に陥る危険性があります。このような勾配飽和の問題を解決するために、2つのアイデアがあります。1つは、線形整流関数ReLUのような、より非飽和な活性化関数を使用することで、勾配飽和領域への学習の問題をある程度解決することができます。もう1つは、活性化関数の入力分布を安定な状態に保つことで、勾配飽和領域に陥ることを可能な限り避けることです

Batch Normalization

ここで、バッチに3つのデータがあり、それぞれに2つの特徴があるとします、

単純な正規化を行う場合、平均と分散を計算し、平均からデータを引き、標準偏差で割ることで、0平均1分散という標準的な形になります。

Zi最初の特徴:μ=1mZ=31=1σ=+ +)=σ2=31 2+ 2+ 2)=0.67

σ2=13((11)2+(21)2+(01)2)=0.67一般式μ=mZμ=m1∑i=1mZμ=1mZσ2=m1∑i=1m=Z-μZ^=σ2+ϵZ-μ

  • ここで、mはバッチ数を表します。
  • ϵϵ分母がゼロにならないようにするための非常に小さな数です。

これまでのところ、各特徴の分布は平均が0、分散が1になるように行われてきました。このようにすれば、分布はすべて同じになり、ICSの問題は発生しないはずです

上述したように、正規化操作は、入力データの分布をネットワークの各層で安定させることによってICS問題を緩和する一方で、データの代表性の欠如につながります。すべての層で同じ分布、すべてのタスクで同じデータ分布の場合、モデルは何を学習するのでしょうか?

0平均1分散データの欠点

  1. データプレゼンテーションスキルの欠如;
  2. 各層の入力分布を平均0、分散1にすることで、入力がシグモイド活性化関数やタン活性化関数を通過するときに、非線形活性化関数の線形領域に落ちやすくなります。

この問題を解決するために、BN層は2つの学習可能なパラメータγγとββを導入し、BN層によって正規化されたデータが実際には平均ββ、分散γγ2に従うデータとなるようにします。

ですから、ネットワークの特定のレイヤーでは、このようなプロセスになります:

  1. Z=W×inputi+bZ=W×inputi+b
  2. =γ×Z-μ+βZ^=γ×σ2+ϵZ-μ+β
  3. inputi+1=g(Z^)inputi+1=g

テスト段階のBN

各層のBNが計算するμμとσσ 2は、現在のバッチのトレーニングデータに基づいていることは知っていますが、これは問題を提起します:予測段階では、予測する必要があるのは1つのサンプルだけ、または非常に少数のサンプルだけである可能性があり、トレーニングサンプルのように多くのデータがあるわけではないので、この方法でσσ2とμμを計算するにはどうすればよいですか?

Z^=Zμμμとσσ2を実際に保持します。では、全体の学習セットを使ってテストセットのμtestμtestσtest2を推定するのはどうでしょうμtest=Eμtest =E =mm-E σtest2=m-1mE次に、BN層をテスト機に適用します。=E=mm-Eσtest2=m-1mE次にBN層をテスト機に適用します:

もちろん、トレーニングセットのμμと˶simgaを計算する方法は、上記の平均を求める方法に追加されます。また、Enda Wu氏は、指数加重平均を使用することもできることを彼のコースで提案しています。しかし、トレーニングセット全体に基づいてテスト機の平均分散を推定するという点では同じです。

BNレイヤーの利点とは?

  1. BNは、ネットワークの各層の入力データの分布を比較的安定させ、モデルの学習速度を速めます。BNは、正規化と線形変換により、ネットワークの各層の入力データの平均と分散を一定の範囲内にすることで、ネットワークの後段の層は、基礎となるネットワークの入力の変化に常に適応する必要がなくなるため、ネットワーク内の層間のデカップリングを実現し、各層が独立して学習できるようになり、ニューラルネットワーク全体の学習速度の向上に寄与します。

  2. BNは、ネットワークが飽和活性化関数を使用することを可能にし、勾配の消失の問題を緩和します。ノーマライズ操作は、活性化関数の入力データが勾配の非飽和領域に入ることを可能にし、勾配の消失の問題を緩和します。

  3. バッチ正規化では、ミニバッチの平均と分散が全体的な学習サンプルの平均と分散の推定値として使用されるため、各バッチのデータが全体的なサンプルからサンプリングされているにもかかわらず、異なるミニバッチの平均と分散は異なることになり、ネットワークの学習プロセスにランダムなノイズが加わります。学習プロセスにはランダムなノイズが加わります

BNと他のノーマライゼーションとの比較

重みの正規化重みの正規化とはネットワークの重みを正規化することで、L2ノルムとしても知られています。

BNには次のような利点があります:

  1. WNは、ミニバッチに依存しない方法でニューラルネットワークの重みを書き換えることで、ネットワークのパラメータの収束を加速します。BNはミニバッチに依存するため、RNNネットワークには使用できませんが、WNは使用できます。また、BNは各バッチの平均分散を保存する必要があり、WNはメモリを節約できます;
  2. BNの利点には正則化の効果がありますが、強化学習やGANなどのノイズに敏感なネットワークでは、ノイズを加えることは適していません。

しかし、WNはパラメータの初期化の選択に特別な注意を払う必要があります。

レイヤーの正規化より一般的な比較は、BNとLNの比較です。BNレイヤーには2つの欠点があります:

  1. オンライン学習のミニバッチは1なので、オンライン学習はできません。
  2. BNはRNNには使えません。
  3. 平均と分散を記録するために一定量のメモリを消費します。
Read next

AirtestIDE 1.2.4と1.2.5はこちら!新しい自動アップデート、より多くのiOSバージョンをサポート...

この IDE アップデートは、airtest をバージョン 1.1.4 にアップデートし、自動更新機能を追加するものです。

Jul 9, 2020 · 3 min read