【アダム】

Adam(最適化アルゴリズム) とは?

最終更新:
💡 勾配の履歴を使い、パラメータごとの更新量を調整する

勾配と勾配の二乗の移動平均を使い、パラメータごとに更新量を調整する最適化アルゴリズム。移動平均の初期の偏りを補正して更新する。基準となる学習率などの設定は必要で、最適解や他の手法より良い性能を常に保証するものではない。

📌 このページのポイント
勾配の履歴から更新量を調整する 更新点の模式例 損失の等高線 勾配の移動平均 一次モーメント 勾配の二乗の移動平均 二次モーメント 初期の偏りを補正して更新に使う 基準の学習率などは、設定が必要 最短経路・最適な性能を保証しない
経路は実験結果ではなく更新点の模式例です。右の2つの移動平均を補正し、学習率とともに更新量の計算に使います。二次モーメントは二乗の平均で、通常の分散そのものではありません。SGDより常に滑らか・高速とは限りません。
ひよこ ひよこ
普通のSGDと何が違うの?
ペンギン先生 ペンギン先生
基本のSGDは、勾配に学習率を掛けて更新するよ。Adamは勾配の履歴も使い、パラメータごとの更新量を調整する。基準の学習率を自分で設定する点は残るので、学習率の調整が全部不要になるわけではないんだ。
ひよこ ひよこ
どんな履歴を記憶するの?
ペンギン先生 ペンギン先生
勾配の指数移動平均と、勾配を二乗した値の指数移動平均だよ。一次・二次のモーメントの推定に使う。二乗の平均は、平均からのズレを二乗して測る分散そのものではないので、「揺れだけ」を覚えているとは言えないんだ。
ひよこ ひよこ
それをどう更新に使うの?
ペンギン先生 ペンギン先生
移動平均をゼロから始めると、初期の推定がゼロ側へ偏るので補正する。その後、勾配の平均を二乗の平均の平方根などで割り、学習率を掛けて更新するんだ。各パラメータの履歴が違うので、更新量も違ってくるよ。
ひよこ ひよこ
デフォルトの設定ならうまくいく?
ペンギン先生 ペンギン先生
例えばPyTorch 2.12のAdamは、学習率0.001、平均の係数0.9と0.999がデフォルトだよ。原論文でも試した問題での設定として示されているけど、全てのモデルでの最適値ではない。学習の進み方や検証データでの性能を見て選ぼう。
ひよこ ひよこ
AdamWなら必ずもっと良くなる?
ペンギン先生 ペンギン先生
保証はないよ。AdamWは勾配による更新と、重みを縮める減衰を分離する手法。L2の項を勾配へ足す方式とは異なる。学習率や減衰係数を含めて評価する必要があるし、Adamがいつも最短で最適解へ着くわけでもないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Adam」って出てきたら「勾配とその二乗の履歴で更新量を調整する最適化手法」と思えればだいたいOK!
📖 おまけ:英語の意味
「Adaptive Moment Estimation」 = 適応的モーメント推定
💬 Adaptiveは「適応的」、Moment Estimationは「モーメント推定」。勾配の平均と二乗の平均を推定して更新に使うことに由来する名前だよ

参考資料

← 用語集にもどる