深層学習のオプティマイザで「迷ったらまずこれ」と言われるほど広く使われているのがAdamです。勾配の「方向の勢い」を活かすMomentumと、「歩幅の自動調整」を行うRMSpropという2つの系統の長所を1つに融合し、さらにバイアス補正という独自の仕上げを加えた、最適化手法の系譜の集大成的な存在です。
📖 ひと言でいうと
Adamとは、RMSpropとMomentumの特長を合成した最適化アルゴリズムで、勾配の第一モーメント(平均)と第二モーメント(未中心化の分散)の推定値を使ってパラメータごとに更新量を決め、バイアス補正で推定の偏りを正します。
身近な例えでいえば、霧の中を下山するベテランガイドです。「これまで下ってきた方向の勢い」を保って小さな凸凹に惑わされず(Momentum的)、「足場の荒れ具合」に応じて歩幅を場所ごとに変える(RMSprop的)。厳密には2つの統計量の指数移動平均を組み合わせた更新式ですが、「方向の勢い」と「歩幅の調整」の両立という直感で捉えると全体像がつかめます。
🖼 1枚でわかるAdam
📘 公式テキストの説明
RMSpropとMomentumの特長を合成した最適化アルゴリズムで、第一モーメント(平均)と第二モーメント(未中心化の分散)の推定値を使いながらバイアス補正を行う。AdamはRMSpropのように指数的減衰を用いて過去の勾配の情報を考慮し、Momentumのように移動平均を用いて勾配の方向をスムーズにする。ハイパーパラメータが少なく、多くのケースでデフォルトの設定でも良い結果を出すが、学習率などの調整が必要な場合もある。
この説明は「2つの親+1つの独自要素」と読むのが整理のコツです。親の1人目はMomentum(勾配の移動平均=第一モーメントで方向をスムーズに)、2人目はRMSprop(勾配の二乗の指数的減衰平均=第二モーメントで歩幅を調整)。そして独自要素がバイアス補正です。
最後の一文も試験的に重要です。Adamは「デフォルト設定でも良い結果を出しやすい」が、「調整が一切不要」とまでは言っていません。この温度感を保った選択肢が正解になりやすい部分です。
🔍 しっかり理解する
2つの「モーメント」が担う役割
Adamは各パラメータについて2つの統計量を指数移動平均で追跡します。
- 第一モーメント(平均) — 勾配そのものの移動平均。プラスとマイナスに暴れる勾配をならして「一貫した下り方向」を抽出します。谷底で振動しがちな更新が滑らかになる、Momentum譲りの効果です。
- 第二モーメント(未中心化の分散) — 勾配の二乗の指数的減衰平均。勾配の「大きさの水準」を表し、これが大きいパラメータは歩幅を小さく、小さいパラメータは歩幅を大きくします。RMSprop譲りのパラメータ別学習率調整です。
「未中心化」とは、平均を引かずに二乗をそのまま平均していることを指します。厳密な統計学の分散(平均からのずれの二乗平均)とは少し違う量ですが、勾配のスケールを測る目的には十分です。
- 勾配の移動平均(第一モーメント)
- 更新方向をスムーズにする
- 振動を抑え、一貫した方向へ加速
- 鞍点や小さな凹凸を乗り越えやすい
- 勾配の二乗の指数的減衰平均(第二モーメント)
- パラメータごとに歩幅を自動調整
- 古い勾配情報は指数的に忘れる
- スケールの違うパラメータ間でも安定
固有の工夫: バイアス補正
Adamならではの追加要素がバイアス補正です。2つのモーメントの指数移動平均は、学習開始時にゼロから初期化されます。すると学習のごく初期は、まだ十分なデータが混ざっていないせいで推定値が実際よりゼロ側に偏って(バイアスがかかって)しまいます。
Adamはこの偏りの大きさがステップ数から理論的に計算できることを利用し、初期ほど強めの補正係数で推定値を割り戻します。これにより、学習の立ち上がりから統計量が適正なスケールで機能し、序盤の更新が不自然に小さくなることを防ぎます。RMSpropとMomentumを「ただ足し合わせた」のではなく、組み合わせたときに生じる初期化の問題まで手当てした点が、Adamの完成度の高さです。
系譜の集大成、そしてその先へ
最適化手法の流れは、SGDを起点に「方向の工夫」(Momentum)と「歩幅の工夫」(AdaGrad→RMSprop/AdaDelta)の2系統に分かれて発展し、Adamで合流しました。ハイパーパラメータが少なく、幅広いタスクでデフォルト設定のまま良好に動くため、実務・研究を問わず標準的な選択肢になっています。一方で、適応的な学習率が極端な値をとって汎化性能を損なうケースも指摘され、収束の問題を修正したAMSGrad、学習率に動的な上下限を設けてSGDへ滑らかに移行するAdaBound/AMSBoundといった後続手法が生まれています。Adamは「終着点」ではなく「新たな起点」でもあるのです。
💡 具体例で考える
新しい画像分類モデルの開発に着手する場面を考えます。SGDで最初から良い結果を出すには、学習率の値、学習率を途中で下げるスケジュール、モーメンタム係数などを組み合わせて何度も試行錯誤する必要があり、1回の訓練に時間がかかる深層学習ではこの探索が大きなコストになります。Adamなら、広く使われるデフォルト設定(学習率0.001など)のままでも多くの場合まともな学習曲線が得られるため、「まずAdamでベースラインを作り、モデル構造の検討に集中する」という進め方ができます。プロトタイピングの速度を大きく引き上げたことが、Adamが標準の地位を得た実務的な理由です。ただし、最高精度を追い込む段階では学習率の調整や他手法との比較が依然として行われます。公式テキストの「調整が必要な場合もある」は、この現実を指しています。
⚠️ よくある誤解・紛らわしい用語
- 合成元の取り違え — Adamは「RMSprop+Momentum」です。「AdaGrad+Momentum」「AdaDelta+SGD」などと入れ替えた誤答が定番なので、親の組み合わせを正確に覚えましょう。
- 第一・第二モーメントの対応 — 第一モーメント=平均=方向のスムーズ化(Momentum側)、第二モーメント=未中心化の分散=歩幅の調整(RMSprop側)。役割を入れ替えないよう注意が必要です。
- 「常に最強」ではない — デフォルトで良い結果を出しやすいのは事実ですが、最終的な汎化性能でSGD系に劣る場合も指摘されており、AMSGradやAdaBoundなどの改良が続いています。
- AdamとAdaBoundの関係 — AdaBoundはAdamを土台に学習率の上下限を加えた後続手法です。世代の前後関係(Adam→AdaBound)を逆にしないようにしましょう。
📝 試験でのポイント
- 定義問題では「RMSpropとMomentumの特長を合成」「第一モーメント(平均)と第二モーメント(未中心化の分散)」「バイアス補正」の3点セットが正解の目印です。
- 「勾配の方向をスムーズにするのはどちらの継承要素か」→ Momentum(移動平均)、「過去の勾配を指数的減衰で考慮するのは」→ RMSprop、という対応を問う形式が想定されます。
- 「ハイパーパラメータの調整が一切不要」と言い切る選択肢は誤りです。「デフォルトでも良い結果を出すが、調整が必要な場合もある」が正しい温度感です。
- 系譜の問題では、RMSprop/AdaDeltaの後・AdaBound/AMSBoundの前という位置を押さえておきましょう。
📚 まとめ
- Adamは、Momentumの「方向の勢い」(第一モーメント)とRMSpropの「歩幅の自動調整」(第二モーメント)を融合した最適化アルゴリズムです。
- 固有の工夫としてバイアス補正を備え、学習初期の統計量の偏りを理論的に修正します。
- ハイパーパラメータが少なく、デフォルト設定でも良い結果を出しやすいため、深層学習の標準的なオプティマイザとなりました。
- ただし万能ではなく、その課題を受けてAMSGradやAdaBound/AMSBoundなどの後続手法が展開していきます。
