[ビデオノート] ResNet がディープ モデルをトレーニングできる理由

学部の卒業プロジェクトを行う際、Sketchmate の CNN ブランチは Resnet50 を使用しましたが、残存ニューラル ネットワークを再度レビューします。この記事では主に、Resnet がグラデーションの消失にどのように対処するのかを整理します。なぜ深いモデルをトレーニングできるのでしょうか? グラデーションの観点からまとめてみました。

Resnet 構造に関する質問については、「ハンズオンディープラーニング」のセクション 7.6 を参照してください。

7.6. 残差ネットワーク (ResNet) — 実践的な深層学習 2.0.0 ドキュメント (d2l.ai) icon-default.png?t=N2N8https://zh-v2.d2l.ai/chapter_convolutional-modern/resnet.html

1. 勾配の消失にどう対処するか?

乗算を加算に変えます。(ResNet は、特に残りの接続 (Residual Connection) でこれを行います)

2.残差ブロックは勾配の消失にどのように対処しますか?

(1) 予測モデルを考えてみましょう。

y_{1}=f(x)

の:

  • ×:入力
  • f: ニューラルネットワークモデルを表します
  • y: 出力
  • w: トレーニングするネットワークの重み

次に、重みの更新には次のものがあります。

w=w-\eta \frac{\partial y_{1}}{\partial w}

ここで、ηは学習率を示します。ご存知のとおり、学習率はステップのサイズを表し、勾配はステップの方向を表します。したがって、w に対する y の傾きはあまり小さくすることができず、小さすぎるとηがいくら大きくても機能しませんし、値の安定性にも影響します。

バックプロパゲーションは出力層から入力層に伝播するため、入力に近い層の重みは勾配消失の問題を最も起こしやすくなります。

(2) 次に、 1 つのネットワークの上に別のネットワークをスタック (シリアル化) します。

y_{2}=g(f(x))=g(y_{1})

重みに関する導関数項は、複合関数の導出のための連鎖則によって簡単に取得できます。

\frac{\partial y_{2}}{\partial w}=\frac{\partial g(y_{1})}{\partial y_{1}}\frac{\partial y_{1}}{\partial w}

連鎖則による展開後: w に関する 2 番目の項目 y の勾配は、変更前の最初の部分の結果と同じです。y に関する最初の項目 g(y) の勾配は、入力微分に対する新しく追加された層の出力。予測値と真の値の差に関連します。予測値と実際の値の差が比較的小さいとすると、特に第 1 項の値が小さくなります。これは、追加した層のフィッティング能力が強いと仮定すると、第 1 項が特に小さくなり、第 2 項を掛けた後の積の値が特に小さくなる、つまり傾きが となるためです。非常に少ない。学習率を上げることしかできませんが、これは最下位のデータ層に近い更新であるため、増やすことはあまり役に立たない可能性があります。学習率を上げすぎると、新しく追加された層の w がすでに大きくなり、数値が不安定になる可能性があります。

ネットワークを積み重ねた後の連鎖則による勾配乗算だからこそ、途中に比較的小さな項目があると、式全体の積が相対的に小さくなる可能性があり、その積は次のように小さくなります。最下層まで到達します。

(3)残留接続の方法を使用して、元のモデルを深くします。

y_{3}=f(x)+g(f(x))=y_{1}+y_{2}

 このときの微分項は次のようになります。

\frac{\partial y_{3}}{\partial w}=\frac{\partial y_{1}}{\partial w}+\frac{\partial y_{2}}{\partial w}=\frac {\partial y_{1}}{\partial w}+\frac{\partial g(y_{1})}{\partial y_{1}}\frac{\partial y_{1}}{\partial w}

加算の導出を使用してモデル式を拡張して 2 つの項目を取得します。最初の項目は前の項目と同じであり、これが最初の部分です。

これら 2 つの項目では、2 番目の項目の値が比較的小さい場合でも、最初の項目の値が補足されます (大きな数値に小数を加えた値は依然として大きな数ですが、大きな数値に小数を乗じた値は 1 になる可能性があります)。 10 進数 )、層間データ パスが存在するため、モデルの最下位層の重みは、モデルを深化する前と比べて大きく減少することはありません。

データ端に近い重み w をトレーニングするのは困難ですが、クロスレイヤー データ パスの追加により、勾配を計算する際に、上位レイヤーの損失をクロス経由で下位レイヤーに直接かつ迅速に渡すことができます。 -layer接続パスなので、最初は下位層もより大きな勾配を取得できます。

勾配サイズの観点から見ると、残差接続によりデータに近い層の重み w が比較的大きな勾配を得ることができるため、ネットワークがどれほど深くても、下位層は十分に大きな勾配を得ることができます。ネットワークはより効率的に更新できます。

おすすめ

転載: blog.csdn.net/qq_54708219/article/details/129773561