1.1 確率的勾配降下法の限界
確率的勾配降下法(SGD)は、大規模データセットに対する損失関数の最小化において広く用いられる手法である。しかし、SGDにはいくつかの本質的な限界が存在する。第一に、勾配の推定にランダムなサンプリングを用いるため、更新方向が不安定になり、収束経路に強い振動が生じる。特に損失関数の等高線が細長い楕円形(ill-conditioned)である場合、勾配の方向が最小値の方向と一致せず、ジグザグに進行して収束が遅くなる。第二に、SGDは単一のパラメータ更新において過去の情報を一切保持しないため、局所的な勾配のノイズに敏感であり、勾配が小さい領域では更新が停滞しやすい。これらの問題は、深層学習のようにパラメータ数が数百万を超えるモデルにおいて顕著となる。
1.2 物理的類推による発想
モーメンタム法の着想は、ニュートン力学における運動量(momentum)の概念に由来する。物理的な状況を考えると、質量を持つ物体がポテンシャル場(損失関数に対応)の中で運動するとき、その速度は過去の力の積分として蓄積される。このため、物体は谷底に向かって加速しながら進み、局所的な凹凸に惑わされにくくなる。同様に、機械学習の最適化においても、過去の勾配を「速度」として蓄積することで、現在の勾配が小さいときでも過去の勢いを保ち、また勾配の向きが急激に変化するときには慣性によって振動を抑制できる。この物理的類推が、モーメンタム法の設計原理の中核をなす。
2.1 古典的モーメンタム
2.1.1 更新式
古典的モーメンタム(Polyak, 1964)の更新式は以下のように表される。時刻tにおけるパラメータをθ_t、学習率をη、モーメンタム係数をμ(通常0.9程度)とする。まず、速度変数v_tを次のように更新する:
v_t ← μ v_{t-1} + η ∇L(θ_t)
次に、パラメータを速度に従って更新する:
θ_{t+1} ← θ_t - v_t
ここで∇L(θ_t)はミニバッチによる損失関数の勾配である。この式は、現在の勾配に加えて、過去の勾配が指数関数的に減衰しながら蓄積されることを示している。μが1に近いほど過去の影響が長く持続する。
2.1.2 ハイパーパラメータの役割
モーメンタム法には主に二つのハイパーパラメータが存在する。一つは学習率ηであり、SGDと同様に更新の大きさを調整する。もう一つはモーメンタム係数μで、通常0.5から0.99の範囲で設定される。μが大きいほど過去の勾配の蓄積が強くなり、滑らかで長期的な傾向に従う更新が行われるが、極端に大きいとオーバーシュートや発散を引き起こす可能性がある。逆にμ=0とすれば通常のSGDに一致する。実用的には、初期段階では小さめのμ(0.5程度)から始め、訓練が進むにつれて0.9や0.99に増やすことも行われる。
2.2 ネステロフ加速勾配法
2.2.1 先読み更新の原理
ネステロフ加速勾配法(Nesterov Accelerated Gradient, NAG)は、古典的モーメンタムを改良した手法であり、1983年にYurii Nesterovによって提案された。その核心は、「先読み更新」と呼ばれる機構にある。具体的な手順は以下の通りである。まず、現在のパラメータθ_tに対して、過去の速度を用いて暫定的な未来位置を計算する:
θ̃_t ← θ_t - μ v_{t-1}
次に、この未来位置における勾配∇L(θ̃_t)を計算し、速度を更新する:
v_t ← μ v_{t-1} + η ∇L(θ̃_t)
最後に、パラメータを更新する:
θ_{t+1} ← θ_t - v_t
このように、NAGは現在位置ではなく、現在の速度で進んだ先の位置での勾配を用いる点が特徴である。これにより、勾配の「先読み」が可能となり、不必要に谷を越えてしまうオーバーシュートを防ぎ、より安定した収束が実現される。
2.2.2 古典的モーメンタムとの違い
古典的モーメンタムとNAGの本質的な違いは、勾配を評価する位置にある。古典的モーメンタムでは現在のパラメータでの勾配を用いるのに対し、NAGでは速度によって移動した先の位置での勾配を用いる。この違いにより、NAGは「減速」のタイミングを早める効果があり、特に急な谷や曲率の高い領域で優れた性能を発揮する。数学的には、NAGは古典的モーメンタムよりも理論的な収束率が改善されており(凸関数においてO(1/t^2)の収束率)、深層学習の実践でもしばしば古典的モーメンタムよりも良い結果をもたらす。
3.1 収束速度の向上
モーメンタム法の最も重要な利点は、SGDに比べて収束速度が大幅に向上することである。特に損失関数の条件数が大きい場合(つまり、ある方向の曲率が他の方向に比べて極端に大きい場合)、SGDでは各方向の学習率を均一に調整できないため、収束が非常に遅くなる。モーメンタム法は速度の蓄積により、過去の勾配の主成分方向への移動を加速し、結果として収束に必要なイテレーション数を削減する。理論的には、凸関数に対して最適な収束率に近い挙動を示すことが証明されている。
3.2 振動の抑制と谷間通過
損失関数の等高線が狭く長い谷(ravine)の形状を持つ場合、SGDでは谷の壁に沿って振動しながらゆっくりと進む現象が生じる。モーメンタム法では、速度が勾配の方向の急激な変化に対して慣性として働くため、振動の振幅を抑えながら谷の底に向かってスムーズに進むことができる。例えば、谷の壁で勾配が急に反対方向を向いても、過去の速度がその変化をなまらせるため、過度なジグザグを回避できる。これにより、特に深層学習で頻繁に現れる鞍点や狭い谷を効率的に通過できる。
3.3 局所解からの脱出
モーメンタム法は、SGDに比べて局所的最小値(local minima)から脱出しやすい性質を持つ。これは、速度として蓄積された運動エネルギーが、勾配がゼロに近い平坦な領域や小さな極小値を乗り越えるための勢いを提供するためである。ただし、この性質は万能ではなく、非常に深い極小値や複雑な損失関数の地形では必ずしも脱出できるとは限らない。それでも、モーメンタムの存在により、浅い極小値に捕捉されるリスクが低減される。加えて、NAGの先読み効果は、極小値に近づく際に減速を促すため、オーバーシュートと局所解からの脱出のバランスをより良く取ることができる。
4.1 適応的モーメンタム法
4.1.1 Adamにおけるモーメンタムの役割
Adam(Adaptive Moment Estimation)は、2015年にKingma and Baによって提案された最適化アルゴリズムであり、モーメンタムの概念を適応的学習率と組み合わせた手法である。Adamでは、一次モーメント(勾配の指数移動平均)としてモーメンタムを保持し、さらに二次モーメント(勾配の二乗の指数移動平均)を用いて各パラメータの学習率をスケーリングする。具体的には、一次モーメントm_tはモーメンタムと同様の式で更新され、これにバイアス補正を施したものを更新方向として用いる。Adamにおけるモーメンタム係数β1(通常0.9)は、古典的モーメンタムのμに相当し、勾配の平滑化と加速の役割を担う。
4.1.2 RMSpropとの比較
RMSprop(Hinton, 2012)は、適応的学習率法の一種であり、勾配の二乗の移動平均を用いて学習率を調整するが、モーメンタム項を持たない。そのため、RMSpropの更新は純粋に現在の勾配のスケーリングに依存し、過去の勾配方向の履歴は直接利用しない。これに対してAdamは、RMSpropの学習率適応機能にモーメンタムを組み合わせたものと見なせる。実践的には、RMSpropは定常的な勾配の大きさに頑健である一方、急な谷や振動の多い損失関数ではモーメンタムがないために収束が不安定になる場合がある。Adamはその欠点を補い、多くのタスクで標準的な選択肢となっている。
4.2 その他の加速手法
4.2.1 Polyakの平均化
Polyakの平均化(Polyak-Ruppert averaging)は、最適化の後半でパラメータの履歴を平均化することで収束を改善する手法である。これはモーメンタムとは異なり、更新ルール自体を変更するのではなく、生成されたパラメータ系列の算術平均(または重み付き平均)を最終的な推定値として用いる。モーメンタムが移動平均を通じて更新方向を平滑化するのに対し、Polyakの平均化はパラメータ空間での平均化によって分散を低減する。両者は補完的な関係にあり、モーメンタム法と組み合わせて使用されることも多い。
4.2.2 Lookahead最適化
Lookahead(2019, Zhang et al.)は、モーメンタムとは異なる視点から収束を加速する手法である。Lookaheadでは、内部オプティマイザ(例えばSGDやAdam)を用いてkステップの通常の更新を行い、その到達点と開始点の間を補間することで「遅い更新」を行い、全体の収束経路を安定化させる。この機構は、モーメンタムが過去の勾配を蓄積するのに対し、Lookaheadは複数ステップのパラメータの遷移を考慮する点で異なる。しかし、両者とも振動を抑え、より滑らかな探索経路を実現するという共通の目的を持つ。
5.1 ハイパーパラメータ調整の指針
モーメンタム法の実践では、まず学習率ηとモーメンタム係数μのバランスが重要である。一般的な指針として、μは0.9から0.99の範囲が推奨される。μが大きすぎると発散のリスクが高まるため、学習率を小さく調整する必要がある。逆にμが小さすぎるとモーメンタムの効果が薄れる。初期値としては、μ=0.9、η=0.01(または問題に応じてさらに小さく)がよく用いられる。また、訓練の途中でμを増加させるスケジューリング(ウォームアップ後0.9→0.99など)が有効な場合がある。グリッドサーチやベイズ最適化を用いて、損失の減少曲線を観察しながら調整することが推奨される。
5.2 学習率スケジューリングとの組み合わせ
モーメンタム法は学習率スケジューリングと組み合わせることでさらなる性能向上が期待できる。例えば、学習率を段階的に減少させるステップ減衰や、コサイン減衰スケジューラーがよく利用される。モーメンタムが存在する場合、学習率が大きくてもオーバーシュートしにくくなるため、初期の学習率を高めに設定し、後半で減衰させる戦略が有効である。逆に、学習率が急激に減少すると、モーメンタムの慣性が強すぎて最適点を通過してしまう可能性があるため、減衰速度とモーメンタム係数の調整が必要となる。近年では、サイン波やサイクル的な学習率変動(Cyclical LR)とモーメンタムの組み合わせも研究されている。
5.3 大規模データセットでの効果
大規模データセットにおける訓練では、モーメンタム法の効果が特に顕著である。データ量が増えるとミニバッチごとの勾配のノイズが相対的に減少するが、それでも損失関数は複雑な地形を持つ。モーメンタムはノイズを平滑化し、安定的な更新を維持するため、訓練の初期段階での急速な損失減少を促進する。一方で、非常に大規模なデータセットや分散並列訓練では、各ワーカーの勾配の遅延や非同期更新が生じるため、標準的なモーメンタムの更新式では不安定になることがある。その場合、Nesterovモーメンタムや、勾配のクリッピング、ウォームアップ戦略を併用することが推奨される。
6.1 初期の理論(Polyak, Nesterov)
モーメンタムの概念は、1964年にBoris Polyakによって初めて提案された「Heavy Ball法」にさかのぼる。Polyakは、凸関数の最小化において、過去の更新方向を考慮することで収束を加速できることを示した。その後、1983年にYurii Nesterovは、先読み更新を導入したネステロフ加速勾配法を発表し、凸関数における最適な収束率(O(1/k^2))を達成した。これらの初期の理論は、最適化理論の基礎として長く研究されたが、当時の計算資源や応用上の制約から、機械学習の実践で広く使われるには至らなかった。
6.2 深層学習ブームによる再評価
2010年代以降、深層学習の急速な発展に伴い、大規模なニューラルネットワークの訓練が重要な課題となった。SGDの限界が顕在化する中で、モーメンタム法が再評価され、特に画像認識や自然言語処理のタスクで標準的な最適化手法として採用されるようになった。2012年のAlexNetの訓練でもモーメンタムが使用されていたことが知られている。また、2013年に提案されたNesterovモーメンタム(Sutskever et al.)は、深層学習におけるNAGの有用性を示し、その後AdamやRMSpropなどの適応的手法へと発展する基盤を提供した。
6.3 現代フレームワークへの実装状況
現在、主要な深層学習フレームワーク(TensorFlow, PyTorch, JAX, Kerasなど)では、モーメンタム法およびその派生手法が標準のオプティマイザとして実装されている。例えば、PyTorchのtorch.optim.SGDはmomentum引数で古典的モーメンタムとNesterovモーメンタムをサポートしている。TensorFlowのtf.keras.optimizers.SGDも同様である。また、Adamオプティマイザはデフォルトでモーメンタム項(β1)を含んでおり、ユーザーは特別な設定なしにその恩恵を受けることができる。これらのフレームワークでは、モーメンタム係数の自動調整や、学習率スケジューリングとの連携が容易に行えるよう設計されており、研究と実運用の両面で不可欠なツールとなっている。