ニューラルネットワーク正則化のBN/LN/GNの原理

1. BN層の原理

torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True,device=None,dtype=None)

  • BN を使用する理由?
    トレーニングを加速します。前回のトレーニングが遅かったのは、トレーニング プロセス中に全体の分布が非線形関数の値の範囲の上限と下限に徐々に近づき (シグモイド関数、大きな正または負の値を参照)、チェーンの導出によって次のような結果が得られたためです。下層のニューラルネットワークの勾配が消えます。BN は、ますます偏った分布を強制的に (標準の) 正規分布に戻すことで、非線形関数が入力に対してより敏感な領域に活性化値が収まるようになり、入力の小さな変化が大きな変化を引き起こすようになります。損失関数を変更し、勾配が大きくなることで勾配消失の問題を回避します。

  • なぜ BN の分布に学習可能なパラメータγ \gammaを乗算する必要があるのかcb \betaβ ?
    標準正規分布に強制的に正規化すると、この層で以前に学習した分布の情報も失われます。これら 2 つの再構成パラメーターは、私たちのネットワークが元のネットワークによって学習される特徴分布を復元する方法を学習できるようにするために導入されます

  • 形式(トーチ) :
    y = x − E [ x ] V ar [ x ] + ϵ × γ + β y = \frac{xE[x]}{\sqrt{Var[x]+\epsilon}}\times\ガンマ + \ベータy=r [ x ] _+ϵ バツそして[ × ]×c+b
    ここに画像の説明を挿入

  • バックプロパゲーション
    [外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-k6uCO3wH-1689670017182)(:/b9265fb96a1348ee97121a7aba9a92be)]

  • 平均と分散はミニバッチの各次元で個別に計算されます。

  • リCCなのでBN はC次元で( N 、 H 、 W ) (N、H、W)( N H W )スライス、つまり(N, H, W) の平均と分散を計算する

  • γ \ガンマcb \betaβは学習可能なあり、そのサイズは入力サイズと同じです。デフォルトγ \gammaγ は1、β \betaβは0に設定されます。

  • 標準偏差は推定値であり、1 m \frac{1}{m}torch.var(input, unbiased=False)と同じです。メートル1

  • トレーニング中に平均と分散を計算する推定器を実行し、検証中に正規化します。

  • 推論フェーズ:

    • γ \ガンマcb \betaβ はトレーニング済みの を直接使用します。
    • 平均と分散の不偏推定を使用します。つまり、トレーニング中の各バッチの各次元の平均と分散をカウントし、トレーニング セットの期待値を計算します:
      E [ x ] ← EB [ μ B ] E[x] \leftarrow E_\mathcal{B}[\mu_\mathcal{B}]E [ × ]EB[ mB]
      V ar [ x ] ← mm − 1 EB [ σ B 2 ] Var[x] \leftarrow \frac{m}{m-1}E_\mathcal{B}[\sigma_\mathcal{B}^2]r [ x ] _メートル1メートルEB[ pB2]
      最後に (平均と分散を置き換えるだけです。導出は小さなステップです):
      y = γ V ar [ x ] + ϵ x + ( β − γ E [ x ] V ar [ x ] + ϵ ) y = \frac { \gamma}{\sqrt{Var[x]+\epsilon}}x+(\beta-\frac{\gamma E[x]}{\sqrt{Var[x]+\epsilon}})y=r [ x ] _+ϵ cバツ+( br [ x ] _+ϵ γ E [ x ])
  • BN の利点の概要:

      1. トレーニング速度を大幅に向上させ、収束を高速化します。
      1. ネットワークの汎化能力を向上させるため、過学習を防ぐためにドロップアウトと同様の正規表現手法を説明しており、ドロップアウトは破棄できる
      1. パラメータの調整が容易で、初期化の要件もそれほど高くなく、学習率を高めることができます。
      1. サンプルトレーニングの順序を混乱させる可能性があり、精度を向上させることができます
      1. BN は本質的に、ローカル応答正規化層 (LRN) 層を置き換えることができる正規化されたネットワーク層です。
  • BN 層が通常、非線形ユニットの後ではなく、線形層と畳み込み層の後に使用されるのはなぜですか?
    非線形ユニットの出力分布の形状はトレーニング プロセス中に変化するため、正規化ではその分散オフセットを取り除くことはできません。それどころか、完全に接続された畳み込み層の出力は、一般に対称で非スパースな分布となり、より類似しています。ガウス分布に正規化すると、より安定した分布が生成されます実際、考えてみてください。relu のような活性化関数の場合、入力したデータがガウス分布である場合、彼によって変換されたデータはどのような形状になるでしょうか? 0 未満のものは抑制されます。つまり、分布の 0 未満の部分が直接 0 になり、これはあまり高くありません。

  • 欠点:
    十分に大きなバッチ サイズが必要ですが、バッチ サイズが小さいとバッチ統計の不正確さが増加し、モデルのエラー率が大幅に増加します。つまり、BN はバッチ (検出タスクやセグメンテーション タスクなど) に大きく影響されます。

2. LayerNorm 原則 (LN)

torch.nn.LayerNorm(normalized_shape, eps=1e-05, elementwise_affine=True, device=None, dtype=None)

  • 公式:
    ここに画像の説明を挿入

  • 平均と分散の計算は BN と似ていますが、次元はnormalized_shape、たとえば(3,5)最後の 2 次元の によって決定されます。
    ここに画像の説明を挿入

  • C、H、Wで正規化された画像の例
    ここに画像の説明を挿入

CV では、( C 、 H 、 W ) (C、H、W)に沿って( C H W )正規化用。

3. インスタンス正規化 (IN) とグループ正規化 (GN)

  • IN: 沿着 ( H , W ) (H, W) ( H W )軸の計算、各サンプルは個別に計算され、各チャネルは個別に計算されます。
  • GN: チャネル グループを計算します。C/Gは、( X / G 、 H 、 W ) (X/G、H、W) に沿った各グループ内のチャネルの数です。( X / G H W )を計算します
    • G=1の場合はLNとなります。GN は、(すべてのチャネルではなく) チャネルの各グループが共有された平均と分散の影響を受けると想定されているため、LN より制限が緩いですが、モデルにはグループごとに異なる分布を学習する柔軟性がまだありますこれは、LN と比較して GN の代表電力の増加につながります。
    • G=C の場合、GN になりますが、IN は空間次元にのみ依存して平均と分散を計算することができ、チャネル依存性を利用する機会を逃します。

4. まとめ

  • BN: バッチ方向に正規化し、N ∗ H ∗ WN*H*Wを計算します。NHWの平均
  • LN: チャネル方向に正規化し、C ∗ H ∗ WC*H*Wを計算します。CHWの平均
  • IN: チャンネル内で正規化し、H ∗ WH*Wを計算しますHWの平均
  • GN: まずチャネル方向をグループに分割し、各グループで正規化を実行し、( C / / G ) ∗ H ∗ W (C//G)*H*W を計算します。( C // G )HWの平均

おすすめ

転載: blog.csdn.net/mathlxj/article/details/131791177