Skip to the content.

最終更新日:2026年7月13日

G検定トップ > AdaGradとは?【G検定対策】

まず結論

AdaGrad(Adaptive Gradient)は、パラメータごとに学習率を自動調整する最適化手法です。

過去すべての勾配の二乗和を累積し、よく更新されたパラメータほど学習率を小さくします。

G検定では、次のように判断します。

  • 「過去すべての勾配の二乗和」→ AdaGrad
  • 「学習率が下がり続ける」→ AdaGradの弱点
  • 「過去を徐々に忘れる」→ RMSprop
  • 「MomentumとRMSpropを組み合わせる」→ Adam

直感的な説明

AdaGradは、パラメータごとに歩幅を変える学習方法です。

  • 何度も更新されたパラメータ → 歩幅を小さくする
  • あまり更新されていないパラメータ → 比較的大きな歩幅を保つ

たとえば文章データでは、「の」「は」のような頻出語に対応するパラメータは何度も更新されます。 一方、珍しい専門用語に対応するパラメータは、更新される機会が少なくなります。

AdaGradは、頻出する特徴量の更新を慎重にし、珍しい特徴量には比較的大きな更新を残します。

このため、疎な特徴量を扱う自然言語処理などに向くと説明されます。

定義・仕組み

AdaGradは、勾配降下法を改良した最適化手法です。

各パラメータについて、過去の勾配の二乗を足し続けます。

G_t = G_{t-1} + g_t^2
  • g_t:時刻tの勾配
  • G_t:時刻tまでの勾配二乗和

実際の更新では、学習率を G_t の平方根で割るイメージです。

更新幅 ≒ 学習率 × 勾配 / √(過去の勾配二乗和)

過去の勾配二乗和は学習が進むほど大きくなります。 そのため、分母が大きくなり、更新幅は次第に小さくなります。

パラメータごとに学習率が変わる

AdaGradでは、すべてのパラメータに同じ実効学習率を使うわけではありません。

たとえば2つのパラメータA、Bがあるとします。

  • A:これまで何度も大きな勾配を受けた
  • B:これまでほとんど勾配を受けていない

この場合、Aの累積値は大きくなり、更新幅は小さくなります。 Bの累積値は小さいため、比較的大きな更新幅を保ちます。

これが、AdaGradの「Adaptive」の意味です。

なぜ学習率が下がり続けるのか

AdaGradは、過去すべての勾配二乗和を累積します。 一度加えた値を忘れないため、累積値は基本的に増え続けます。

その結果、学習後半では更新幅が極端に小さくなり、学習が進みにくくなることがあります。

この弱点を改善するために、古い勾配の影響を徐々に小さくするRMSpropが考案されました。

いつ使う?(得意・不得意)

得意な場面

  • 疎な特徴量を扱う問題
  • 特徴量ごとに出現頻度が大きく異なる問題
  • パラメータごとに学習率を調整したい場合
  • 自然言語処理や推薦システムなど

不得意・注意点

  • 長時間学習すると更新幅が小さくなりすぎる
  • 一度小さくなった実効学習率が回復しにくい
  • 深層学習ではRMSpropやAdamが選ばれることも多い
  • 学習率の初期値が不要になるわけではない

AdaGradは学習率を自動調整しますが、最初に与える基本学習率まで不要になるわけではありません

G検定ひっかけポイント

SGD・AdaGrad・RMSprop・Adamの違い

手法 学習率調整の考え方 特徴 注意点
SGD 基本的に全パラメータで同じ学習率 単純で基本的 学習率の調整が必要
AdaGrad 過去すべての勾配二乗和を累積 疎な特徴量に向く 学習率が下がり続ける
RMSprop 勾配二乗の移動平均を使う 古い勾配を徐々に忘れる ハイパーパラメータ調整が必要
Adam MomentumとRMSpropを組み合わせる 方向と学習率を同時に調整 常に最良とは限らない

AdaBoostとの違い

AdaGradとAdaBoostは名前が似ていますが、役割が違います。

  • AdaGrad:ニューラルネットワークなどの最適化手法
  • AdaBoost:弱学習器を組み合わせるアンサンブル学習手法

「Boost」が付いているから最適化手法、という判断は誤りです。

よくある誤り

  • ❌ 過去の勾配を徐々に忘れる
  • ❌ すべてのパラメータで同じ実効学習率を使う
  • ❌ 学習が進むと学習率が大きくなる
  • ❌ AdaBoostと同じ種類の手法
  • ❌ Momentumの考え方を中心に使う
  • ❌ 基本学習率の設定が不要になる

選択肢を切る判断基準

  • 「過去すべてを累積」→ AdaGrad
  • 「移動平均で古い情報を弱める」→ RMSprop
  • 「1次モーメントと2次モーメント」→ Adam
  • 「弱学習器を重み付きで組み合わせる」→ AdaBoost
  • 「疎な特徴量」→ AdaGradが候補

確認問題

問題:AdaGradの説明として最も適切なものはどれか。

  1. 過去すべての勾配二乗和を使って、パラメータごとの学習率を調整する
  2. 過去の勾配を一定期間で完全に削除し、常に同じ学習率を使う
  3. 複数の弱学習器を順番に学習させるアンサンブル手法である
  4. 勾配の方向だけを平均し、学習率は一切変更しない
答えを見る **正解:1** AdaGradは、各パラメータについて過去すべての勾配二乗和を累積し、その値を使って更新幅を調整します。 2はRMSpropの説明としても不正確です。3はAdaBoost、4はMomentumに近い説明ですが、AdaGradではありません。

まとめ(試験直前用)

  • AdaGradはパラメータごとに学習率を調整する最適化手法
  • 過去すべての勾配の二乗和を累積する
  • 更新が多いパラメータほど学習率が小さくなる
  • 疎な特徴量に向く
  • 学習率が下がり続ける弱点をRMSpropが改善する

© 2024-2026 stemtazoo. All rights reserved.