勾配爆発や勾配消失はなぜ起こるのでしょうか? この現象の発生を軽減するにはどうすればよいでしょうか?

はじめに: 勾配消失現象は、ディープ ニューラル ネットワークの学習過程で特に顕著であり、ネットワーク層が深くなるにつれて、バックプロパゲーション中に損失の勾配が継続的に減少し、浅いネットワークの学習の失敗につながります。有効なアップデートへのパラメータの難しさ。なぜこのような現象が起こるのでしょうか?以下のエディタでは、ニューラル ネットワーク バックプロパゲーション (BP) の原理から勾配消失と勾配爆発の現象の性質とそれを軽減する方法を明らかにします。

目次

1. 勾配消失と勾配爆発の原因

2. 解決策


1. 勾配消失と勾配爆発の原因

        次の図は、バックプロパゲーション プロセスを導出することで、ネットワーク トレーニング中の勾配消失と勾配爆発の原因を説明する例として取り上げられています。

        トレーニング中に、 \オメガ_{1}\オメガ_{2}およびのパラメータを更新するために勾配降下法を使用する必要があると仮定する\オメガ3}と、これら 3 つのパラメータの勾配を取得するには損失逆伝播分布が必要です。

①の場合\オメガ3}

\frac{\部分損失}{​​\partial \omega_{3} }=\frac{\部分損失}{​​\partial y}\frac{\partial y}{\partial \omega _{3}}=\frac{ \部分損失}{​​\部分 y}h_{3}

②の場合\オメガ_{2}

\frac{\部分損失}{​​\部分 \omega _{2}}=\frac{\部分損失}{​​\部分 y}\frac{\部分 y}{\部分 h _{3}}\frac{\部分 h_{3}}{\partial \omega _{2}} =\frac{\partial loss}{\partial y}\omega _{3}h_{2}

③連鎖導出則により、図の赤、黄、青の線のように到達可能な経路が3本あり、そのペアの偏導関数はこれら3本の経路の和に等しいことが\オメガ_{1}分かります。便宜上、赤線 たとえば、非線形変換部分は非線形関数です。\オメガ_{1}\オメガ_{1}h_{2}=\シグマ (h_{1})\シグマ

\frac{\部分損失}{​​\部分 \omega _{1}}=\frac{\部分損失}{​​\部分 y}\frac{\部分 y}{\部分 h _{3}}\frac{\部分的 h_{3}}{\部分的 h _{2}}\frac{\部分的 h_{2}}{\部分的 h_{1}}\frac{\部分的 h_{1}}{\部分的 \omega _{ 1}} =\frac{\部分損失}{​​\部分 y}\omega _{3}\omega _{2}{\sigma }'x_{2}

        上記の式 3 からの導出プロセスは一般化でき、ネットワークの深さが大幅に増加した場合、浅いネットワークの重みパラメータに対する損失の偏導関数は次のように表すことができます。

\frac{\部分損失}{​​\partial \omega _{1}}=\frac{\部分損失}{​​\partial y}\omega _{n}\omega _{n-1}...\omega _ {2}{\sigma }'^{m}x

このうち、nネットワーク層のおおよその数とメートル非線形変換の数を表します。

        上記のパラメータ勾配の計算式によれば、細分化しようとすると、①ネットワークの深さが深すぎる、②活性化関数が不適切であるなどの理由で、勾配が消えたり、勾配が爆発したりすることがわかります。選択された; ③ パラメータが不適切に初期化され、\オメガパラメータ大きすぎるか小さすぎる; ④ 損失関数の選択が不適切; ⑤ ニューロン活性化値の不適切な分布、ニューロン値が大きすぎるか小さすぎる。実際のネットワークの学習過程では、①②③が勾配逆伝播の乗算効果による勾配消失と勾配爆発の現象を引き起こす主な要因となります。つまり、勾配爆発または勾配消失の現象に関係なく、ネットワークの学習が困難になるため、深層学習タスクではこれらの現象を回避するようにしてください。

2. 解決策

        (1) 事前トレーニング + 微調整 (事前トレーニング + 微調整): 基本的な考え方は、毎回隠れノードの層をトレーニングし、前の層の隠しノードの出力をトレーニング中の入力として使用することです。 、この層の隠しノードの出力を次の層の隠しノードの入力として、このプロセスは層ごとに「事前トレーニング」され、事前トレーニングが完了した後、「微調整」(微調整)されます。 -tuning) はネットワーク全体で実行されます。この考え方は、まず局所最適を求め、それを統合して大域最適を求めるのと同じであり、一定の利点はありますが、現時点ではあまり普及していません。

        (2) 勾配クリッピング (勾配のしきい値の設定): このソリューションは主に勾配爆発のために提案されています。アイデアは、勾配クリッピングしきい値を設定し、勾配を更新することです。勾配がこのしきい値を超えた場合、勾配は次のようになります。この範囲内で制限を適用し、爆発的な勾配を防ぎます。

        (3) 重みの正則化: 勾配爆発を解決するもう 1 つの方法は、重みの正則化を使用することです。正則化では、主にネットワークの重みを正則化することで過学習を制限します。勾配爆発が起こると重みが非常に大きくなってしまいますが、逆に正則化項によって重みの大きさを制限することで勾配爆発の発生をある程度防ぐこともできます。

         (4) relu などの勾配がほぼ定数に該当する活性化関数を選択します (勾配が 1 に近いほど良い)。relu 関数の導関数は正の部分で常に 1 に等しいため、relu を使用します。ディープネットワークの活性化関数は機能しません。これにより、勾配の消失や爆発が発生する可能性があります。

        (5) BN: 勾配を効果的に解決できる理由については、記事https://blog.csdn.net/Mike_honor/article/details/125915321?spm=1001.2014.3001.5501を参照してください。

        (6) 残留ネットワーク構造

        

        前のネットワークの単純な構造と比較して、残留ネットワークにはこのような層間接続構造が多くあり、層間接続構造 (短絡メカニズム) が伝播できるため、このような構造は逆伝播に大きな利点をもたらします。グラデーションをロスレスで実行すると、グラデーションが消えることはありません。

        (7) LSTMの「ゲート」構造

        LSTM の正式名称は、Long-Short Term Memory Network (長短期記憶ネットワーク) で、勾配消失が起こりにくいのですが、その主な理由は、LSTM 内部の複雑な「ゲート」にあります。内部の「ゲート」を通過します。次回更新するときに、以前のトレーニング セッションの「残留記憶」を「思い出す」ことができます。

 

おすすめ

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