正規化の知識ポイントの概要

はじめに: データの標準化とは、データの分布を平均値 0、分散 1 の標準正規分布 (ガウス分布) に従うようにすることです。これはディープ ニューラル ネットワークで一般的に使用される手法であり、アクティベーション関数の前によく使用されます。これを使用すると、モデル トレーニングの収束速度が向上し、モデル トレーニング プロセスがより安定し、勾配の消失と勾配の爆発が軽減され、過学習が軽減されます。一般的な正規化操作には、バッチ正規化 (BN)、レイヤー正規化 (LN)、インスタンス正規化 (IN)、およびグループ正規化 (GN) の 4 つがあります。これら 4 つの標準化された操作の類似点と相違点、および BN の利点については、以下で詳しく説明します。

目次

1.BNの原理

2. BN、LN、IN、GN の類似点と相違点

3. BNの役割

3.1 ネットワーク統合の速度を加速する

3.2 勾配爆発の防止と勾配消失の軽減

3.2.1 勾配消失の緩和

3.2.2 勾配爆発の防止

3.3 過学習の防止

1.BNの原理

        BN はバッチ正規化またはバッチ正規化と呼ばれ、BN の使用はニューラル ネットワークの学習に非常に有益です。BN のアルゴリズム フローは次のとおりです。

         アルゴリズム プロセスの最後のステップはアフィン変換と呼ばれ、モデルの能力を強化し、モデルをより柔軟にすることができます。BN アルゴリズムが標準化ステップの最後に達すると、ネットワーク表現能力の低下につながります。これは、標準化後、ほとんどのデータが強制的にこの間隔に変換され、一部のデータはより適切に標準化する必要がないためです(\mu -\sigma ,\mu +\sigma )。特定のデータ特徴を表します。正規化後、ネットワークはデータの特徴のこの部分を学習できなくなります。アフィン変換の操作は、ネットワーク表現能力の低下の問題を非常にうまく解決できます。なぜなら\ガンマ =\シグマ _{\ss }\beta =\mu _{\ss }アフィン変換は標準化の逆操作に相当し、強制的に標準化されたデータの不要な部分を元のデータに復元できるからです。x_{i}実際、ネットワークは自ら学習することができ\ガンマ\ベータこれら 2 つのパラメータを標準化する必要があるかどうかはネットワークの決定に委ねられます。このとき、復元されたデータはx_{i}重みパラメータの影響を受けない\オメガため、表現力が大幅に向上します。ネットワークは深層学習のプロセスで BN を輝かせます。

        しかし、テスト中に\mu合計が得られない場合\ベータ、この問題をどのように解決すればよいでしょうか? 実際、テストの合計は、トレーニング インスタンスで取得された\シグマ_{\ss }すべての合計\mu _{\ss }の加重平均の統計値に置き換えられることがよくあります\mu\ベータこれらの問題の解決策は、さまざまな深層学習フレームワークにカプセル化されており、直接呼び出すことができます。この問題についてはその時点で考える必要はありませんが、理論的には原理を知る必要があります。つまり、モデルのトレーニング フェーズとテスト フェーズでは BN の状況が異なります。コードを記述するときは、この部分に特に注意してください。Dropout と同様に、トレーニング フェーズのコードの前に train() 関数を使用して、それを示す必要があります。モデルはトレーニング フェーズに入ります。BN アルゴリズムの通常の使用に加えて、トレーニング例で得られた\シグマ_{\ss }すべての\mu _{\ss }。このとき、BN アルゴリズムの合計はトレーニングによって決定される \muステージ\ベータ 内のすべてのトレーニング インスタンスの平均と分散の統計値に置き換えられます。

        そういえば、どうやって合計を\シグマ_{\ss }求めるのかという疑問もあるかもしれませんが、以下では、Pytorch で提供されている 3 つのバッチ正規化関数 nn.BatchNorm1d、nn.BatchNorm2d、nn.BatchNorm3d について説明します。\mu _{\ss }

①nn.BatchNorm1d -> input = バッチサイズ * 特徴量 * 1d 特徴量 (バッチサイズはサンプル数)

②nn.BatchNorm2d -> input = バッチサイズ * 特徴量 * 2d 特徴量 (このとき、特徴量の数はチャネル数として理解でき、1 チャネルが 1 つの特徴量に相当します)

③nn.BatchNorm3d -> 入力 = バッチサイズ * 特徴量 * 3D 特徴

2. BN、LN、IN、GN の類似点と相違点

これら 4 つの標準化された演算は、アルゴリズム フローでは似ていますが、BN で特に前述したように、合計を取得する方法が異なるという点が異なります。他の 3 つは以下で説明し        ます \シグマ_{\ss }\mu _{\ss }

①レイヤーの正規化

        BNはRNNのような可変長ネットワークには適していないため、層ごとに平均と分散を計算するというアイデアが提案されています。LN の同じ層内のニューロンの入力は同じ平均と分散を持ち、異なる入力サンプルは異なる平均と分散を持ちます。

②インスタンスの正規化

         BN は画像生成には適用できないため、インスタンス (チャネル) ごとに平均と分散を計算することが提案されています。たとえば、画像スタイルの移行では、サンプルごとにスタイルが異なるため、BN のように複数のサンプルから平均や分散を計算することはできません。 

③グループの正規化

        小さなバッチサンプルでは、​​BN によって推定された値は不正確です。GN などの正規化の考え方は、データが十分ではないため、チャネルを使用してデータを補うというものです。大規模なモデル (小規模なサンプル) にも使用されます。バッチサイズ) タスク。GN は LN に少し似ていますが、LN をグループ化したものと同等です。

        要約: BN、LN、IN、GN はすべて、内部共変量シフト (内部共変量シフト (ICS)) を克服するために提案されており、計算式は似ていますが、平均と分散の計算に使用される方法が異なります。

3. BNの役割

3.1 ネットワーク統合の速度を加速する

       学習中にネットワークの収束速度がどんどん遅くなる理由は、非線形変換前のディープ ニューラル ネットワークの値 (ネットワークの中間層 (つまり隠れ層) の各ニューロンの値) が時間とともに増加するためです。ネットワークの深さ、またはトレーニング プロセス中に、その分布は非線形関数の値の範囲の上限と下限に向かって徐々にシフトまたは変化します。ほとんどの非線形関数 (シグモイド関数など) では、両端の勾配はが小さく、0 付近の勾配が大きい)、両端の勾配が小さいため、更新の前後でネットワーク パラメーターがほとんど変化せず、ネットワークの収束速度がますます遅くなります。

        BN 層の導入後、ネットワークの中間層のニューロン値の分布を、平均 0、分散 1 の標準正規分布に強制的に戻すことができます。実際、これはますます偏った分布を強制することになります。非線形変換前の値が非線形関数の勾配が大きい領域 (つまり 0 に近い領域) に収まるように、分布をより標準的な分布に戻します。そのため、この値の小さな変化でも大きな変化が生じます。損失関数が変化すると、損失が逆転します。 伝播の際、パラメータは更新の前後で大きく変化します。つまり、パラメータが更新されるたびに損失が大幅に減少し、ネットワークの収束速度が向上します。

3.2 勾配の爆発を緩和し、勾配の消失を防止する

        シグモイド関数を例にとると、シグモイド関数は[0,1]の間の出力をしますが、実際には入力がある程度の大きさになると、入力が大きく変化してもシグモイド関数後は出力値はほとんど変化しません。 、下の図に示すように。

3.2.1 グラデーションの消失を防ぐ (効果は非常に明らかです)

        ディープニューラルネットワークでは勾配消失現象が起こりやすい。ネットワークの活性化出力 (入力である非線形層に対して) が非常に大きい場合、対応する勾配は小さくなり、ネットワークの学習速度が遅くなります。ネットワークが最大値 0.25 未満の場合、ネットワークには n 層があり、連鎖導出のため、最初の層の勾配は 0.25 の n 乗未満になるため、学習速度は比較的遅くなります。ネットワークの最後の層のみ 単独で一度導出する必要があり、勾配が大きく、学習速度が速くなります これにより、非常に深いネットワークでは、浅い層は基本的に学習せず、重みが増加します変化は小さいですが、ネットワークの後続の層は学習を続け、ネットワークの後続の層は学習を続けます。ネットワークは基本的にネットワーク全体を表すことができ、深さの意味が失われます。BN レイヤーを使用した後、すべてのフィーチャ レイヤーのますます偏りのある分布は、より標準的な分布に強制的に戻されるため、非線形変換前の値は、非線形関数の勾配が大きい (つまり、0 に近い) 領域に収まります。 、したがって、浅いネットワークのパラメータも比較的大きな勾配を持ち、勾配が消失するのを防ぐため、浅いネットワークのパラメータも学習されます(つまり、パラメータが更新されます)。

3.2.2 勾配爆発の軽減 (効果は明ら​​かではありません)

        ディープ ニューラル ネットワークでは、パラメーターの初期化が適切である限り、勾配爆発が起こる可能性は小さいですが、それでも爆発する可能性はあります。パラメータに対する n 番目の層の損失\オメガの勾配 = 活性化層 1 の傾き x 後続の層 1 の重み x 活性化層 2 の傾き x 後続の層 2 の重み... × の値ニューロンの場合、活性化層の傾きが最大値の 0.25 である場合、ある瞬間のニューロンの値は 100 になります。ネットワークのトレーニングが進むにつれて、一部のニューロンの値はますます大きくなり、その結果、勾配が発生する可能性があります。もちろん、これが勾配爆発の主な理由ではありません。BN 層を使用すると、ニューロン値の分布は平均 0、分散 1 の正規分布、つまり各ニューロン値の範囲が (-1,1) になるように強制的にマッピングされるため、浅い層はわずかに減少する可能性があり、ネットワークの勾配は勾配爆発をわずかに緩和するため、ネットワークの学習を続行できます。

3.3 過学習の防止

        ネットワークのトレーニングでは、BN を使用すると、バッチ内のすべてのサンプルが関連付けられるため、ネットワークは特定のトレーニング サンプルから明確な結果を生成しません。つまり、同じサンプルの出力は、単一のサンプルだけに依存しなくなります。また、このサンプルと同じバッチに属する他のサンプルにも依存し、ネットワークがバッチをランダムに選択するたびに、ネットワーク全体がこの方向に学習するのを防ぎ、ある程度の過学習を回避します。

おすすめ

転載: blog.csdn.net/Mike_honor/article/details/125915321