最適化アルゴリズム

Adam あだむ

Adam最適化適応的学習率モメンタムニューラルネットワーク深層学習
Adamについて教えて

簡単に言うとこんな感じ!

Adamは「賢い勾配降下法」だよ。パラメータごとに自動で学習率を調整してくれるんだ。急な坂では慎重に、なだらかな坂では大胆に進む——そんな賢い判断を自動でやってくれるから、多くのディープラーニングで「とりあえずAdamで始めよう」が鉄板になってるんだ!


Adamとは

Adam(Adaptive Moment Estimation) は、2014年にDiederik KingmaとJimmy Baが提案した深層学習の定番最適化アルゴリズムです。SGDにモメンタム(慣性)と学習率の自動調整を組み合わせたもので、「最初に試すべき最適化手法」として広く使われています。

Adamの特徴は2つの統計量を管理する点にあります。一つは勾配の1次モーメント(平均)、もう一つは勾配の2次モーメント(二乗平均)です。前者がモメンタムの役割を、後者が各パラメータへの適応的な学習率調整の役割を果たします。

その結果、学習率の手動チューニングが少なくて済み、様々なタスクで安定した学習ができるため、画像認識・自然言語処理・強化学習など幅広い分野で標準的に採用されています。


Adamの計算ステップ

ステップ計算内容
勾配計算現在のパラメータで勾配 g を計算
1次モーメント更新m ← β₁·m + (1−β₁)·g(勾配の指数移動平均)
2次モーメント更新v ← β₂·v + (1−β₂)·g²(勾配二乗の指数移動平均)
バイアス補正m̂ = m/(1−β₁ᵗ)、v̂ = v/(1−β₂ᵗ)
パラメータ更新θ ← θ − η·m̂/(√v̂+ε)
# PyTorchでのAdam使用例
import torch.optim as optim

optimizer = optim.Adam(
    model.parameters(),
    lr=0.001,      # 学習率(デフォルト0.001が多くの場合有効)
    betas=(0.9, 0.999),  # β₁, β₂(通常デフォルトのまま)
    eps=1e-8       # ゼロ除算防止の小定数
)

歴史と背景

  • 2014年:KingmaとBaがAdamを提案(論文「Adam: A Method for Stochastic Optimization」)
  • 2015年:Batch Normalizationと組み合わせて深層学習の学習を安定化
  • 2017年以降Transformerの登場とともにAdamWが標準最適化器として普及
  • 現在GPTBERTなど大規模言語モデルの事前学習にもAdamW(重み減衰付きAdam)が広く使用

Adam系の最適化アルゴリズム比較

アルゴリズム特徴主な用途
Adamバランスが良く汎用的多くのDLタスク全般
AdamW重み減衰を正しく分離Transformer系(GPT、BERTなど)
RAdam初期学習を安定化学習率ウォームアップ不要
NadamAdamにネステロフの加速を追加RNN系タスク
AdaGrad過去の勾配を累積スパースな特徴が多い場合

関連用語