AdaGradの本質は「座標ごとに学習率を変える」こと
AdaGrad(Adaptive Gradient)は、全パラメータに同一の学習率を適用するのではなく、各パラメータの勾配履歴を使って更新幅を自動調整する最適化手法です。頻繁に更新される方向は慎重に、希少な方向は相対的に大きく更新する、という設計思想を持ちます。
更新式の理論的な見方
$w_{t+1}=w_t-\frac{\eta}{\sqrt{h_t+\epsilon}}g_t$
- $g_t$: 現在ステップの勾配
- $h_t$: 過去勾配二乗和(座標ごと)
- $\eta$: 基本学習率、$\epsilon$: ゼロ除算回避
$h_t$ が増えるほど分母が大きくなり、実効学習率は低下します。これは「同じ方向に大きな勾配が続く座標ほど更新を抑える」効果を生みます。
なぜ有効か
- スパース特徴(自然言語・推薦特徴)では、出現頻度の偏りに対応しやすい。
- 手動チューニングを減らし、初期学習を安定化しやすい。
注意点
- $h_t$ が単調増加するため、後半は学習率が下がりすぎることがある。
- この弱点を緩和する系として RMSprop / Adam が広く使われる。
G検定での押さえ方
- 式暗記よりも「なぜ適応的か」を説明できることが重要。
- SGD, Momentum, Adam との違いを比較で覚えると定着しやすい。