バッチ正規化は、トレーニング後に人口統計をどのように計算しますか?


7

私はバッチ正規化(BN)ペーパー(1)を読んでい、それは言った:

このため、ネットワークがトレーニングされたら、正規化を使用します

x^=xE[x]Var[x]+ϵ
ミニバッチではなく、人口統計を使用します。

私の質問は、どのようにしてこの人口統計をどのように計算し、どのトレーニングセット(テスト、検証、トレーニング)を超えているかです。私はそれが何を意味するのかは知っていたと思いましたが、しばらくして、これがどのように計算されるのかわかりません。私はそれがどのように行うかはわかりませんが、それは真の平均と分散を推定しようとしていると思います。おそらく、データセット全体に従って平均と分散を計算し、それらの瞬間を推論に使用します。

しかし、私が間違っているのではないかと疑ったのは、同じセクションの後半の不偏分散の推定についての彼らの議論です。

不偏分散推定を使用します Var[x]=mm1EB[σB2] サイズのミニバッチのトレーニングに期待が集まっている場所 m そして σB2 それらは標本分散です。

私たちは人口統計について話しているので、この紙面上のコメントは、どこからともなく(私にとって)出てきたようなものであり、彼らが何について話しているのかわかりませんでした。彼らは(ランダムに)トレーニング中に不偏推定値を使用することを明確にしていますか、それとも不偏推定値を使用して人口統計を計算していますか?


1:Ioffe S.とSzegedy C.(2015)、
「バッチ正規化:内部共変量シフトの削減によるディープネットワークトレーニングの加速」、
第32回機械学習に関する国際会議の議事録、リール、フランス、2015。Journalof
Machine Learning Research: W&CPボリューム37

回答:


6

通常、人口統計はトレーニングセットから取得されます。テストセットを含めると、テスト時に、技術的にはアクセスできないはずの情報(データセット全体に関する情報)が得られます。同じ理由で、これらの統計の計算に検証セットを使用しないでください。

バッチ正規化は入力レイヤーだけではないため、人口の統計はエポックごとに異なります。これは、ネットワークがパラメーター(および各レイヤーでの出力)を学習して変更するためです。

したがって、これらの統計を計算する一般的な方法は、トレーニング中に(指数関数的に減衰または移動する)平均を維持することです。これにより、ミニバッチトレーニングによる確率的変動が滑らかになり、学習の現在の状態が最新になります。この例は、バッチノルムのトーチコードで確認できます。https//github.com/torch/nn/blob/master/lib/THNN/generic/BatchNormalization.c#L22

この論文では、最後に計算された統計を保持するだけでなく、移動平均を使用していると述べています。

代わりに移動平均を使用して、トレーニング中にモデルの精度を追跡できます。

2番目の質問については、彼らはその偏りのない推定を使用して、母集団の分散を(将来の推論のために)推定すると言っています。


0

バッチサイズが1でない場合でも推論します。バッチ標準もトレーニングセット全体に基づいています(推論を安定させます)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.