適応モーメント推定(Adaptive Moment Estimation)、一般にAdamとして知られる、は機械学習モデルの訓練のための最適化アルゴリズムである。これは、モデルパラメータを反復的に更新することで、目的関数(通常は損失関数)を最小化するように設計されている。Adamは、他の2つの確率的勾配降下法(SGD)の拡張の利点を組み合わせている:過去の勾配を蓄積することで収束を加速するモメンタムと、最近の勾配の大きさに基づいてパラメータごとに学習率を適応させるRMSpropである。この二重のメカニズムにより、Adamはスパースな勾配やノイズの多いデータを効果的に処理でき、Deep learningやNeural networkの訓練における一般的な選択肢となっている。
Adamは、2014年にDiederik P. KingmaとJimmy Baによって発表された論文「Adam: A Method for Stochastic Optimization」で導入された。このアルゴリズムは以来、多くのMachine learningタスク、特に大規模言語モデルやその他の複雑なTransformer (architecture)ベースのアーキテクチャの訓練において、デフォルトのオプティマイザとなっている。その人気は、効率性と、全行列適応法と比較して比較的低いメモリ要件に由来する。
アルゴリズム概要
Adamは、各パラメータについて2つの移動平均を維持する:勾配の第一次モーメント(平均)と第二次モーメント(非中心分散)である。これらの平均は各反復で更新され、パラメータ更新はバイアス補正された推定値を使用して計算される。この方法は、スパースな勾配でうまく機能するAdaGradと、非定常な目的関数を処理するRMSpropの利点を組み合わせている。アルゴリズムは2つのハイパーパラメータを使用し、通常beta1とbeta2で表され、モーメント推定の指数減衰率を制御する。実際には、beta1には0.9、beta2には0.999のデフォルト値が、数値安定性のための小さなイプシロンとともに一般的に使用される。
Adamの更新規則は、バイアス付きの第一次および第二次モーメント推定を計算し、パラメータ更新を実行する前にその初期化バイアスを補正することを含む。各パラメータのステップサイズは、第二次モーメント推定の平方根の逆数でスケーリングされ、大きな勾配を持つパラメータは小さなステップを取り、小さな勾配を持つパラメータは大きなステップを取ることができる。このパラメータごとの適応学習率は、標準的な確率的勾配降下法と比較して、より速く安定した収束をもたらすことが多い。
確率的勾配降下法との関係
Adamは、機械学習における基礎的な最適化手法である確率的勾配降下法(SGD)の変種である。SGDは、訓練データの小さなバッチで計算された目的関数の勾配と反対方向にモデルパラメータを移動させることで更新する。効果的ではあるが、SGDは学習率の選択に敏感であり、スパースまたはノイズの多い勾配で苦労することがある。Adamは、勾配の第一次モーメント(平均)と第二次モーメント(非中心分散)という2つの追加の推定値を維持することでこれらの問題に対処する。これらの推定値はパラメータ更新をスケーリングするために使用され、パラメータごとの適応学習率を提供する。
アルゴリズム概要
Adamは、勾配の第一次および第二次モーメントの推定値から各パラメータの適応学習率を計算する。各反復で、勾配(第一次モーメント)と二乗勾配(第二次モーメント)の2つの指数減衰移動平均を維持する。これらはしばしばmおよびvと呼ばれる。初期ステップでのゼロへのバイアスを補正するために、アルゴリズムにはバイアス補正項が含まれる。
典型的な更新ステップは次のように進行する:損失のパラメータに対する勾配を計算し、バイアス付きの第一次および第二次モーメント推定を更新し、バイアスを補正し、次にこれらの補正されたモーメントを使用してパラメータを更新する。アルゴリズムには3つの主要なハイパーパラメータがある:学習率と、モーメント推定のための2つの減衰率(通常beta1およびbeta2で表される)。Adamを導入した論文は、beta1には0.9、beta2には0.999、ゼロ除算を避けるための小さなイプシロンをデフォルト値として推奨した。
深層学習における応用
Adamは、その堅牢性と使いやすさから、Deep learningにおける標準的なオプティマイザとなっている。特に、大規模言語モデルやGenerative AIシステムで使用されるものを含むTransformer (architecture)モデルの訓練に効果的である。TensorFlowやPyTorchなどの多くのフレームワークやプラットフォームにはAdamの実装が含まれており、多くの実務者にとってデフォルトの選択肢となっている。スパースな勾配を処理する能力と比較的速い収束が、その広範な採用に貢献している。
変種と拡張
特定の制限に対処するために、Adamのいくつかの変種が開発されている。例えば、AdamWは重み減衰を最適化ステップから分離し、一部のDeep learningタスクで一般化を改善することが示されている。AMSGradは、学習率が増加しないことを保証するために第二次モーメント更新を修正し、これは一部の設定で発生する可能性がある。これらの変種は、コアの適応モーメントメカニズムを維持しながら、特定の動作を調整する。
応用と影響
Adamは、現代のGenerative AIシステムや大規模言語モデルを支えるものを含むTransformer (architecture)ベースのモデルの訓練で広く使用されている。ハイパーパラメータ選択に対する堅牢性と大規模問題を処理する能力により、多くのDeep learningフレームワークでデフォルトの選択肢となっている。このアルゴリズムの効率性は、NVIDIA GPUやAWS Trainiumチップなどのハードウェアで訓練する際に特に価値があり、計算リソースは大きいが有限である。Stanford AI Lab、BAIR (Berkeley AI Research)、University of Torontoなどの機関の研究グループは、その理論的理解と実用的な改良に貢献している。