1 概要と歴史

1.1 背景:確率的勾配降下法の課題

確率的勾配降下法(SGD)は機械学習最適化において広く用いられる基礎的手法であるが、学習率の固定値設定や勾配のスケール変動に対する脆弱性、スパースな勾配への非効率性などの課題を抱えていた。特に深層学習では、パラメータごとに適切な学習率が異なるため、単一の学習率では収束不安定になりやすい。

1.2 Adamの提案と普及

2014年、Diederik P. KingmaとJimmy Baは、適応的学習率とモーメンタムを統合したAdamアルゴリズムを提案した。この手法は勾配の一次モーメント(平均)と二次モーメント分散)の指数移動平均を用いることで、各パラメータの学習率を動的に調整する。提案後、その実装の容易さと幅広いタスクでの良好な性能から、深層学習コミュニティで急速に普及し、標準的な最適化手法の一つとなった。

1.3 他の適応的最適化手法との関係

Adamは、AdaGrad(適応的学習率、ただし全履歴勾配の蓄積)やRMSProp(指数移動平均による勾配二乗の利用)のアイデアを統合し、モーメンタム項(一次モーメント)を追加したものと解釈できる。これにより、スパース勾配への頑健性と滑らかな更新を両立している。

2 アルゴリズムの数学的定式化

2.1 更新式の定義

2.1.1 一次モーメントと二次モーメントの推定

時刻tにおける勾配g_tに対し、一次モーメントm_tと二次モーメントv_tを以下の指数移動平均で推定する:

  • m_t = β₁・m_{t-1} + (1 - β₁)・g_t
  • v_t = β₂・v_{t-1} + (1 - β₂)・(g_t)²

ここでβ₁、β₂は減衰率(0 ≤ β < 1)である。

2.1.2 バイアス補正

初期時刻ではm_tとv_tがゼロ初期化されるため、ゼロに偏る。このバイアスを補正するため、以下の補正推定値を用いる:

  • m̂_t = m_t / (1 - β₁ᵗ)
  • v̂_t = v_t / (1 - β₂ᵗ)

2.1.3 パラメータ更新

パラメータθ_tの更新式は: θ_{t+1} = θ_t - α・m̂_t / (√v̂_t + ε) ここでαは学習率、εはゼロ除算防止の微小定数である。

2.2 ハイパーパラメータ役割

2.2.1 学習率α

更新の全体的なステップサイズを決定する。通常は0.001程度が推奨され、タスクに応じて調整される。

2.2.2 減衰率β₁、β₂

β₁は一次モーメント(勾配の平均)の指数減衰率で、モーメンタムの影響を制御する(デフォルト0.9)。β₂は二次モーメント(勾配の分散)の減衰率で、過去の勾配二乗の重みを決める(デフォルト0.999)。値が大きいほど長期の勾配情報を重視する。

2.2.3 数値安定化項ε

√v̂_tがゼロに近いときの数値的安定性を確保する。通常は1e-8程度が用いられる。

3 特性と利点

3.1 適応的学習率と勾配スケーリング

各パラメータの学習率は、二次モーメントの平方根で除算されるため、勾配が大きい(頻繁に更新される)パラメータは学習率が自動的に小さくなり、勾配が小さい(スパースな)パラメータは学習率が大きくなる。これにより、勾配のスケール差に頑健である。

3.2 メモリ効率と計算効率

SGDと比較して、パラメータ数に対して追加で2つのモーメントベクトル(m_t、v_t)のみを保持すればよく、メモリ使用量はパラメータ数の2倍程度(O(n))である。計算量も勾配計算以外は軽量なスカラー操作のみであり、効率的である。

3.3 収束の安定性と汎化性能

適応的学習率により、学習率の手動調整が不要になりやすく、多くの問題で安定した収束を示す。ただし、汎化性能に関しては、SGDモメンタムに劣る場合があることが知られている(後述)。

4 欠点と注意点

4.1 過適合リスクと一般化劣化

一部の研究(Wilson et al., 2017)では、AdamがSGDよりも汎化誤差が大きくなる傾向が報告されている。これは、適応的学習率が訓練データのノイズに過剰適応しやすいためと考えられている。特に、大規模データセットではSGDモメンタムの方が良い汎化性能を示す場合がある。

4.2 学習率の初期設定への敏感さ

デフォルトの学習率(α=0.001)は多くのタスクで有効だが、最適な学習率はタスクに依存する。学習率が大きすぎると発散し、小さすぎると収束が遅くなる。適切な範囲を見つけるには、ウォームアップや学習率スケジューリングの併用が推奨される。

4.3 収束の理論的保証の限界

Adamの収束証明は、特定の条件下(凸関数など)でのみ成り立つ。非凸最適化問題では、理論的な保証が弱く、実際に収束しない例(Reddi et al., 2018)も報告されている。これに対してAMSGradなどの改良が提案されている。

5 派生手法とバリエーション

5.1 AdamW(重み減衰の分離)

L2正則化(重み減衰)をAdamの更新式に直接組み込むと、適応的学習率の影響で正則化効果が歪む。AdamWは、重み減衰項を適応的更新とは分離して適用することで、より適切な正則化を実現する。近年、多くの実装でデフォルトとして採用されている。

5.2 NAdam(Nesterov加速の統合)

Nesterov加速勾配法のアイデアをAdamに組み込み、現在の勾配ではなく、将来のパラメータ位置での勾配を考慮する。これにより、収束の加速が期待される。

5.3 AMSGrad(最大二次モーメントの保持)

Adamでは二次モーメントv_tが減少することがあり、学習率が増加して収束不安定になる場合がある。AMSGradは、v_tの代わりに過去の最大値を保持することで学習率の単調減少を保証し、収束の理論的保証を強化する。

5.4 その他の改良(RAdam, AdaBound等)

  • RAdam(Rectified Adam):初期学習率のウォームアップを自動的に調整し、訓練初期の不安定性を軽減する。
  • AdaBound:AdamとSGDの間を動的に遷移する手法で、後半をSGDに近づけることで汎化性能を改善する。

6 実装と応用

6.1 主要フレームワークでの実装例(TensorFlow, PyTorch等)

  • TensorFlowtf.keras.optimizers.Adam(またはtf.compat.v1.train.AdamOptimizer)として提供。learning_rate, beta_1, beta_2, epsilonを指定可能。
  • PyTorchtorch.optim.Adamクラス。同様のハイパーパラメータに加え、weight_decay(L2正則化)オプションがある。近年はtorch.optim.AdamWも推奨される。
  • 他のフレームワーク:JAX(optax.adam)やMXNet、Chainerなどにも標準実装がある。

6.2 自然言語処理や画像認識での活用事例

  • 自然言語処理:Transformerモデル(BERT, GPTシリーズ)の訓練では、AdamWが標準的に用いられる。ウォームアップスケジューリングと組み合わせて、大規模言語モデルの収束を安定化する。
  • 画像認識:ResNetやEfficientNetなどの畳み込みニューラルネットワークの訓練にも使用されるが、特にバッチ正規化と組み合わせた場合にSGDより良好な結果を示す場合がある。
  • 強化学習:方策勾配法やQ学習のニューラルネットワーク近似において、経験的に安定した性能を発揮する。

6.3 ハイパーパラメータチューニングの実践的指針

  • 学習率:初期値0.001を基準に、収束状況を見ながら対数スケールで探索(例:0.1〜0.00001)。
  • 減衰率:β₁=0.9、β₂=0.999が多くの場合で良好。スパース勾配が多い場合はβ₂を0.99に下げることもある。
  • ウォームアップ:訓練初期に学習率を徐々に増加させることで、発散を防ぐ。特にTransformer系モデルでは必須。
  • 重み減衰:AdamWを使用し、重み減衰係数はモデルサイズに応じて0.01〜0.0001程度を試す。

7 関連トピック

7.1 比較:SGD, AdaGrad, RMSPropとの違い

  • SGD(モメンタムあり):固定学習率、学習率スケジューリングが必要。汎化性能が高い傾向。Adamは適応的でチューニングが容易だが、汎化性能で劣る場合がある。
  • AdaGrad:全履歴勾配二乗を蓄積するため、学習率が単調減少し、スパース勾配に強いが、非凸問題では早期に学習率が小さくなりすぎる。
  • RMSProp:勾配二乗の指数移動平均を用いる。Adamはこれにモーメンタムを加えた形。
  • Adam:これらの利点を統合し、多くのタスクでデフォルト選択となるが、ヘビーテールな勾配分布に対してはAMSGradなどが有効。

7.2 理論解析:収束証明と限界

凸最適化の設定では、Adamのバリアント(例:バイアス補正後の更新)がO(1/T)の後悔(regret)境界を持つことが示されている。しかし、非凸で滑らかでない関数では、収束が保証されない例が存在する。Reddi et al. (2018)はAdamの収束しない反例を示し、AMSGradがこれを解決した。さらに、Adamの収束速度は、勾配のノイズ分散に依存することが知られている。

7.3 今後の発展方向

  • 汎化性能の改善:AdamとSGDのハイブリッド手法(AdaBound、SWATSなど)や、正則化項の適応的調整。
  • 大規模分散学習への適応:通信効率を重視したバリアント(LAMBなど)が開発されている。
  • 理論の深化:非凸問題における収束条件の解明と、より強力な保証を持つアルゴリズムの設計。
  • 自動ハイパーパラメータ調整:ベイズ最適化や勾配ベースのメタ学習と組み合わせた手法への応用が進む。