勾配降下法からアダムまで! 1つの記事でさまざまなニューラルネットワーク最適化アルゴリズムを理解する

勾配降下法からアダムまで! 1つの記事でさまざまなニューラルネットワーク最適化アルゴリズムを理解する

[[431306]]

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載しています。転載の際は出典元にご連絡ください。

モデルが重みとバイアス パラメータを更新する方法を微調整するときに、どの最適化アルゴリズムを使用するとモデルがより優れた結果をより速く生成できるかを検討しましたか?勾配降下法、確率的勾配降下法、または Adam 法のどれを使用すればよいでしょうか?

この投稿では、さまざまな最適化アルゴリズムの主な違いと、最適な最適化方法を選択する方法について説明します。

最適化アルゴリズムとは何ですか?

最適化アルゴリズムの機能は、トレーニング方法を改善することで損失関数 E(x) を最小化 (または最大化) することです。

モデル内のいくつかのパラメータは、テストセット内のターゲット値 Y の真の値と予測値の間の偏差の度合いを計算するために使用されます。これらのパラメータに基づいて、損失関数 E(x) が形成されます。

たとえば、重み (W) とバイアス (b) はそのような内部パラメータであり、通常は出力値の計算に使用され、ニューラル ネットワーク モデルのトレーニングで重要な役割を果たします。

モデルの内部パラメータは、モデルを効果的にトレーニングし、正確な結果を生成する上で非常に重要な役割を果たします。このため、モデルのトレーニングとモデル出力に影響するネットワーク パラメータを更新および計算し、最適な値に近づくか、最適な値に到達するように、さまざまな最適化戦略とアルゴリズムを使用する必要があります。

最適化アルゴリズムは次の 2 つのカテゴリに分類されます。

1. 一次最適化アルゴリズム

このアルゴリズムは、各パラメータの勾配値を使用して、損失関数 E(x) を最小化または最大化します。最も一般的に使用される一次最適化アルゴリズムは勾配降下法です。

関数勾配: 導関数 dy/dx の多変数表現。x に対する y の瞬間的な変化率を表すために使用されます。多くの場合、多変数関数の導関数を計算するには、導関数の代わりに勾配が使用され、勾配を計算するために偏導関数が使用されます。勾配と微分の主な違いの 1 つは、関数の勾配がベクトル場を形成することです。

したがって、単一変数関数の場合、分析には導関数が使用されますが、多変数関数に基づいて勾配が生成されます。より理論的な詳細についてはここでは詳しく説明しません。

2. 2次最適化アルゴリズム

2 次最適化アルゴリズムは、2 次導関数 (ヘッセ行列法とも呼ばれる) を使用して損失関数を最小化または最大化します。 2 次導関数は計算コストが高いため、このアプローチは広く使用されていません。

さまざまなニューラルネットワーク最適化アルゴリズムの詳細な説明

勾配降下法

勾配降下法は、インテリジェント システムをトレーニングおよび最適化する際の最も重要な手法および基盤の 1 つです。勾配降下法の機能は次のとおりです。

最小値を見つけ、分散を制御し、モデル パラメータを更新することで、モデルは最終的に収束します。

ネットワークパラメータを更新するための式は、θ=θ−η×∇(θ).J(θ)です。ここで、ηは学習率、∇(θ).J(θ)は損失関数J(θ)の勾配です。

これはニューラル ネットワークで最も一般的に使用される最適化アルゴリズムです。

現在、勾配降下法は主にニューラル ネットワーク モデルの重み更新、つまり損失関数を最小化するためにモデルのパラメータを一方向に更新および調整するために使用されています。

2006 年にバックプロパゲーション技術が導入されたことで、ディープ ニューラル ネットワークのトレーニングが可能になりました。バックプロパゲーション技術では、まず入力信号と順方向伝播における対応する重みの積を計算し、次にこれらの積の合計に活性化関数を適用します。入力信号を出力信号に変換するこの方法は、複雑な非線形関数をモデル化する重要な手段です。この方法では非線形活性化関数が導入され、モデルがほぼあらゆる形式の関数マッピングを学習できるようになります。次に、ネットワークのバックプロパゲーションプロセス中に、関連するエラーが逆伝播され、重み値が勾配降下法を使用して更新されます。重みパラメータは、重みパラメータWに対するエラー関数Eの勾配を計算することにより、損失関数の勾配の反対方向に更新されます。

図1: 重みの更新方向は勾配方向と逆である

図 1 は、勾配ベクトル誤差の反対方向に進む重み更新プロセスを示しています。U 字型の曲線が勾配です。注意すべき点は、重み値 W が小さすぎたり大きすぎたりすると誤差が大きくなり、重みを更新して最適化し、適切な値に変換する必要があり、勾配の反対方向で局所的な最適値を見つけようとすることです。

勾配降下法のバリエーション

従来のバッチ勾配降下法では、データセット全体の勾配を計算しますが、更新は 1 回のみ行われるため、大規模なデータセットを処理する場合は速度が遅く、制御が難しく、メモリ オーバーフローが発生する可能性もあります。

重みの更新速度は学習率 η によって決定され、凸誤差面では大域的最適値に収束し、非凸面では局所的最適値に近づく可能性があります。

標準形式のバッチ勾配降下法を使用する場合のもう 1 つの問題は、大規模なデータセットでトレーニングするときに重みの更新が冗長になることです。

標準的な勾配降下法の上記の問題は、確率的勾配降下法で解決されます。

1. 確率的勾配降下法(SDG)

確率的勾配降下法 (SGD) は、各トレーニング サンプルのパラメーターを更新し、実行されるたびに更新を実行し、より高速に実行します。

θ=θ−η⋅∇(θ) × J(θ;x(i);y(i))、ここでx(i)とy(i)はトレーニングサンプルです。

頻繁に更新するとパラメータ間のばらつきが大きくなり、損失関数はさまざまな強度で変動します。これは実際には良いことです。標準的な勾配降下法では局所最適値に収束するだけであるのに対し、この方法により、新しい潜在的に優れた局所最小値を発見できるようになります。

しかし、SGD の問題は、頻繁な更新と変動により、最終的には最小値に収束し、頻繁な変動によりオーバーシュートが発生することです。

学習率 η をゆっくり減らしていくと、標準的な勾配降下法の収束パターンは SGD の収束パターンと同じになることが示されています。

図 2: 各トレーニング例で大きな分散を伴うパラメータ更新を行うと、損失関数が大きく変動する可能性があるため、損失関数の最小値を取得できない可能性があります。

ミニバッチ勾配降下法と呼ばれる別の変種は、高分散パラメータ更新と不安定な収束の問題に対処できます。

2. ミニバッチ勾配降下法

SGD と標準勾配降下法の問題を回避するために、改良された方法がミニバッチ勾配降下法です。この方法では、n 個のトレーニング サンプルのバッチごとに 1 回の更新のみを実行します。

ミニバッチ勾配降下法を使用する利点は次のとおりです。

1)パラメータ更新の変動を減らし、最終的により優れた安定した収束を実現できます。

2)最新のディープラーニング ライブラリの一般的な行列最適化手法を使用して、少量のデータ バッチの勾配の計算をより効率的に行うこともできます。

3)一般的に、サンプルのミニバッチのサイズは 50 ~ 256 の範囲ですが、実際の問題によって異なります。

4)ニューラルネットワークをトレーニングする場合、通常はミニバッチ勾配降下アルゴリズムが選択されます。

この方法は今でも SGD と呼ばれることがあります。

勾配降下法とその変種を使用する際の課題

1.適切な学習率を選択するのが難しい。学習率が小さすぎると、ネットワークの収束が遅くなりすぎますが、学習率が大きすぎると、収束に影響し、損失関数が最小値付近で変動したり、勾配発散を引き起こしたりする可能性があります。

2.さらに、すべてのパラメータ更新に同じ学習率が適用されるわけではありません。トレーニング セット データがまばらで、特徴の頻度が大きく異なる場合は、すべてを同じ程度に更新するのではなく、めったに発生しない特徴に対してはより大きな更新レートを使用する必要があります。

3.ニューラル ネットワークでは、非凸エラー関数を最小化する際のもう 1 つの重要な課題は、複数の他の局所最小値に陥らないようにすることです。実際には、問題は局所最小値から生じるのではなく、鞍点、つまり 1 つの次元が上向きに傾斜し、他の次元が下向きに傾斜する点から生じます。これらの鞍点は通常、等しい誤差値の平面によって囲まれており、すべての次元で勾配がゼロに近づくため、SGD アルゴリズムがそこから抜け出すのは困難です。

勾配降下法のさらなる最適化

ここでは、勾配降下法をさらに最適化するためのさまざまなアルゴリズムについて説明します。

1. 勢い

SGD法における高分散振動はネットワークが安定的に収束することを困難にするため、一部の研究者は、関連方向のトレーニングを最適化し、無関係な方向の振動を弱めることでSGDトレーニングを加速するMomentumと呼ばれる手法を提案しています。つまり、この新しい方法では、前のステップの更新ベクトルのコンポーネント「γ」が現在の更新ベクトルに追加されます。

V(t)=γV(t−1)+η∇(θ).J(θ)

最後に、パラメータはθ=θ−V(t)によって更新されます。

運動量項 γ は通常 0.9 またはそれに近い値に設定されます。

ここでの運動量は古典物理学における運動量と一致しており、丘から投げられたボールが落下する過程で運動量を集め、ボールの速度が増加し続けるのと同じです。

パラメータ更新プロセスでも原理は同様です。

1)ネットワークの収束をより良く、より安定的に行えるようにします。

2)振動プロセスを減らす。

勾配が実際の移動方向を指している場合、運動量項 γ は増加し、勾配が実際の移動方向と反対の場合、γ は減少します。このアプローチは、運動量項が関連するサンプルのパラメータのみを更新するため、不要なパラメータ更新が削減され、より高速で安定した収束が実現し、振動プロセスが削減されることを意味します。

2. ネステロフ勾配加速法

ミシガン大学の研究者ユーリ・ネステロフ氏は、モメンタムアプローチには問題があると考えている。

ボールが丘を転がり落ち、斜面を盲目的に滑り落ちるとしたら、それは非常に不適切でしょう。もっと賢いボールなら、自分がどこに向かっているのかに気付いて、上り坂が再び上向きに傾くと速度を落としただろう。

実際、ボールがカーブの最低点に到達したとき、運動量はかなり高くなります。勢いが強すぎると最小値を完全に逃してしまうため、ボールはいつ減速すればよいか分からず、上向きに動き続けます。

ユーリ・ネステロフは 1983 年に運動量問題を解く論文を発表したため、この方法はネステロフ勾配加速法と呼ばれています。

この方法では、まず前回の運動量に基づいて大きなジャンプを行い、次に修正のための勾配を計算してパラメータの更新を実現することを提案しました。この事前更新方法は、大きな振動を防ぎ、最小値を見逃さず、パラメータの更新に対してより敏感になります。

ネステロフ加速勾配法(NAG)は、運動量項γV(t−1)を使用してパラメータθを変更することにより、運動量項の予測可能性を与える方法です。 θ−γV(t−1)を計算することで、次の位置のおおよそのパラメータ値を得ることができます。ここでのパラメータは大まかな概念です。したがって、現在のパラメータθの勾配を計算する代わりに、関連するパラメータのおおよその将来の位置を調べることで、将来を効果的に予測することができます

V(t)=γV(t−1)+η∇(θ)J( θ−γV(t−1) )とし、θ=θ−V(t)を使用してパラメータを更新します。

これで、ネットワークの更新をエラー関数の傾きに適応させ、SGD を高速化することができます。また、対応するパラメータをその重要度に応じて調整および更新し、より大きな更新またはより小さな更新を実行することもできます。

3. アダグラード法

Adagrad メソッドは、パラメータを通じて適切な学習率 η を調整し、スパース パラメータには大きな更新を行い、頻繁に使用されるパラメータには小さな更新を行います。したがって、Adagrad メソッドはスパース データの処理に非常に適しています。

Adagrad メソッドは、時間ステップ内の各パラメータに対して計算された過去の勾配に基づいて、異なるパラメータ θ に対して異なる学習率を設定します。

以前は、各パラメータθ(i)は同じ学習率を使用し、すべてのパラメータθが一度に更新されていました。各時間ステップ t で、Adagrad メソッドは各パラメータ θ に対して異なる学習率を選択し、対応するパラメータを更新してからベクトル化します。簡単にするために、時刻tにおけるパラメータθ(i)に対する損失関数の勾配をg(t,i)に設定します。

図3 :パラメータ更新式

Adagrad法は、過去に計算されたパラメータ勾配に基づいて、各時間ステップで各パラメータθ(i)に対応する学習率ηを変更します。

Adagrad メソッドの主な利点は、学習率を手動で調整する必要がないことです。ほとんどのパラメータはデフォルト値の 0.01 のままでした。

Adagrad 法の主な欠点は、学習率 η が常に減少し、減衰することです。

追加される各項は正であるため、分母に複数の二乗勾配値が累積され、トレーニング中に累積合計が増加し続けます。その結果、学習率が非常に低い数値まで低下し、モデルは学習を完全に停止し、新しい追加知識の獲得を停止します。

学習率がどんどん小さくなると、モデルの学習能力が急激に低下し、収束速度が非常に遅くなり、長時間のトレーニングと学習が必要になる、つまり学習率が低下するからです。

Adadelta と呼ばれる別のアルゴリズムは、学習率が常に低下するというこの問題を改善します。

4. AdaDelta法

これは、学習率の低下の問題に対処する傾向がある AdaGrad の拡張です。 Adadelta は、以前の勾配の二乗をすべて累積する代わりに、以前の勾配が累積されるウィンドウを固定サイズ w に制限します。

w の以前の二乗勾配を非効率的に保存する代わりに、勾配の合計は、以前のすべての二乗勾配の減衰平均として再帰的に定義されます。運動量項と同様に、γ の割合として、時刻 t におけるスライディング平均 Eg² は、前の平均と現在の勾配値のみに依存します。

Eg²=γ.Eg²+(1−γ).g²(t)、ここでγは運動量項に近い値、約0.9に設定されます。

Δθ(t)=−η⋅g(t,i) です。

θ(t+1)=θ(t)+Δθ(t)

図4: パラメータ更新の最終式

AdaDelta メソッドのもう 1 つの利点は、デフォルトの学習率を設定する必要がないことです。

これまでに完了した改善

1)各パラメータに対して異なる学習率を計算します。

2)運動量項の運動量も計算されます。

3)学習率の低下や勾配消失などの問題を防ぐ。

どのような改善ができますか?

これまでの方法では、パラメータごとに対応する学習率を計算していましたが、パラメータごとに対応する運動量の変化を計算して独立して保存してはどうでしょうか。これは Adam アルゴリズムによって提案された改善です。

アダムアルゴリズム

Adam アルゴリズムは、各パラメータの適応学習率を計算できる適応モーメント推定法です。このメソッドは、AdaDelta の前の二乗勾配の指数関数的に減少する平均を保存するだけでなく、運動量と同様に、前の勾配 M(t) の指数関数的に減少する平均も維持します。

M(t)は第1モーメントにおける勾配の平均値であり、V(t)は第2モーメントにおける勾配の非中心分散値です。

図 5: 2 つの式は、第 1 モーメントにおける勾配の平均値と第 2 モーメントにおける分散です。

パラメータ更新の最終的な式は次のようになります。

図6: パラメータ更新の最終式

このうち、β1は0.9、β2は0.9999、ϵは10-8に設定されます。

実際の応用では、Adam メソッドはうまく機能します。他の適応学習率アルゴリズムと比較して、収束が速く、学習効果もより効果的です。また、学習率の消失、収束の遅さ、損失関数の大きな変動につながる高分散パラメータ更新など、他の最適化手法に存在する問題を修正することもできます。

最適化アルゴリズムの視覚化

図8: 鞍点のSGD最適化

上記のアニメーションからわかるように、適応型アルゴリズムは収束が速く、パラメータ更新で正しいターゲット方向を素早く見つけることができます。一方、標準の SGD、NAG、およびモーメンタム法は収束が遅く、正しい方向を見つけるのが困難です。

結論は

どのオプティマイザーを使用すればよいでしょうか?

ニューラル ネットワーク モデルを構築する際には、損失関数を最大限に最小化するように内部パラメータを調整しながら、迅速に収束して正しく学習するための最適なオプティマイザーが選択されます。

Adam は実際のアプリケーションでうまく機能し、他の適応型技術よりも優れています。

入力データセットがスパースな場合、SGD、NAG、モメンタムなどの方法はうまく機能しない可能性があります。したがって、スパースなデータセットの場合は、何らかの適応学習率法を使用する必要があります。もう 1 つの利点は、学習率を手動で調整する必要がなく、デフォルトのパラメータを使用して最適な値を取得できることです。

ディープ ネットワーク モデルのトレーニングを迅速に収束させたい場合、または構築されたニューラル ネットワークがより複雑な場合は、Adam またはその他の適応学習率メソッドを使用する必要があります。これらのメソッドの方が実際の結果が優れているためです。

この記事を通じて、さまざまな最適化アルゴリズムの特性の違いをよく理解していただければ幸いです。

<<:  中国の人工知能産業における4つの大きなトレンド

>>:  人工筋肉ロボットアームは本物そっくりで、白熱した議論を巻き起こす。7kgのダンベルを持ち上げる際、その「筋肉」がはっきりと見える。

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

ディープラーニングモデルを使用して Java でテキスト感情分析を実行する

肯定的ですか? 否定的ですか? 中立的ですか? Stanford CoreNLP コンポーネントと数...

レポート:データセンターは人工知能を生成するサーバーを冷却するために大量の水を消費している

ChatGPT のような生成 AI モデルが大量のエネルギーを消費することはよく知られていますが、そ...

...

滴滴出行のスマート交通建設における3つの短期目標:信号機の改善、バスシステムのオンライン化、予測スケジュール

[51CTO.comより] 両会期中の政府活動報告に人工知能が盛り込まれた。万鋼科学技術部長は、中国...

...

...

資本の饗宴は続く:2021年上半期の生体認証分野における資金調達のレビュー

近年、5Gが話題になっていますが、AIはまだ時代遅れになっていません。特に、インターネットが普及し、...

...

ロボットが「自己認識」を持つためには、まず自分の声を認識する必要があるのでしょうか?

人工知能の発展の波の中で、人間はロボットが自己認識を持つことに対して非常に警戒心を抱いています。結局...

1.2兆パラメータ:Googleの汎用スパース言語モデルGLaM、小サンプル学習がGPT-3を上回る

[[439859]]近年、モデルの規模はどんどん大きくなっています。例えば、2018年に登場したGP...

Google エンジニア: AI テクノロジーにより、5 年以内に人間とコンピューターの会話が実現する

人間の言語を習得することはコンピューターにとって依然として課題だが、グーグルのエンジニアは人工知能(...

空飛ぶ脳?ヒントン氏のツイートは白熱した議論を引き起こした。ニューラルネットワークは鳥が飛ぶための「羽」なのか?

[[407838]]ヒントン氏はツイッターでちょっとした議論を始めた。「ニューラルネットワークを設...

顔認証は必見!顔のなりすまし防止、クロスポーズ認識などを実現する方法を学ぶための 5 つの論文 (リンク付き)

[[281197]] [はじめに] 顔認識はコンピュータビジョンにおける最大の研究分野の一つです。...