深層学習用のさまざまなオプティマイザーのまとめ

1. 最適化アルゴリズムの設計原理

深層学習における最適化アルゴリズムの原理は、目的関数J ( θ ) J(\theta)を最小化する勾配降下法です。J ( θ )、最適解プロセスでは、まず目的関数 ∇ J ( θ ) の勾配を解きます\nbla J(\theta)J ( θ )、パラメータθ \thetaθが独立変数の場合、θ t = θ t − 1 − η ∇ J ( θ ) \theta_{t}=\theta_{t-1}-\eta\nabla J(\theta) となります。=t 1η J ( θ )η \etaηは学習率であり、勾配更新ステップのサイズを示します。最適化プロセスが依存するアルゴリズムはオプティマイザーと呼ばれます。深層学習オプティマイザーの 2 つのコアは勾配と学習率であることがわかります。前者はパラメータの更新の方向を決定し、後者はパラメータの更新の度合いを決定します。

θ \thetaを定義しますθは最適化するパラメータJ ( θ ) J(\theta)J ( θ )は目的関数、初期学習率はη \etan勾配降下プロセス中の最適化アルゴリズムの実行フレームワークは次のとおりです。

1. 現在のパラメータに対する目的関数の勾配を計算します。

gt = ∇ J ( θ t ) g_t = \nabla J(\theta_t)g=J ( i)

2. 必要に応じて、履歴勾配の一次および二次運動量を計算します。

mt = ϕ ( g 1 , g 2 , ⋅ ⋅ ⋅ , gt ) m_t = \phi(g_1, g_2,···,g_t)メートル=ϕ ( g1g2、⋅⋅⋅、g)

V t = ψ ( g 1 , g 2 , ⋅ ⋅ ⋅ , gt ) V_t = \psi(g_1, g_2,...,g_t)V=ψ ( g1g2、⋅⋅⋅、g)

3. 現時点での下降勾配を計算します。

p = η ∗ mt / V t (適応オプティマイザ) p = \eta * m_t / \sqrt{V_t} (適応オプティマイザ)p=メートル/V (適応型オプティマイザー)

p = η ∗ gt (非適応オプティマイザ) p = \eta * g_t (非適応オプティマイザ)p=g(非適応オプティマイザ)

4. 勾配降下法更新を実行する

θ t + 1 = θ t − p \theta_{t+1} = \theta_t - pt + 1=p

さまざまなオプティマイザの場合、ステップ3 33とステップ4 44は同じですが、主な違いはステップ1 11とステップ2 22.これらのオプティマイザーの設計思想を詳しく説明しましょう。

1. 非適応オプティマイザ

最適化プロセス中、学習率はプロセス全体を通じて、または特定の学習に従って変化しません。学習スケジュール スケジュール_ _ _ _スケジュールは時間の経過とともに変化ます。非適応オプティマイザーと呼ばれます。このカテゴリには、最も一般的なSGD SGDが含まれます。SG D (確率的勾配降下法) とMomentum Momentum瞬間SGDSGD _ _ _ _ _ _SG D、带N sterov ネステロフ必要SGDSGD _ _ _SGD

1、BGD BGDBG D (バッチ バッチバッチグラジエント グラジエント_ _ _勾配降下降下_ _ _ _ _ _降下 _ _ _

その勾配更新式は次のとおりです。

θ = θ − η ∗ ∇ θ J ( θ ) \theta = \theta - \eta * \nabla_{\theta} J(\theta) 。=J ( θ )

シンガポールドル シンガポールドルSG D は、トレーニング セット全体のデータを使用して、勾配が更新されるたびに損失をlパラメータに対するossの勾配なので、計算が非常に遅く、大量のデータセットに遭遇した場合には非常に難しくなり、新しいデータでモデルをリアルタイムで更新することはできません。

2、シンガポールドル シンガポールドルSG D確率的勾配降下法 (Stochastic Stochastic確率勾配勾配_ _ _ _勾配降下降下_ _ _ _ _ _降下 _ _ _

その勾配更新式とSGD SGDSG Dも同様です。

シンガポールドル シンガポールドルSG Dの勾配降下プロセスは、丘を転がり落ちる小さなボールに似ています。その進行方向は、現在の丘の最大傾斜方向 (負の最大傾斜方向) とのみ一致し、各瞬間の初速度は 0 です。勾配更新ルールは次のとおりです:バッチ勾配更新はサンプルごとにバッチで実行されるため、ネットワークパラメーターの更新が非常に高速になります。しかし、その欠点も明らかです。SG D は勾配を非常に頻繁に更新するため、コストがコスト関数 関数機能に重大ショックが発生し、大域的最小値で前後に振動したり、大域的最適値から飛び出す可能性あります

3、MSGD MSGDMSG D (ミニ − バッチ ミニバッチミニ_バッチ勾配勾配_ _勾配降下降下_ _ _ _ _ _降下 _ _ _

実際、MSGD を MSGD と呼ぶことがよくあります。MSG D はSGD SGDと呼びますSG D、その勾配更新式およびSGD SGDSG Dも同様です。勾配更新ルールは次のとおりです:MSGD MSGDMSG D は毎回バッチバッチバッチサンプルつまりnn _N個のサンプルが計算されるため、パラメータ更新の分散が減少し、収束がより安定しますが、一方で、深層学習ライブラリの高度に最適化された行列演算を最大限に活用して、より効果的な勾配計算を行うことができます。 。そして2 22シンガポールドル シンガポールドルSG Dの違いは、勾配が更新されるたびにデータセット内のすべてのサンプルを使用するのではなく、バッチ処理nn内部バッチ_ _ _n個のサンプル。SGD以下の記事で言及されているここでのSG D はMSGD MSGDを指しますMSG D. _
ここに画像の説明を挿入
アドバンテージ:

1. MSGD は更新中であるように見えますが、MSG D のコストコストコスト関数 関数関数大きく変動し、多くの回り道を必要としますが、勾配の要件は非常に低く(勾配の計算高速です)、ノイズの導入については、多くの理論的および実践的な研究によりノイズは特に大きくない、MSGD MSGDMSG D は良好に収束できます。

2. 大規模なデータセットを適用する場合、トレーニング速度は非常に速くなります。たとえば、毎回数百万のデータ サンプルから数百のデータ ポイントを取得し、MSGD MSGDを計算します。MSG D勾配、モデル パラメーターを更新します。標準的な勾配降下法ですべてのサンプルを走査する場合と比較して、サンプルが入力されるたびにパラメーターを更新する方がはるかに高速です。

欠点:

1. 良好な収束は保証できません;ミニミニミニバッチバッチba t c h は毎回勾配降下法にデータセットの一部のみを使用するため、各降下は厳密には最小値の方向に向いているわけではありませんが、全体的な下降傾向は最小値の方向にあり、次のことが非常に簡単です。ローカルミニマムに陥ります。

2、lr lrl rが小さすぎると収束速度が非常に遅くなり、大きすぎると損失が発生損失関数 関数関数は振動を続けたり最小から逸脱したりすることがあります(1 つの対策は、最初に大きな学習率を設定し、2 つの反復間の変化が特定のしきい値よりも低い場合、学習率を学習_ _ _ _ただし、このしきい値の設定は事前に書き込む必要がありますが、この場合、データセットの特性に適応できませ)

3. 非凸関数の場合、鞍点の周囲の勾配が0 0に近いため、極小値や鞍点にトラップされることを避ける必要もあります。0MSGD MSGDMSG D はここで簡単に行き詰まってしまう可能性があります。ここで鞍点について説明すると、スムーズ関数の鞍点近傍の曲線、曲面、または超曲面は、この点の接線の異なる側に位置します。以下に示すように2 2

ここに画像の説明を挿入
4、SGDM SGDMSG D M (勢いあり 勢いあり)勢いSGD SGD勢い_ _ _ _ _シンガポールD

上記の最適化アルゴリズムで発生しやすい問題を解決するために、SGDM SGDMオリジナルのSGD SGDでSG D Mアプリケーションが誕生しましたSG Dには 1 次の運動量が追加されます。直感的に理解すると、慣性が追加されます。傾斜が急な場所では慣性が大きくなり、下りは速くなりますが、遅くなります。

その勾配更新式は次のとおりです。

vt = γ vt − 1 + η ∇ θ J ( θ ) v_t = \gamma v_{t-1} + \eta \nabla_{\theta}J(\theta) 。v=v _t 1+η∇ _J ( θ )

θ = θ − vt \theta = \theta - v_t=v

SGDM SGDMγ vt − 1 \gamma v_{t-1}を加算したSG D Mv _t 1、これは運動量γ \gammaとして定義されます。一般的に使用されるγの値は0.9 0.90.9勢いを利用した後、勾配降下処理において、勾配方向が変わらない方向の降下速度を速くすることができ、勾配方向が変化する方向の降下速度を遅くすることができる。ここで、より近い例を示します。元の勾配降下では、一方向に下っていて、渓谷 (つまり、変曲点) に遭遇し、渓谷を越えると丘の中腹の反対側にいます。このとき、勾配の方向は前回とは逆になりますが、このとき、前回の勾配の大きさの蓄積により、2 つの山腹間の変化は相殺されるため、必ずしも谷の上で振動するとは限りません。山腹が2つあり、谷を下るのは簡単で、振動が軽減されます。SGDM SGDMSG D Mの勾配更新の状況は3-33、および図1 1図1に示すように、振動は大幅に低減される。
ここに画像の説明を挿入
5.ナグナグN A G (N sterov ネステロフ)ネステロv加速 加速_ _加速度勾配勾配_ _ _ _ _ _勾配) _ _ _ _ _ _ _

SGDMの上に導入されたSGDMSG D Mの各下降ステップは、前回の下降方向と現在の点の勾配方向の累積で構成されますが、ちょうど変曲点付近まで下降する場合、このようにパラメータを更新し続けると、今回は、より大きな大きさが変曲点を通過するようにします。つまり、モデルは変曲点に遭遇したときに更新の大きさを自動的に減少させません。NAG は上記の問題に対して運動量法を改良したもので、その式は次のようになります。

vt = γ vt − 1 + η ∇ θ J ( θ − γ vt − 1 ) v_t = \gamma v_{t-1} + \eta \nabla_{\theta}J(\theta-\gamma v_{t-1) )。})v=v _t 1+η∇ _J ( θv _t 1)

θ = θ − vt \theta = \theta - v_t=v

ナグナグN A G は、現在位置における以前の勾配値を使用して最初にパラメータ更新を実行し、次に更新された位置における勾配を計算し、勾配のこの部分を以前に蓄積された勾配値ベクトルに加算します。の勾配方向は、次のステップでパラメータ更新後の値をシミュレートし、運動量法の現在位置の勾配をシミュレートした位置の勾配に置き換えます。では、なぜこの方法で前述の問題が解決されるのでしょうか? だって、NAG NAGN A G には次のステップの位置勾配を予測するステップがあり、変曲点付近にある場合はNAG NAGN A G は、変曲点を通過すると予測し、この項目の勾配は前の勾配に対して補正されます。これは、そのスパンが大きくなりすぎるのを防ぐことと同じです。
ここに画像の説明を挿入
上の写真4 44 、 NAG NAG を簡単に示す例を示します。N A Gの更新原理SGDM SGDMSG D M法、青い短い線は現在位置の勾配更新を表し、青い長い線は以前に蓄積された勾配を表し、最初の赤い線はNAG NAGNAGアルゴリズムは次の位置の勾配更新を予測します。最初の茶色の線は以前に累積された勾配を表し、ベクトル加算結果 (緑色の線) はパラメータ更新の方向ですナグナグ勾配を更新するときのN A Gの状態図を図5図5から、 SGDM SGDMと比較したことがわかります。SG D MおよびSGD SGDSG DNAG NAGN A G はより優れたパフォーマンスを示しました。
ここに画像の説明を挿入

2. 適応型オプティマイザー

最適化プロセスでは、学習率が勾配に応じて適応的に変化し、与えられた全体的な学習率の影響を可能な限り排除しようとします。これは適応オプティマイザーと呼ばれ、一般的なものには A dagrad Adagrad があります・ダグラア・ダデルタ アダデルタアダデルタRMSプロップRMSprop _ _ _ _RMSprop A damAdam1
A dagradアダグラド_グラッド_ _

ダグラドはアダグラドです実際には、データは学習率に対する制約です。頻繁に更新されるパラメーターについてはそれに関する多くの知識が蓄積されています。単一のサンプルにあまり影響されたくないので、次のことを望んでいます。学習速度は遅くなります; 更新さためこの手法での二次運動量の使用は、「適応学習率」最適化アルゴリズムの時代の到来を意味します。

ここで二次運動量V t V_tを説明します。Vの定義: パラメータの履歴更新頻度を測定するために使用され、二次運動量はこれまでのすべての勾配値の二乗和です。アダグラド アダグラドA d a g r a dの式は次のとおりです。

mt = gt m_t = g_tメートル=g

V t = ∑ i = 1 tgt 2 V_t = \sum_{i=1}^{t}{g_t}^2V=i = 1g2

θ t + 1 = θ t − η mt V t \theta_{t+1} = \theta_t - \eta \frac{m_t}{\sqrt{V_t}}t + 1=V メートル

ここでgt g_tgttのために時間tにおけるパラメーターの勾配、なぜadagrad adagradなのか説明しましょうa d a grad は、さまざまな周波数特徴のパラメータの学習率を変更できますまず、二次運動量V t V_tV, これは勾配二乗の累積和です。トレーニング データが少ない特徴の場合、対応するパラメーターはゆっくりと更新されます。つまり、勾配の二乗変化の累積和は比較的小さいため、上記のパラメーターに対応する学習率は低くなります。更新式が大きくなるため、特定の特性データセットでは、対応するパラメータの更新速度が速くなります。上記分母が0の場合00なので、平滑化項パラメータϵ \epsilonϵ の場合、パラメーター更新方程式は次のようになります。

θ t + 1 = θ t − η mt V t + ϵ \theta_{t+1} = \theta_t - \eta \frac{m_t}{\sqrt{V_t+\epsilon}}t + 1=V+ϵ メートル

でもアダグラド アダグラドa d a g ra dにも問題があります。つまり、トレーニングの数が増えるにつれて分母が大きくなり、学習率がどんどん小さくなり、最終的には限りなく 0 0 に近づいてしまいます0 の場合、パラメータを効果的に更新することができなくなります。

2、ア・ダデルタ アダデルタ追加デルタ_ _ _ _ _

フォー・ア・ダグラッド アダグラドアダグラッドアダデルタアダデルタ短所_ _ _運動Vt V_t変化V改善されました、そして、A dagrad AdagradA d a g ra dと比較すると、分母が過去の勾配二乗の減衰平均値に置き換えられており、この分母は勾配の二乗平均平方根値 RMS RMS に相当しますRMS (ルート ルートルート意味 意味 乗二乗s q u a red )その表現は次のとおりです。

mt = gt m_t = g_tメートル=g

V g , t = γ V g , t − 1 + ( 1 − γ ) gt 2 V_{g,t} = \gamma V_{g,t-1} + (1-\gamma){g_t}^2Vg t=γV _g , t 1+( 1c ) g2

V Δ θ , t = γ V Δ θ , t − 1 + ( 1 − γ ) Δ θ t 2 V_{\Delta \theta,t} = \gamma V_{\Delta \theta,t-1} + (1 -\ガンマ){\デルタ \theta_t}^2Vディ_=γV _D θ t 1+( 1c )ディ_2

RMS [ g ] t = V g , t + ϵ RMS[g]t = \sqrt{V{g,t}+\epsilon}RMS [ g ] t=V g t+ϵ

RMS [ Δ θ ] t = V Δ θ , t + ϵ RMS[\Delta\theta]t = \sqrt{V{\Delta\theta,t}+\epsilon};RMS [ Δ θ ] t=V D i t+ϵ

θ t + 1 = θ t − RMS [ Δ θ ] t − 1 RMS [ g ] tmt \theta_{t+1} = \theta_{t} - \frac{RMS[\Delta \theta]_{t-1 }}{RMS[g]_t}m_tt + 1=RMS [ g ]RMS [ Δ θ ]t 1メートル

ここで、勾配に対する 2 次の運動量変化はRMS [ g ] t RMS[g]_tです。RMS [ g ]; 変数の変化の 2 次運動量はRMS [ Δ θ ] t RMS[\Delta \theta]_tです。RMS [ Δ θ ]を使用して学習率に置き換えます。アダデルタアダデルタ最適アルゴリズムデフォルトの学習率を設定する必要さえありません。これは新しいルールで削除されているためです

3、RMSプロップ RMSpropRMSprop _ _

RMS プロップ RMSpropRMSp ro pA dadelta アダデルタA d a d e lt a はA dagrad Adagradを解決することですこの問題のため、Adagrad の学習率は急激低下ますRMS プロップ RMSpropRMSpropAdadeltaAdadelta _ _A d a d e lt aの計算式は非常に似ていますが、同時に独立して提案されており、その式は次のとおりです。

mt = gt m_t = g_tメートル=g

V t = γ V t − 1 + ( 1 − γ ) gt 2 V_t = \gamma V_{t-1} + (1-\gamma){g_t}^2V=γV _t 1+( 1c ) g2

θ t + 1 = θ t − η mt V t + ϵ \theta_{t+1} = \theta_{t} - \eta \frac{m_t}{\sqrt{V_t + \epsilon}}t + 1=V+ϵ メートル

このことから、 RMS prop RMSprop であることがわかります。RMSp r o p は、初期学習率η \etan著者らは、ϵ \epsilonϵは 0.9 に設定され、学習率η \etaηは0.001に設定されました。

4、ダムアダムA d am (適応的 適応的適応モーメントモーメント_ _ _ _ _瞬間推定推定_ _ _ _推定) _ _ _ _ _ _ _

ダム、アダムAdamアルゴリズムは、各パラメーターの適応学習率を計算するもう 1 つの方法です。それは一種の勢いです勢い 勢い運動RMSプロパティRMSprop _ _ _ _RMSp r o pを組み合わせる方法では、β 1 \beta_1b1β 2 \beta_2b2、その式は次のとおりです。

mt = β 1 mt − 1 + ( 1 − β 1 ) gt (一次運動量) m_t = \beta_1m_{t-1} + (1-\beta_1)g_t(一次運動量)メートル=b1メートルt 1+( 1b1) g(一次運動量)

V t = β 2 V t − 1 + ( 1 − β 2 ) gt 2 (2 次運動量) V_t = \beta_2V_{t-1} + (1-\beta_2){g_t}^2(2 次運動量) )V=b2Vt 1+( 1b2) g2 (セカンドモーメンタム)

m ~ t = mt 1 − β 1 t \tilde{m}_t = \frac{m_t}{1-\beta_1^t}メートル=1b1メートル

V ~ t = V t 1 − β 2 t \tilde{V}_t = \frac{V_t}{1-\beta_2^t}V=1b2V

θ t + 1 = θ − η m ~ t V ~ t + ϵ \theta_{t+1} = \theta - \eta \frac{\denominator{m}_t}{\sqrt{\denominator{V}_t + \ε}}t + 1=V+ϵ メートル

其中 β 1 \beta_1 b1デフォルト値は0.9 0.9です。0.9β 2 \beta_2b2デフォルト値は0.999 0.999です。0.999 ,ϵ \epsilonϵ1 0 − 8 10^{-8}1 08ダム アダムd am は運動量とRMS prop を組み合わせたものです RMSpropRM は両方の利点を組み合わせ経験からAdam AdamAdam は実際に優れたパフォーマンスを発揮し他の適応学習アルゴリズムと比較して利点があります

要約する

鞍点と等高線に関する上記の最適化アルゴリズムのパフォーマンスを見てみましょう。
ここに画像の説明を挿入
ここに画像の説明を挿入
図 6 と図 7 からわかるように、A dagrad Adagrad・ダグラア・ダデルタ アダデルタアダデルタRMSプロップRMSprop _ _ _ _RMSロップは正しい方向を見つけてほぼ素早く前進し、かなり早く収束しますが、他の方法はそれを見つけるのに時間がかかるか、多くの回り道を要します

1. まず第一に、主要なアルゴリズムのどれが優れているかについての結論はありません。始めたばかりの場合はSGD SGDを優先してくださいSG D +N ステロフ・ネステロフネステロvモメンタム モメンタム_ _モーメンタムまたはアダムアダム_ _ _ _ _ _ああ、そう

2、ダムアダムAdamなどの適応学習率アルゴリズムは、スパース データに対して利点があり、収束速度速いですが、 SGDM SGDMSG D Mはより良い最終結果を達成する傾向があります。

3. ニーズに応じて選択します - モデル設計実験の過程で、新しいモデルの効果を迅速に検証するために、最初にA dam Adamを使用できます。Adam は実験的な最適化を迅速に実行します。微調整されたSGD SGD は、モデルの開始前または結果のリリース前に使用できます。SG Dシリーズ最適化アルゴリズムは、モデルの極端な最適化を実行します。

4. さまざまなアルゴリズムの組み合わせを検討します。最初に使用するのはA dam アダムSGDに切り替える前に、ちょっと下山しくださいSGDSG Dシリーズの最適化アルゴリズムは完全に調整されています。

おすすめ

転載: blog.csdn.net/qq_52302919/article/details/131626516