本文へ移動

G検定(ジェネラリスト検定)

あだぐらっど

アダグラッド

AdaGrad

Adaptive Gradient Algorithm

パラメータごとに、過去の勾配の2乗の累積で学習率を自動調整する最適化手法。まれな特徴量ほど大きく更新するので疎なデータに向くが、学習率が縮み続ける弱点がある。

詳しい説明

パラメータごとに学習率を変える発想

通常のSGD(確率的勾配降下法)では、すべてのパラメータθ_iが同じ学習率ηを使い、各時刻tで次のように更新します。

θ_(t+1,i) = θ_(t,i) - η * g_(t,i)

ここでg_(t,i)は、時刻tにおける目的関数のθ_iについての偏微分です。アダグラッド(Adagrad)は、この共通の学習率ηを、パラメータごと・時刻ごとに調整する勾配ベースの最適化アルゴリズムです。

更新式

θ_(t+1,i) = θ_(t,i) - (η / sqrt(G_(t,ii) + ε)) * g_(t,i)

G_tは対角行列で、対角要素G_(t,ii)は時刻tまでのθ_iに関する勾配の2乗の総和です。εはゼロ除算を避けるための平滑化項で、通常は1e-8程度の値を使います。根拠では、平方根をとらないとアルゴリズムの性能が大きく悪化することも指摘されています。全パラメータをまとめると、G_tとg_tの行列ベクトル積の形で次のようにベクトル化できます。

θ_(t+1) = θ_t - (η / sqrt(G_t + ε)) * g_t

頻出する特徴量とまれな特徴量

過去に勾配を何度も受けたパラメータほど分母が大きくなり、実質的な学習率が小さくなります。その結果、頻繁に出現する特徴量に関係するパラメータは小さく、まれにしか出現しない特徴量に関係するパラメータは大きく更新されます。このため、疎なデータを扱うのに適しています。

研究での利用例として、Googleで大規模なニューラルネットの学習に使われ、SGDの頑健性を大きく高めたという報告があります(YouTube動画の中のネコを認識するよう学習したネットワークも含まれます)。また、まれな単語ほど頻出する単語より大きな更新を必要とするGloVe単語埋め込みの学習にも使われました。

利点と弱点

主な利点は、学習率を手作業で調整する必要がなくなることです。多くの実装では既定値0.01をそのまま使います。

一方、主な弱点は、分母に勾配の2乗を累積し続けることです。加える項はすべて正なので、累積和は学習の間ずっと増え続けます。そのため学習率は縮み続け、やがて極端に小さくなり、それ以上新しい知識を獲得できなくなります。AdadeltaやRMSpropといった後続の手法は、この欠点を解決することを目指したものです。

試験で問われること

G検定

  • アダグラッドは全パラメータ共通の学習率ηを使うSGDと違い、パラメータθ_iごと・時刻tごとに異なる学習率を使う勾配ベースの最適化アルゴリズムである。
  • 更新式はθ_(t+1,i) = θ_(t,i) - (η / sqrt(G_(t,ii) + ε)) * g_(t,i)で、G_(t,ii)は時刻tまでのθ_iに関する勾配の2乗の総和、εはゼロ除算を防ぐ平滑化項である。
  • 頻繁に出現する特徴量に関係するパラメータは小さな学習率で、まれな特徴量に関係するパラメータは大きな学習率で更新されるため、疎なデータの扱いに向いている。
  • 利点は学習率を手作業で調整する必要がなくなることで、多くの実装では学習率の既定値0.01をそのまま使う。平方根をとらないと性能が大きく悪化する点も押さえる。
  • 弱点は正の値である勾配の2乗が分母に累積し続けるため学習率が縮み続け、やがて極端に小さくなって学習が進まなくなることで、AdadeltaやRMSpropはこの欠点の解決を目指した。

最終更新日: 2026/09/23