ディープラーニングの最適化手法の簡単な紹介: 勾配降下法

ディープラーニングの最適化手法の簡単な紹介: 勾配降下法

実際、ディープラーニングは多くの厄介な最適化問題を解決しています。ニューラル ネットワークは、問題に対する数学的な解決策を表す数百万のパラメーターを持つ非常に複雑な関数です。画像分類を例にとると、AlexNet は、画像の RGB 値を表す配列を入力として受け取り、分類スコアのセットを出力する数学関数です。

本質的には、ニューラル ネットワークをトレーニングすることで、損失関数を最小化します。この損失関数の値は、特定のデータセットにおけるネットワークのパフォーマンスが完璧からどれだけ離れているかを測定します。

[[237356]]

1. 損失関数

簡単にするために、ネットワークには 2 つのパラメータしかないと仮定しましょう。実際にはその数は数十億単位ですが、視覚化を試みて気が狂わないように、この投稿では 2 つのパラメータの例に固執します。適切な損失関数の概要は次のようになります。

1. 損失関数の概要

なぜこれが素晴らしい損失関数だと言えるのでしょうか? このプロファイルを持つ損失関数はサンタクロースのようなもので、存在しないからです。しかし、勾配降下法に関する最も重要なアイデアのいくつかを全体的に理解するのに役立つ優れた教育ツールであることに変わりはありません。では、ここから始めましょう。

x 軸と y 軸はそれぞれ 2 つの重みを表し、z 軸は 2 つの特定の重みが与えられた損失関数の値を表します。私たちの目標は、損失を最小化する特定の重みを見つけることです。この点は損失関数の最小点と呼ばれます。

最初に重みをランダムに初期化したため、ニューラル ネットワークは酔っているかのように動作し、猫の写真を人物として分類する可能性があります。この状況は損失関数の等高線の点 A に対応し、ネットワークのパフォーマンスが非常に悪く、したがって損失も高くなります。

損失関数の値が最小となる「谷底」のポイント B に移動する方法を見つける必要があります。それで私たちは何をするのでしょうか?

2. 勾配降下法

重みを初期化すると、損失関数グラフのポイント A に到達します。最初に行うことは、xy 平面で可能なすべての方向を調べて、損失関数の降下が最も急な方向を確認することです。これは、勾配の方向と正反対の、移動しなければならない方向です。勾配は高次元導関数の別名であり、最も急な上昇の方向を示します。

この概念を理解するには、次の図を見てください。表面上の任意の点に接する平面を定義できます。高次元では、常に超平面を定義できますが、ここでは 3 次元に固執します。そして、この平面には無限の方向が存在します。その中で、正確には、関数が最も速く上昇する方向は勾配によって与えられる唯一の方向であり、反対の方向は最も速く下降する方向です。これがアルゴリズムの名前の由来です。勾配の方向に降下するので、勾配降下法と呼ばれます。

前進する方向が決まったので、次にどの程度のステップを踏む必要があるかを決める必要があります。下降ステップのサイズを制御するパラメータが学習率です。これを最小限に抑えるには、学習率を慎重に選択する必要があります。

あまりに速く移動すると、最小値を超えて「谷」の尾根に沿って跳ね回り、最小値に到達できなくなる可能性があります。動きが遅すぎると、トレーニングに時間がかかりすぎて実行できなくなる可能性があります。また、学習率が遅すぎると、アルゴリズムが最小値に落ちてしまう可能性もあります。これについては、この記事の後半で説明します。

勾配と学習率がわかったら、移動を開始し、最終的な位置で勾配を再計算し、このプロセスを繰り返します。

勾配の方向は、勾配が最も速く上昇する方向を示し、勾配の大きさは、最も急な上昇/下降の角度を示します。したがって、少なくとも表面プロファイルはほぼ平坦になり、勾配はほぼゼロになると予想されます。実際、最小点の勾配は 0 です。

勾配降下法

学習率が大きすぎる

実際には、正確な最小値に到達することは決してないかもしれませんが、最小値の周りの平坦な領域で振動することはできます。この領域で振動する場合、損失値はほぼ到達可能な最小値となり、真の最小値の周りを飛び回っているため、あまり変化しません。通常、10 回または 20 回の反復など、事前に決められた回数内で損失が改善されない場合は反復を停止します。これが起こると、トレーニングが収束した、または収束が達成されたと言われます。

2. よくある間違い

ちょっと脱線させてください。勾配降下法の視覚化を検索すると、上のアニメーションのように、ある点から始まり最小値で終わる軌跡が表示される可能性が高くなります。しかし、この勾配降下法の説明は正確ではありません。得られる軌道は、重みを含む xy 平面に完全に限定されます。

上のアニメーションが示すように、勾配降下法では Z 方向の移動は発生しません。 x軸とy軸方向のみで記述される重みは自由パラメータであるためです。実際の軌道は、以下に示すように xy 平面で定義されます。

実際の勾配降下軌道

xy 平面の各点は重みの一意の組み合わせを表し、最小値で記述される重みのセットが必要です。

3. 基本方程式

勾配降下法の更新規則を記述する基本方程式は次のとおりです。

更新は各反復で実行されます。ここで、w は xy 平面にある重みベクトルです。このベクトルから、学習率 α と重みに関する損失関数の勾配を減算します。勾配は、損失関数が最も速く上昇する方向を示すベクトルです。最速降下の方向は勾配の方向と反対であるため、重みベクトルから勾配ベクトルが減算されます。

ベクトルを視覚化するのが少し難しい場合は、ほぼ同じ更新ルールがネットワーク内のすべての重みに同時に適用されます。唯一の変更点は、各重みの更新を個別に実行し、上記の式の勾配が、その特定の重みの方向に沿った勾配ベクトルの投影に置き換えられたことです。

すべての重みに対して同時に更新が実行されます。

減算を行う前に、勾配ベクトルに学習率を掛けます。これは先ほど説明した手順です。学習率を一定に保ったとしても、勾配サイズ、つまり損失関数プロファイルの急峻さが変化するため、ステップ サイズが変化することを覚えておいてください。最小値に近づくにつれて、勾配は 0 に近づき、最小値に近づくためのステップはますます小さくなります。

理論的には、アルゴリズムが最小値に近づくときに小さなステップを実行するようにしたいので、これは良いことです。ステップ サイズが大きすぎると、最小値がスキップされ、最小の尾根の間を行ったり来たりする可能性があります。

勾配降下法で使用される一般的な手法は、固定学習率ではなく可変学習率を使用することです。最初は、より大きな学習率を使用できます。しかし、後になって最小値に近づくにつれて、速度を落とす必要があります。この戦略を実装する 1 つの方法は、学習率が減少するシミュレーテッド アニーリングです。この場合、学習率は最大反復回数にわたって徐々に低下します。

4. 勾配降下法チャレンジ1: 局所最小値

ここまでのところ、勾配降下法の話は本当に良さそうです。では、公開しましょう。先ほど、優れた損失関数と存在しない損失関数があると言いましたが、それは存在しません。

まず、ニューラル ネットワークは複雑な関数であり、想定される関数には多数の非線形変換が導入されています。結果として得られる損失関数はあまり良くないように見えますが、ここでも収束できる最小点は 1 つしかありません。実際、この理想的な損失関数は「凸関数」(常に上向きに曲がる関数)と呼ばれますが、深層ネットワークの損失関数が凸になることはほとんどありません。実際には、次のようになります。

上図では、勾配が 0 になる局所最小点があります。しかし、私たちが到達したい地球の最小点は達成不可能です。ここで、ポイント A で重みを初期化すると、局所的最小値に収束します。この最小値に収束すると、勾配降下法ではそこから抜け出すことができなくなります。

勾配降下法は勾配によって駆動され、勾配は任意の最小点で 0 になります。局所最小値は、この点での損失関数の値が局所領域内で最小となるため、局所最小値と呼ばれます。大域的最小値は、その点における損失関数の値が領域全体で最小となるため、大域的最小値と呼ばれます。

さらに悪いことに、私たちが検討した 3D 損失関数プロファイルは実際には決して発生しないため、損失関数プロファイルははるかに複雑になる可能性があります。実際には、ニューラル ネットワークには約 10 億の重みがあり、約 (10 億 + 1) 次元の関数が得られます。

実際、これほど多くの次元を持つ関数がどのようなものになるのか想像するのは困難です。しかし、ディープラーニングの分野には現在、優秀な人材が溢れており、損失関数の輪郭を 3D で視覚化する方法も解明されています。最近の論文では「フィルター正規化」と呼ばれる手法が提案されていますが、その説明はこの記事の範囲を超えています。しかし、これは、私たちが扱っている損失関数の根本的な複雑さを垣間見ることができます。たとえば、次の図は、CIFAR-10 データセット上に構築された VGG-56 の損失関数の 3D アーキテクチャです。

複雑な損失関数の画像

ご覧のとおり、至る所に局所的最小値があります。

5. 勾配降下法チャレンジ 2: 鞍点

勾配降下法の限界について私たちが学んだ基本的な教訓は、勾配がゼロの領域に到達すると、最小点がどれだけ優れていてもそこから抜け出すことはほぼ不可能だということです。私たちが直面するもう 1 つのタイプの問題は、次の形状を持つ鞍点です。

サドルポイント

前の画像では、2 つのピークが交わる鞍点も確認できます。

サドルポイントは、鞍に似た形状からその名前が付けられています。これは x 方向では最小値ですが、他の方向では極大値であり、x 方向に沿って平坦になった場合、最急降下法は x 軸上で振動し、y 軸に沿って下降し続けることができなくなり、最小値に収束したという錯覚が生じます。

6. ランダム性が救いの手となる

では、グローバル最適値に収束しようとしながら、ローカル最小値と鞍点から抜け出すにはどうすればよいのでしょうか? 答えは、確率的勾配降下法を使用することです。

これまで、トレーニング セット内のすべての可能な例の損失値を合計することによって得られる損失関数を使用して、勾配降下法を実行してきました。局所的最小値または鞍点に入ると、行き詰まってしまいます。勾配降下法がこれらのジレンマを回避するのに役立つ方法の 1 つは、確率的勾配降下法です。

確率的勾配降下法では、すべての損失関数を合計して損失関数の勾配を計算するのではなく、ランダムにサンプリングされた(置換なしの)例 1 つだけの損失の勾配を計算する手順を実行します。確率的勾配降下法では、すべての例をバッチで処理する以前の方法とは対照的に、各例はランダムに選択されるため、バッチ勾配降下法と呼ばれます。

更新ルールもそれに応じて変更されました。

つまり、各ステップで使用する損失関数は、実際の損失関数 (各例の損失関数の合計) とは異なります。特定のポイントにおけるこの「1 サンプル損失関数」の勾配は、実際には「全サンプル損失関数」の勾配とわずかに異なる方向を指す場合があります。

つまり、「全サンプル損失関数」の勾配は局所的最小値に追い込んだり、鞍点に閉じ込めたりする可能性がある一方で、この「1 つのサンプル損失関数」の勾配は別の方向を指し示し、こうした状況を回避するのに役立つ可能性があります。

「全サンプル損失関数」の局所最小点も考慮する必要があります。バッチ勾配降下法を使用する場合、勾配は常に局所最小値を指すため、ここで行き詰まってしまいます。ただし、確率的勾配降下法を使用する場合、この点は「1 サンプル損失関数」輪郭の局所的最小値付近ではない可能性があり、局所的最小値点から遠く離れてしまいます。

ワンショット損失関数の局所的最小値に陥った場合でも、次のランダムにサンプリングされたポイントでのワンショット損失関数の損失が異なる場合があり、移動を継続できます。

収束すると、ほぼすべての「1 サンプル損失関数」の最小値に収束します。経験上、サドルポイントは非常に不安定であり、軽く押すだけで脱出できることもわかっています。

では、これは実際には 1 サンプルの確率的勾配降下法を使用すべきであることを意味するのでしょうか?

7. バッチサイズ

答えはノーです。理論上は、確率的勾配降下法が最良の結果をもたらす可能性がありますが、計算の観点からはあまり実現可能なオプションではありません。勾配降下法では、個々の損失関数をすべて加算して得られる関数を使用する場合、個々の損失関数すべての勾配を並列に計算できますが、確率的勾配降下法を使用する場合は、勾配の計算を 1 つずつ順番に実行する必要があります。

つまり、私たちがやっていることはバランスを取る行為なのです。データセット全体または単一のサンプルを使用するのではなく、固定数 (16、32、128 など) のサンプルを使用してミニバッチを形成し、損失関数を構築します。この用語は、すべての例を一度に処理すること (通常はバッチ勾配降下法と呼ばれます) とは対照的です。ミニバッチのサイズは、十分な並列計算能力を活用しながら、局所最小値から脱出するのに十分なランダム性を確保できるように選択されます。

8. 極小値の再考:思ったほど悪くない

急いで局所最小値に反論しないでください。最近の研究では、局所最小値は必ずしも悪いものではないことが示唆されています。ニューラル ネットワークの損失の場合、最小値が非常に多いため、優れた局所最小値は、グローバル最小値と同じくらい優れている可能性があります。

なぜ良いと言うのでしょうか? それは、不安定なトレーニング サンプルによってローカル最小値に陥ってしまう可能性があるからです。文献に記載されているように、良好な局所最小値、または最適な局所最小値は、特定のニューラル ネットワークの高次元損失関数に多数存在する場合もあります。

多くのニューラル ネットワークが分類タスクを実行していることにも気付くでしょう。ローカル最小値が 0.7 ~ 0.8 の正しいラベル スコアに対応し、グローバル最小値が 0.95 ~ 0.98 の正しいラベル スコアを生成する場合、両方によって出力される予測ラベル結果は同じになります。

最小値の望ましい特性は、それが平坦な側にあることです。なぜでしょうか? 平坦な最小値は収束しやすく、最小値を超えてしまったり、最小値の尾根間を飛び越えたりする可能性が低いためです。

さらに重要なのは、テスト セットの損失表面が、トレーニングに使用したトレーニング セットの損失表面とわずかに異なることが予想されることです。平らで幅の広い最小値の場合、この変更による損失はあまり変わりませんが、比較的狭い最小値の場合はそうではありません。私たちが言いたいのは、より平坦な最小値の方が一般化しやすく、したがって望ましいということです。

9. 学習率の再検討

最近、損失関数における準最適最小値に対する学習率スケジューリングに関する研究が急増しています。学習率を下げても、局所的最小値に陥る可能性があります。従来、トレーニングは固定回数の反復後に完了するか、損失値が改善されない場合は固定回数の反復後 (10 回など) に停止されます。この状況は文献では早期停止と呼ばれています。

より速い学習率を使用すると、トレーニングの早い段階でいくつかの局所最小値をスキップするのにも役立ちます。

また、早期停止と学習率の低下を組み合わせることもあります。学習率の低下では、10 回の反復後に損失関数が改善されない場合に学習率が低下し始め、学習率が特定のしきい値を下回ると最終的に停止します。

近年、学習率がゆっくりと増加し、その後ゆっくりと減少するというサイクルを繰り返す、循環学習率が人気になっています。

Leslie N. Smith によって提案された三角形および三角形 2 巡回学習率法。左側の最大学習率と最小学習率は変更されません。右側の違いは、各エポックの後に学習率が半分になることです。画像提供: Hafidz Zulkifli

ウォーム リスタートによるいわゆる確率的勾配降下法は、基本的に学習率を下限まで焼きなまし、その後学習率を初期値に戻します。

また、学習率の減少方法についても、たとえば指数関数的減少から余弦関数的減少まで、さまざまなスキームがあります。

再起動と組み合わせたコサインアニーリング

最近の論文では、「確率的加重平均」と呼ばれる手法が紹介されています。著者らは、まず最小値に収束し、重みをキャッシュし、次に学習率をより高い値に復元する方法を提案した。この高い学習率により、アルゴリズムは最小値から損失面内のランダムなポイントへと移動します。次に、アルゴリズムは別の最小値に再び収束するようにします。これを数回繰り返し、最後にキャッシュされたすべての重みセットからの予測を平均して、最終的な予測を生成します。

ランダム加重平均法

10. 結論

つまり、これは勾配降下法の入門記事であり、バックプロパゲーションに関する独創的な論文でニューラル ネットワークは勾配を計算することでトレーニングできることが示されて以来、ディープラーニングにおける最適化に関するすべての研究の原動力となっているものです。ただし、この投稿で取り上げていない勾配降下法には欠けている部分が 1 つあります。それは、病的な曲率の問題への対処です。この重要な問題を克服するために、Momentum、RMSProp、Adam などの古典的な確率的勾配降下法の拡張が使用されます。

オリジナルリンク: https://blog.paperspace.com/intro-to-optimization-in-deep-learning-gradient-descent/

[この記事は51CTOコラム「Machine Heart」、WeChatパブリックアカウント「Machine Heart(id:almosthuman2014)」によるオリジナル翻訳です]

この著者の他の記事を読むにはここをクリックしてください

<<:  人工知能の時代において、従来のメディアはどのようにしてニュースの取り組みを守ることができるのでしょうか?

>>:  人工知能の最初のグループが解雇された

ブログ    

推薦する

新しいNeRF技術は、ビデオを簡単に制御できる3Dモデルに変換できます。

翻訳者 |ブガッティレビュー | Chonglou人間の動きが複雑で、環境によって見た目が微妙に異な...

人と「人」の対立を実感する: よく使われるAIセキュリティツールのインベントリ

今日、サイバー犯罪者は機械学習や人工知能などの新しいテクノロジーを使用して、標的の行動をより深く理解...

JVM 世代別ガベージコレクションのプロセスとアルゴリズムの選択の図解説明

この記事は、JVM の世代別ガベージ コレクション プロセスを紹介し、さまざまなガベージ コレクショ...

21 世紀においてインテリジェント オートメーションは誇張されすぎているのでしょうか?

[[427549]] Analytics Insight では、21 世紀においてインテリジェント...

...

スマートシティが公衆衛生危機の影響を緩和する方法

IETスマートシティジャーナルに掲載された論文「COVID-19パンデミック:新たな流行に対応するた...

Twitter が名前を X に変更し、マスク氏が X の世界を爆発させた! AIから宇宙探査まで、ユニバーサルアプリが形になりつつある

今、ボス・マーの「Xユニバース」がまた成長しました。それ以来、Twitter は単なるソーシャル ネ...

ビットコインマイニング技術: 分散データストレージ、ピアツーピア伝送、コンセンサスメカニズム、暗号化アルゴリズム...

1. 説明ブロックチェーンは、オープンなデータ操作、改ざん不可能、追跡可能性、国境を越えた分散化な...

...

フィンテック企業はリスク管理に AI をどのように活用しているのでしょうか?

[51CTO.com からのオリジナル記事] 金融テクノロジーのブームは 21 世紀以降急増してい...

AIエンジニアの成長ストーリー~働き方編~

[[409282]]この記事では、特に仕事の方法について取り上げます。エンジニアの中には非常に頭の...

将来、ロボットは人間よりもはるかに強力になります。ロボットは人間に反抗するでしょうか?

私たちは長い間、ロボットを私たちの世界から締め出すことができるのか、あるいは人間は人工知能(あるいは...

ロボットチャットGPTが登場: ビッグモデルが現実世界に登場、DeepMindの画期的な進歩

インターネット上の言語と画像を習得した後、大きなモデルが最終的に現実世界に入り、「具現化された知能」...