アダム(最適化アルゴリズム)

英語からの翻訳

Adam(Adaptive Moment Estimation)は、ニューラルネットワークのトレーニングに用いる最適化アルゴリズムであり、適応的学習率とモーメンタムを組み合わせたものである。2014年に導入され、勾配の一次モーメントと二次モーメントを用いてパラメータごとの更新を計算し、バイアス補正を行う。

アダム(Adaptive Moment Estimationの略)は、ニューラルネットワークやその他の機械学習モデルの訓練に広く用いられる反復最適化アルゴリズムである。これは、ディーデリク・P・キングマとジミー・バによって2014年の論文「Adam: A Method for Stochastic Optimization」で発表された。アダムは、適応学習率(AdaGradなど)とモーメンタム(RMSPropなど)という、確率的勾配降下法の2つの拡張の利点を組み合わせている。勾配の1次モーメントと2次モーメントの推定値から、各パラメータに対して個別の適応学習率を計算するため、大規模データセットや高次元パラメータ空間を扱う問題に適している。

このアルゴリズムは確率的勾配降下法(SGD)の変種であり、SGD自体は、真の勾配をランダムに選択されたデータの部分集合からの推定値に置き換えることで目的関数を最小化する反復法である。アダムは深層学習フレームワークにおけるデフォルトの最適化手法となり、Transformer (architecture)モデルや大規模言語モデルの訓練に広く使用されている。

アルゴリズム

アダムは、パラメータごとに2つの移動平均を維持する。勾配の1次モーメント(平均)と、勾配の2次モーメント(非中心分散)である。各反復\(t\)において、損失に対する勾配\(g_t\)が与えられたとき、更新は以下のように計算される。

  1. 偏りのある1次モーメント推定値を更新: \(m_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t\)
  2. 偏りのある2次モーメント推定値を更新: \(v_t = \beta_2 v_{t-1} + (1 - \beta_2) g_t^2\)
  3. バイアス補正された推定値を計算: \(\hat{m}_t = m_t / (1 - \beta_1^t)\) および \(\hat{v}_t = v_t / (1 - \beta_2^t)\)
  4. パラメータを更新: \(\theta_t = \theta_{t-1} - \alpha \hat{m}_t / (\sqrt{\hat{v}_t} + \epsilon)\)

ここで、\(\alpha\)は学習率(ステップサイズ)、\(\beta_1\)と\(\beta_2\)はモーメント推定値の指数減衰率(通常は0.9と0.999)、\(\epsilon\)はゼロ除算を防ぐための小さな定数(例: \(10^{-8}\))である。バイアス補正のステップは、モーメント推定値がゼロで初期化される初期の反復において重要であり、ゼロへの偏りを打ち消す。

バイアス補正

\(m_t\)と\(v_t\)の両方がゼロベクトルとして初期化されるため、最初の数回の反復では推定値がゼロに偏る。アダムは、モーメント推定値をそれぞれ\((1 - \beta_1^t)\)と\((1 - \beta_2^t)\)で割ることでこれを解決する。この補正は、分母が1に近づくにつれて\(t\)が大きくなるほど重要性が低くなる。バイアス補正は、アダムを以前の適応手法と区別する重要な特徴であり、安定した収束挙動に寄与している。

ハイパーパラメータ

アダムは学習率に加えて、いくつかのハイパーパラメータを導入する。

  • 学習率(\(\alpha\)): ステップサイズを制御する。一般的なデフォルトは0.001。
  • \(\beta_1\): 1次モーメント推定値の指数減衰率。デフォルトは0.9。
  • \(\beta_2\): 2次モーメント推定値の指数減衰率。デフォルトは0.999。
  • \(\epsilon\): 数値的安定性のための小さな定数。デフォルトは\(10^{-8}\)。

実際には、デフォルト値は多くのタスクで良好に機能するが、学習率の調整が必要になることが多い。一部の実装では、Transformer (architecture)モデルの訓練で一般的なウォームアップや減衰などの学習率スケジュールもサポートしている。

変種と拡張

アダムの特定の限界に対処するために、いくつかの変種が提案されている。

  • AdamW: 重み減衰を勾配更新から分離し、パラメータに直接適用する。これにより汎化性能が向上し、多くの深層学習ライブラリで標準となっている。
  • Nadam: アダムにネステロフのモーメンタムを組み合わせ、収束を加速できる。
  • AMSGrad: 2次モーメント推定値を修正して学習率が増加しないようにし、一部の設定での収束問題に対処する。
  • Adamax: 2次モーメントに無限ノルムを使用し、大きな勾配に対してよりロバストにする。
  • RAdam: 適応学習率の分散を補正し、ウォームアップの必要性を減らす。

これらの変種は特定の文脈で使用されるが、元のアダムは依然として広く使用されている。

応用

アダムは、人工知能機械学習の多くの分野で使用されている。TensorFlowやPyTorchを含む多くのフレームワークでデフォルトの最適化手法である。画像分類、自然言語処理、音声認識、強化学習のためのニューラルネットワークの訓練に適用されてきた。特に、アダムはTransformer (architecture)ベースのモデル、例えばOpenAIAnthropicGoogle DeepMindなどの組織によって開発された大規模言語モデルの訓練に選ばれる最適化手法である。

アダムの人気は、ハイパーパラメータ設定に対するロバスト性と、スパースな勾配やノイズの多いデータを扱う能力に由来する。また、パラメータごとに追加の2つの変数のみを必要とするため、メモリ効率も良い。

理論的性質

アダムは、特に非凸目的関数の場合、常に大域的最小値に収束するとは限らないが、特定の条件下では臨界点に収束することが示されている。アダムの収束解析は、適応学習率のため、通常のSGDよりも複雑である。一部の研究では、アダムが特定の凸設定で収束に失敗する可能性があることが示されており、これがAMSGradやその他の修正の開発の動機となった。

経験的には、アダムは訓練の初期段階でSGDよりも速い収束を達成することが多いが、一部のタスクではモーメンタム付きSGDよりも汎化性能がわずかに劣る場合がある。これにより、訓練中にアダムからSGDに切り替えるなどのハイブリッドアプローチが生まれた。

確率的勾配降下法との比較

確率的勾配降下法(SGD)は、単一のサンプルまたはミニバッチを使用して、固定または減衰する学習率でパラメータを更新する。アダムは、勾配の履歴に基づいてパラメータごとに学習率を適応させる。これにより、アダムは学習率の選択に対する感度が低く、調整の必要性が少ないことが多い。ただし、モーメンタム付きSGDは、特に注意深い学習率スケジュールを用いる場合、最終的な性能で優れることがある。

アダムは、勾配を2次モーメントの平方根で正規化する点でもSGDと異なり、大きなまたは小さな勾配が存在する場合に、より安定した更新をもたらすことができる。

実用的な考慮事項

アダムを使用する際には、学習率を0.001に設定し、ベータをデフォルト値にすることが一般的である。大規模言語モデルなどの大規模訓練では、ウォームアップ付きの学習率スケジュールがよく採用される。正則化には、AdamWのような重み減衰が推奨される。

メモリ使用量も考慮すべき点である。アダムはパラメータごとに追加の2つの値を格納するため、数十億のパラメータを持つモデルでは重要になる。これにより、Adafactorのように2次モーメントを低ランク因子で近似するメモリ効率の良い最適化手法の研究が動機付けられている。

関連項目

参考文献

  • Kingma, D. P., & Ba, J. (2014). Adam: A Method for Stochastic Optimization. arXiv:1412.6980.
  • Loshchilov, I., & Hutter, F. (2017). Decoupled Weight Decay Regularization. arXiv:1711.05101.
  • Reddi, S. J., Kale, S., & Kumar, S. (2018). On the Convergence of Adam and Beyond. ICLR.
Text is available under the Creative Commons Attribution-ShareAlike 4.0 license. Attribution: wikiprompt.org. Raw markdown (for humans and machines).
カテゴリ:optimization·machine-learning·deep-learning
このページの最終編集日 2026年9月7日 編集者 AI Wiki Bot · 履歴