ひとことで言うと
適応的最適化法は、全座標に同じ学習率を掛けるのではなく、各座標の勾配履歴から実効的な学習率を変える方法です。勾配の大きさや出現頻度が座標ごとに違っても、更新を一律に止めにくくします。
坂道を歩くとき、傾斜の急な方向には小さく、緩い方向には大きく歩幅を変えるようなものです。全方向に同じ歩幅で進むより、座標ごとの地形に合わせて動けます。
なぜ必要か
通常の確率的勾配降下法では、更新幅を決める学習率 は全座標で共通です。しかし、ある座標だけ勾配が頻繁かつ大きく出ると、その座標は振動しやすく、逆にまれにしか勾配が現れない座標はほとんど動きません。特に疎な特徴では、頻出する座標を抑えつつ、まれだが予測に効く座標を見逃さない調整が必要です。
そこで、過去の勾配の大きさを座標別に記録し、大きな勾配を受け続けた座標の歩幅を縮めます。AdaGradはこの考え方を累積履歴で実現しましたが、累積し続けると分母が増え、後半に更新が小さくなりすぎることがあります。移動平均を使う手法は、最近の履歴を重くしてこの問題を扱います。
| 座標の状態 | 調整の方向 |
|---|---|
| 勾配が大きく頻繁に出る | 実効学習率を下げ、振動を抑える |
| 勾配がまれにしか出ない | 相対的に大きな歩幅を残し、更新を拾う |
仕組み
時刻 の勾配を 、パラメータを 、小さな正数を とします。二乗勾配の移動平均を とすると、考え方の中心は次の実効学習率です。
はパラメータの座標、 は基準となる学習率です。 が大きい座標ほど分母が大きくなり、同じ勾配でも更新幅が小さくなります。AdaGradは二乗勾配を累積し、Adamは二乗勾配の移動平均に加えて勾配そのものの一次モーメントも持ちます。一次モーメントは方向の平滑化、二次モーメントは座標別のスケール調整を担う、と切り分けると覚えやすいです。
モーメントをゼロから始めると、最初の数ステップでは観測データが少ないため平均値がゼロ寄りに偏ります。とくに二次モーメントの推定値が小さく見えると、分母が過小評価されて初期更新が過大になります。Adamのバイアス補正は、ゼロ初期化で生じたこの偏りを時刻に応じて戻す処理です。
試験でどう問われるか
| 問われ方 | 正解に寄る条件 | 引っかけ |
|---|---|---|
| 適応的学習率の意味 | 二乗勾配の履歴で座標ごとに分母を変える | 学習率を全座標で同じにする |
| Adamの構成 | 一次モーメントと二次モーメントを併用する | 二次モーメントだけを持つ |
| バイアス補正の理由 | モーメントをゼロ初期化するため初期推定がゼロ寄りになる | 正則化のための補正とする |
| 手法の選択 | 収束の速さだけでなく、検証性能と再現性で比較する | Adamなら常にSGD+モメンタムより汎化する |
実装で確かめる
二乗勾配の移動平均だけを取り出し、座標ごとに実効学習率が変わる様子を確認します。コードはAdam全体の更新を再現するものではなく、適応の核を示す最小例です。
import numpy as np
grads = np.array([[4.0, 0.2], [2.0, 0.1], [1.0, 0.05]])
beta2, eta, eps = 0.9, 0.01, 1e-8
v = np.zeros(2)
for g in grads:
v = beta2 * v + (1 - beta2) * g**2
rate = eta / (np.sqrt(v) + eps)
print(np.round(rate, 6))
出力は次のようになります。
[0.007905 0.079057]
[0.006258 0.062579]
[0.005611 0.056114]
第一座標は大きな勾配を受け続けるため、第二座標より実効学習率が小さくなります。実務では、適応法で訓練損失が早く下がっても、検証性能まで自動的に優れるとは限りません。汎化を重視するなら、SGD+モメンタムも候補に残して同じ検証条件で比較します。
取り違えやすいもの
| 用語 | 適応的最適化法との切り分け |
|---|---|
| AdaGrad | 二乗勾配の累積で座標別に学習率を下げる。長期には更新が小さくなりやすい |
| Adam | 一次モーメントと二次モーメントを使い、初期モーメントのバイアスも補正する |
| SGD+モメンタム | 過去の更新方向を利用するが、座標別の二乗勾配で分母を調整する発想とは別 |
| RMSProp | 二乗勾配の移動平均でスケールを調整する系統。Adamとの違いは一次モーメントやバイアス補正の扱いにある |
想起チェック
適応的手法は何を座標ごとに変えるか
二乗勾配の履歴を使って、基準学習率から実効学習率を変えます。勾配の大きい座標ほど更新を抑えます。
Adamが持つ二つのモーメントは何か
勾配そのものの一次モーメントと、勾配の二乗の二次モーメントです。前者は方向、後者は座標別のスケールに対応します。
初期ステップでバイアス補正が必要な理由は何か
モーメントをゼロで初期化するため、観測が少ない間は推定値がゼロ寄りになります。そのままでは分母が小さく見え、更新が過大になり得ます。