確率的勾配降下法(しばしばSGDと略記される)は、微分可能性や劣微分可能性などの適切な滑らかさの性質を持つ目的関数を最適化するための反復法である。これは勾配降下最適化の確率的近似とみなすことができる。なぜなら、データセット全体から計算される実際の勾配を、データのランダムに選択された部分集合から計算されるその推定値に置き換えるからである。特に高次元の最適化問題では、これにより非常に高い計算負荷が軽減され、収束率の低下と引き換えに、より速い反復が達成される。確率近似の背後にある基本概念は、1950年代のRobbins–Monroアルゴリズムに遡ることができる。今日、確率的勾配降下法は機械学習および関連分野において重要な最適化手法となっている。
統計的推定と機械学習の両方は、和の形を持つ目的関数、すなわちQ(w) = (1/n) Σ Q_i(w)を最小化する問題を考える。ここで、Q(w)を最小化するパラメータwが推定されるべきものである。各加数関数Q_iは通常、訓練に使用されるデータセット内のi番目の観測値に関連付けられる。古典的な統計学では、和の最小化問題は、独立な観測値に対する最小二乗法や最尤推定において生じる。和の最小化子として生じる推定値の一般的なクラスはM推定値と呼ばれる。しかし、統計学では、いくつかの最尤推定問題に対して局所最小化でさえ要求することが厳しすぎると長い間認識されてきた。したがって、現代の統計理論家は、尤度関数の停留点、またはその導関数であるスコア関数や他の推定方程式の零点をしばしば考慮する。和の最小化問題は経験リスク最小化でも生じ、そこではQ_i(w)はi番目の例における損失関数の値であり、Q(w)は経験リスクである。
上記の関数を最小化するために使用される場合、標準的な(または「バッチ」)勾配降下法は以下の反復を実行する:w := w - η ∇Q(w) = w - (η/n) Σ ∇Q_i(w)。ステップサイズはηで表され、機械学習では学習率と呼ばれることもあり、":="はアルゴリズムにおける変数の更新を表す。多くの場合、加数関数は単純な形を持ち、和関数および和勾配の評価を安価に実行できる。例えば、統計学では、一パラメータ指数族は経済的な関数評価と勾配評価を可能にする。しかし、他の場合では、和勾配の評価にはすべての加数関数からの勾配の高価な評価が必要となる場合がある。訓練セットが膨大で単純な公式が存在しない場合、勾配の和の評価は非常に高価になる。なぜなら、勾配の評価にはすべての加数関数の勾配の評価が必要だからである。毎回の反復における計算コストを節約するために、確率的勾配降下法は各ステップで加数関数の部分集合をサンプリングする。これは大規模な機械学習問題の場合に非常に効果的である。
反復法
確率的(または「オンライン」)勾配降下法では、Q(w)の真の勾配は単一サンプルでの勾配によって近似される:w := w - η ∇Q_i(w)。アルゴリズムが訓練セットを走査するにつれて、各訓練サンプルに対して上記の更新を実行する。アルゴリズムが収束するまで訓練セットに対して複数のパスを行うことができる。これを行う場合、サイクルを防ぐために各パスでデータをシャッフルすることができる。典型的な実装では、アルゴリズムが収束するように適応学習率を使用する場合がある。擬似コードでは、確率的勾配降下法は次のように提示できる:
- 初期パラメータベクトルwと学習率ηを選択する。
- 収束するまで繰り返す:
- 訓練サンプルをシャッフルする。
- 各訓練サンプルiについて:
- 勾配∇Q_i(w)を計算する。
- パラメータを更新する:w := w - η ∇Q_i(w)。
真の勾配と単一サンプルでの勾配を計算することの間の妥協点は、各ステップで複数の訓練サンプル(「ミニバッチ」と呼ばれる)に対する勾配を計算することである。これは、記述された「真の」確率的勾配降下法よりも大幅に良い性能を発揮できる。なぜなら、コードは各ステップを個別に計算する代わりにベクトル化ライブラリを利用できるからであり、これは1986年の論文で初めて示され、「バンチモード誤差逆伝播アルゴリズム」と呼ばれた。また、各ステップで計算される勾配がより多くの訓練サンプルで平均化されるため、より滑らかな収束をもたらす場合もある。
確率的勾配降下法の収束は、凸最小化と確率近似の理論を用いて分析されている。簡単に言えば、学習率ηが適切な速度で減少し、比較的緩やかな仮定の下で、目的関数が凸または擬凸である場合、確率的勾配降下法は大域的最小値に概収束し、そうでない場合は局所的最小値に概収束する。これは実際にはRobbins–Siegmundの定理の帰結である。
線形回帰
一連の訓練例(x_i, y_i)に直線y = w^T xを当てはめたいと仮定する。目的関数は平均二乗誤差である:Q(w) = (1/n) Σ (y_i - w^T x_i)^2。単一の例に対する勾配は∇Q_i(w) = -2 (y_i - w^T x_i) x_iである。確率的勾配降下法では、更新則はw := w + 2η (y_i - w^T x_i) x_iとなる。これは、1960年にバーナード・ウィドローとテッド・ホフによって導入された最小平均二乗(LMS)アルゴリズム、別名ウィドロー・ホフ則と等価である。LMSアルゴリズムは確率近似の古典的な例であり、適応信号処理で広く使用されてきた。
機械学習における応用
確率的勾配降下法は、ニューラルネットワーク、特に深層学習モデルの訓練における中核的な最適化アルゴリズムである。現代の深層学習では、SGDとその変種は、分類におけるクロスエントロピーや回帰における平均二乗誤差などの損失関数を最小化するために使用される。大規模データセットを扱う際のアルゴリズムの効率性は、大規模言語モデルなどで使用される巨大なコーパスでのモデル訓練に不可欠である。例えば、2017年の論文「Attention Is All You Need」でヤコブ・ウシュコレイト、ルカシュ・カイザーらによって導入されたトランスフォーマーベースのモデルの訓練は、SGDまたはAdamオプティマイザのような適応的変種に依存している。
SGDはまた、コンピュータビジョン、自然言語処理、強化学習など、人工知能の他の分野でも使用されている。強化学習では、ポリシー勾配法のように、ポリシーと価値関数のパラメータを更新するためにSGDが使用される。アルゴリズムの確率的性質により、非凸最適化問題において局所最小値から脱出することが可能であり、これは複雑な損失ランドスケープを持つ深層ネットワークの訓練にとって特に重要である。
変種と改良
確率的勾配降下法には、収束性と安定性を改善するためにいくつかの変種が開発されている。一般的な改良の一つはモメンタムの使用であり、これは一貫した方向の勾配を加速し、振動を抑えるために速度ベクトルを蓄積する。もう一つはネステロフ加速勾配であり、これは先読み位置で勾配を計算する。Adamオプティマイザのような適応的学習率法は、勾配の一次モーメントと二次モーメントの推定に基づいてパラメータごとに学習率を調整する。これらの方法は実際に広く使用されており、ニューラルネットワーク訓練のためのデフォルトのオプティマイザと見なされることが多い。
その他の関連技術には、時間とともに学習率を調整する学習率スケジュールや、大きな勾配をスケーリングダウンして爆発的勾配を防ぐ勾配クリッピングが含まれる。バッチ正規化とレイヤー正規化は、SGDと併用して訓練を安定させ、より高い学習率を可能にするためにしばしば使用される。さらに、XavierやHe初期化などの重み初期化戦略は、効果的なSGD訓練にとって重要である。
課題と考慮事項
確率的勾配降下法における主な課題の一つは、学習率の選択である。学習率が高すぎるとアルゴリズムは発散する可能性があり、低すぎると収束が遅くなる可能性がある。実際には、学習率スケジュールや適応的手法を用いてこの問題を緩和する。もう一つの課題は、データのサブセットを使用することによって生じるノイズであり、これは損失の変動を引き起こす可能性がある。しかし、このノイズは有益な場合もあり、アルゴリズムが鋭い最小値から脱出し、より平坦な最小値を見つけて一般化を改善するのに役立つ可能性がある。
SGDは特徴量のスケーリングに敏感であるため、特徴量の正規化がしばしば推奨される。ミニバッチサイズの選択も性能に影響を与える。小さなバッチはより多くのノイズを導入するが、必要なメモリは少なく、大きなバッチはより滑らかな勾配を提供するが、一般化が悪くなる可能性がある。分散訓練では、SGDは同期または非同期更新などの技術を使用して並列化でき、TensorFlowやPyTorchなどのフレームワークで実装されている。
歴史的背景
確率的勾配降下法のルーツは、1951年にハーバート・ロビンスとサットン・モンロによって開発されたロビンス・モンロアルゴリズムに遡る。これは、根を見つけるための確率的近似のアイデアを導入した。1960年代には、バーナード・ウィドローとテッド・ホフによるLMSアルゴリズムが、適応フィルタリングに同様の原理を適用した。ニューラルネットワーク訓練との関連は、1980年代にバックプロパゲーションが普及したことで確立された。1986年、デビッド・ルメルハート、ジェフリー・ヒントン、ロナルド・ウィリアムズは、内部表現を学習するためのSGDを用いたバックプロパゲーションの有効性を示す論文を発表した。それ以来、SGDは機械学習の基礎となり、画像認識、音声認識、自然言語処理などの分野でのブレークスルーを可能にした。
2010年代には、深層学習の台頭と、NVIDIAやAMDのGPUなどの大規模データセットと強力なハードウェアの利用可能性が、SGDの採用を加速させた。スタンフォードAIラボ、バークレーAIリサーチ、トロント大学などの研究機関が、理論的および実践的な進歩に貢献した。今日、SGDは依然として活発な研究分野であり、その一般化特性の理解と新しい変種の開発に関する研究が進行中である。