最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。
バッチ正規化層
バッチ正規化層は、ミニバッチ全体で各入力チャネルを正規化します。畳み込みニューラル ネットワークの学習速度を上げ、ネットワークの初期化に対する感度を下げるには、畳み込み層の間にあるバッチ正規化層と、ReLU 層などの非線形性を使用します。
この層はまず、ミニバッチの平均を減算し、ミニバッチの標準偏差で除算することにより、各チャネルの活性化を正規化します。さらに、学習可能なオフセット β だけ入力をシフトし、それを学習可能なスケール係数 γ だけスケーリングします。
は、バッチ正規化層を作成します。layer
= batchNormalizationLayer
は、バッチ正規化層を作成し、名前と値のペアを使用して、オプションの バッチ正規化、パラメーターと初期化、学習率および正則化、および layer
= batchNormalizationLayer('Name',Value
)Name
の各プロパティを設定します。たとえば、batchNormalizationLayer('Name','batchnorm')
は、'batchnorm'
という名前のバッチ正規化層を作成します。複数の名前と値のペアを指定できます。各プロパティ名を一重引用符で囲みます。
バッチ正規化は、まずミニバッチと各入力チャネルについて平均 μB と分散 σB2 を計算することによって、その入力 xi を正規化します。その後、正規化された活性化を以下のように計算します。
ここで、ϵ (プロパティ Epsilon
) は、ミニバッチの分散が非常に小さい場合に数値の安定性を改善します。ゼロ平均と単位分散を持つ入力がバッチ正規化層の後の層に最適ではない可能性を考慮して、バッチ正規化層はさらに以下のように活性化のシフトとスケーリングを行います。
ここで、オフセット β とスケール係数 γ (Offset
プロパティおよび Scale
プロパティ) は学習可能なパラメーターであり、ネットワークの学習中に更新されます。
ネットワークの学習が終了したら、バッチ正規化層は学習セット全体の平均と分散を計算し、これらを TrainedMean
プロパティおよび TrainedVariance
プロパティに格納します。学習済みネットワークを使用して新しいイメージについて予測を実行する場合、この層はミニバッチの平均と分散ではなく、学習済みの平均と分散を使用して活性化を正規化します。
[1] Ioffe, Sergey, and Christian Szegedy. "Batch normalization: Accelerating deep network training by reducing internal covariate shift." preprint, arXiv:1502.03167 (2015).