確率的勾配降下法(しばしばSGDと略記)は、微分可能性や劣微分可能性などの適切な滑らかさの性質を持つ目的関数を最適化するための反復法である。これは、全データセットから計算される実際の勾配を、ランダムに選択されたデータの部分集合から計算される勾配の推定値で置き換えるため、勾配降下法最適化の確率的近似と見なすことができる。特に高次元の最適化問題では、これにより非常に高い計算負荷が軽減され、収束率と引き換えに反復を高速化できる。確率的近似の背後にある基本概念は、1950年代のRobbins-Monroアルゴリズムに遡ることができる。今日、確率的勾配降下法は、機械学習およびより広く人工知能において重要な最適化手法となっている。
背景
統計的推定と機械学習はどちらも、和の形式を持つ目的関数の最小化問題を考える:Q(w) = (1/n) * sum_{i=1}^{n} Q_i(w)。ここで、Q(w)を最小化するパラメータwが推定される。各加数関数Q_iは通常、トレーニングに使用されるデータセット内のi番目の観測値に関連付けられる。古典的な統計学では、和の最小化問題は、最小二乗法や、独立した観測に対する最尤推定において発生する。和の最小化として生じる推定量の一般的なクラスは、M推定器と呼ばれる。しかし、統計学では、和の最小化のための局所最小化でさえ、最尤推定のいくつかの問題に対しては制約が強すぎることが長い間認識されてきた。そのため、現代の統計理論家は、尤度関数の停留点、またはその導関数であるスコア関数の零点、および他の推定方程式を考慮することが多い。
和の最小化問題は、経験リスク最小化でも発生する。そこでは、Q_i(w)はi番目の例における損失関数の値であり、Q(w)は経験リスクである。上記の関数を最小化するために使用される場合、標準的な(または「バッチ」)勾配降下法は、w := w - eta nabla Q(w) = w - (eta/n) sum_{i=1}^{n} nabla Q_i(w) という形式の反復を実行する。ステップサイズはetaで表され、機械学習では学習率と呼ばれることもあり、記号「:=」はアルゴリズムにおける変数の更新を示す。
多くの場合、加数関数は単純な形式を持ち、和関数と和勾配の評価を安価に行うことができる。例えば、統計学では、一パラメータ指数族は経済的な関数評価と勾配評価を可能にする。しかし、他の場合では、和勾配の評価にはすべての加数関数からの勾配の高価な評価が必要となることがある。トレーニングセットが膨大で単純な公式が存在しない場合、勾配の評価には全ての加数関数の勾配の評価が必要となるため、勾配の和の評価は非常に高価になる。毎回の反復での計算コストを節約するために、確率的勾配降下法は各ステップで加数関数の部分集合をサンプリングする。これは大規模な機械学習問題において非常に効果的である。
反復法
確率的(または「オンライン」)勾配降下法では、Q(w)の真の勾配は単一のサンプルでの勾配によって近似される:w := w - eta * nabla Q_i(w)。アルゴリズムがトレーニングセットを一周するにつれて、各トレーニングサンプルに対して上記の更新を実行する。アルゴリズムが収束するまで、トレーニングセットを複数回通過させることができる。これを行う場合、サイクルを防ぐためにデータをパスごとにシャッフルすることができる。典型的な実装では、収束を確実にするために適応的な学習率を使用する場合がある。
真の勾配と単一サンプルでの勾配を計算することの妥協点として、各ステップで複数のトレーニングサンプル(「ミニバッチ」と呼ばれる)に対する勾配を計算する方法がある。これは、コードが各ステップを個別に計算するのではなくベクトル化ライブラリを利用できるため、前述の「バンチモードバックプロパゲーションアルゴリズム」の文脈で最初に示されたように、記述された確率的勾配降下法よりも大幅に良い性能を発揮することがある。また、各ステップで計算される勾配がより多くのトレーニングサンプルで平均化されるため、より滑らかな収束をもたらすこともある。
確率的勾配降下法の収束は、凸最小化と確率的近似の理論を用いて分析される。簡潔に述べると、学習率etaが適切な率で減少し、適切な仮定が満たされる場合、確率的勾配降下法は凸関数または擬凸関数に対してほぼ確実に大域的最小値に収束し、それ以外の場合は局所的最小値に収束する。これは実際にはRobbins-Siegmund定理の帰結である。
線形回帰
トレーニング例の集合(x_i, y_i)に最小二乗法を用いて直線y = a + bxを適合させることを考える。目的関数はQ(a, b) = (1/n) sum_{i=1}^{n} (y_i - (a + bx_i))^2である。バッチ勾配降下法では、すべてのn個の例を使用してaとbに関する勾配を計算する。一方、確率的勾配降下法は、ランダムな例iを選び、その例の二乗誤差の勾配のみを使用してaとbを更新する:a := a - eta (-2)(y_i - (a + bx_i))、およびb := b - eta (-2)x_i(y_i - (a + bx_i))。これは、特にnが大きい場合、反復ごとの計算がはるかに安価である。
機械学習への応用
確率的勾配降下法は、ニューラルネットワークや深層学習モデルの訓練における基礎となる手法である。これらの文脈では、目的関数は通常経験リスクであり、損失関数は予測出力と実際の出力の間の不一致を測定する。例えば、自然言語処理のためのトランスフォーマーモデルの訓練では、SGDまたはその変種が、テキストデータのミニバッチに基づいてネットワークの重みを更新するために使用される。この方法は、大規模言語モデルのような大規模問題、特に数十億のトークンで構成されるデータセットを含む問題に対して特に効果的である。
SGDはまた、コンピュータビジョン、強化学習、生成AIなどの他の領域にも応用されている。生成AIでは、OpenAIのGPTシリーズやAnthropicのClaudeなどのモデルが、確率的最適化技術を用いてトレーニングされる。運動量を用いたSGDやAdamなどのオプティマイザの選択は、収束の速度と品質に大きな影響を与える。
変種と改良
確率的勾配降下法の限界に対処するために、いくつかの変種が開発されてきた。これには、SGDの変種として、運動量、ネステロフ加速勾配、AdaGrad、RMSProp、およびAdamが含まれる。各変種は更新則を変更して収束特性を改善する。例えば、運動量は前回の更新の一部を現在の更新に加えることで、正しい方向への勾配を加速し、振動を減衰させる。Adam(Adaptive Moment Estimationの略)は、勾配の一次モーメントと二次モーメントの推定値に基づいて適応されるパラメータごとの学習率を維持する。
もう一つの重要な改良は、学習率スケジュールの使用である。これは、トレーニング中に学習率を調整する。一般的なスケジュールには、ステップ減衰、指数減衰、コサインアニーリングがある。これらのスケジュールは、最適化の進行に伴ってステップサイズを減少させることで、アルゴリズムの収束をより確実にする。
SGDと相互作用する他の手法には、閾値を超える勾配をスケールダウンして爆発的勾配を防ぐGradient Clipping、および各層への入力分布を安定させ、より高い学習率を可能にすることが多いBatch NormalizationとLayer Normalizationがある。
収束と課題
SGDは計算効率が高い一方で、勾配推定に分散が生じ、損失が変動する可能性がある。SGDの収束速度は、反復回数の観点ではバッチ勾配降下法よりも一般に遅いが、反復ごとの計算コストが低いため、全体的なトレーニングは高速になる。ミニバッチサイズの選択は重要なハイパーパラメータである。ミニバッチサイズが小さいとメモリ使用量が少なくなるが勾配推定の分散が大きくなり、大きいと分散は小さくなるが計算コストが増加する。
SGDは、非凸最適化問題、特にディープニューラルネットワークのトレーニングにおいて、局所的最小値や鞍点に収束することがある。これらの課題に対処するために、運動量、学習率スケジュール、およびAdamなどの適応学習率法など、さまざまなヒューリスティクスが開発されてきた。さらに、平坦な極小値は鋭い極小値よりも一般化が良いことが多く、SGDの挙動は損失景観の形状に影響されることが観察されている。これらの現象は、最適化と一般化の間の複雑な相互作用を浮き彫りにしている。
関連項目
- machine learning (機械学習)
- Neural network (ニューラルネットワーク)
- large language model (大規模言語モデル)
- Deep learning (深層学習)
- backpropagation (誤差逆伝播法)
- overfitting (過学習)