AdaGrad (G検定)

AdaGrad

1. 定義と概要

AdaGrad(正式名称はAdaptive Gradient)とは、John Duchi氏、Elad Hazan氏、Yoram Singer氏の3人が2011年にJMLR(機械学習分野を代表する学術誌)で発表した最適化アルゴリズムです。

仕組みの中心にあるのは、勾配の履歴をため込むという発想です。パラメータ(ニューラルネットワークが学習の中で調整していく重みなどの数値)ごとに、それまでの勾配(値をどの向きに動かせば誤差が小さくなるかを示す指標)を二乗して足し合わせます。その平方根で学習率を割ることで、パラメータごとに異なる学習率が自動で決まります。

結果として、更新のたびに大きく動いてきたパラメータは学習率が小さくなり、あまり動いていないパラメータは学習率が大きく保たれるという関係になります。動きすぎた数値にはブレーキをかけ、出番の少なかった数値には大きめの一歩を許す、という調整が自動で入るわけです。

従来の勾配降下法(誤差が小さくなる方向へ数値を少しずつ動かして最適な値を探す基本的な学習方法)や確率的勾配降下法(SGD)は、すべてのパラメータに同一の学習率を適用します。そのため、更新の頻度が高いパラメータと低いパラメータの違いに対応できないという課題がありました。

AdaGradは、パラメータごとに学習率を自動で調整する「適応的学習率」という考え方を導入した先駆けとして提案されました。以降のRMSprop、AdaDelta、Adamといった適応的学習率系のアルゴリズムの起点でもあります。

2. 試験対策ポイント

まず整理しておきたいのは、パラメータごとに過去の勾配の二乗和を累積し、その平方根で学習率を割るという更新の仕組みと、そこから生まれる弱点です。

出発点は、よく更新されるパラメータほど学習率が小さくなり、あまり更新されないパラメータほど学習率が大きく保たれるという対応関係です。そのうえに、分母にあたる勾配の二乗和の累積が学習を通じて単調に増加し続けるという性質が重なります。二乗した値を足し続ける以上、分母は減ることがありません。

累積が増え続けるため、学習が進むにつれて学習率が際限なく小さくなり、最終的には更新がほとんど止まってしまいます。この学習率の枯渇が、AdaGradの弱点として扱われます。

学習率枯渇という弱点を、過去の勾配の二乗和を単純な累積和ではなく指数移動平均(直近の値ほど重みを大きくしながら平均を計算する方法)で扱うことによって緩和したのがRMSpropです。古い勾配の影響を薄れさせる分、分母が無制限には膨らまなくなります。

RMSpropが抱えていた次元の不整合(更新する量の大きさが元のパラメータと噛み合わなくなること)も解消し、学習率という調整すべき数値自体を不要にしたのがAdaDeltaにあたります。RMSpropとAdaDeltaそれぞれの詳しい仕組みは別記事に譲りますが、AdaGradの弱点をどのように解決したかという関係は、この発展の流れとあわせて整理しておきたいところです。

AdaGradは、出現頻度に偏りのある疎なデータ(ほとんどの値が0で、一部の特徴だけがまれに出現するデータ)との相性のよさでも知られています。自然言語処理(コンピュータに人間の言葉を扱わせる技術分野)における単語埋め込み(単語を意味の近さを反映した数値の並びに変換する技術)のように、多くの値が0になるデータでは、めったに現れない特徴の学習率を大きく保てるためです。

3. 関連概念との比較・相違点

モーメンタム法(それまでの更新の向きを慣性として加味し、更新を滑らかにする手法)との最大の違いは、改良している対象です。モーメンタム法は勾配の向きに関する改良で、これまでの更新方向を踏まえて動きを滑らかにします。

一方のAdaGradは、パラメータごとに学習率という大きさそのものを変える改良にあたります。更新の向きを改良するか、更新の大きさを改良するかという別系統の工夫であり、両方を組み合わせたものがAdamです。

RMSprop・AdaDeltaとの関係は、AdaGradの弱点を克服した後継という位置づけにあります。RMSprop・AdaDeltaはいずれも、勾配の二乗和を単純な累積ではなく指数移動平均で扱うことで、学習率が際限なく小さくなる問題を解消しました。

RMSprop・AdaDeltaそれぞれの計算の詳しい違いは別記事に譲りますが、AdaGradとの関係で言えば、学習率の枯渇という弱点をどう乗り越えたかという1点に集約されます。ここまでに出てきた手法を、改良の軸とAdaGradとの関係で並べると次のように整理できます。

手法 改良している対象 AdaGradとの関係
モーメンタム法 更新の向き(慣性で滑らかにする) 別系統の工夫
AdaGrad 更新の大きさ(学習率をパラメータごとに調整) 適応的学習率の先駆け
RMSprop 更新の大きさ(二乗和を指数移動平均で扱う) 学習率の枯渇を緩和した後継
AdaDelta 更新の大きさ(次元の不整合も解消し学習率を不要に) 学習率の枯渇を緩和した後継
Adam 更新の向きと大きさの両方 2系統の改良を組み合わせた手法

この表のとおり、AdaGradは「更新の大きさ」を改良する系統の出発点にあたります。試験でも、どの手法がどちらの軸を触っているのかを取り違えないことが得点につながります。

4. ビジネス・実務での活用シナリオ

自然言語処理の分野では、単語埋め込みの学習にAdaGradが使われる場面があります。文章データでは出現頻度の低い単語ほど登場回数が少ないため、学習率が早い段階で下がりきってしまうと、そうした単語の表現がうまく学習されないまま終わってしまいます。AdaGradはめったに出現しない単語の学習率を大きく保てるため、疎なデータを扱う自然言語処理のタスクで適応的な学習率調整が効果を発揮します。

レコメンドシステムの分野でも、AdaGradの考え方は生きています。ユーザーごとの購買履歴は、大半の商品が0(未購入)のまま並ぶ疎なデータになりやすく、稀にしか購入されない商品ほど学習の機会が少なくなりがちです。AdaGradのようにパラメータごとに学習率を調整する仕組みを使うと、稀にしか出現しない特徴の学習を後押しできるという関係にあります。

モデル開発の初期検証の段階でも、AdaGradは選択肢に挙がります。学習率を手作業で細かく調整しなくてもパラメータごとに自動で調整されるため、試作段階での手間を減らせるという利点があるからです。一方で、長期にわたる学習では学習率が枯渇して更新が止まりやすいため、実務では途中からRMSpropやAdamへ切り替えられることが多く、AdaGradは初期の見立てに使われる位置づけといえるでしょう。

5. 要点まとめ

  • AdaGradは、パラメータごとに過去の勾配の二乗和を累積し、その平方根で学習率を割ることでパラメータごとに学習率を自動調整する最適化アルゴリズムで、2011年にDuchi氏らが提案しました。
  • 分母にあたる二乗和の累積が単調に増加し続けるため、学習が進むにつれて学習率が際限なく小さくなり、学習が停滞するという欠点があります。
  • この欠点は、勾配の二乗和を指数移動平均で扱うRMSprop・AdaDeltaが解消しており、更新方向を改良するモーメンタム法とは別系統の「学習率の適応」という改良軸にあります。

6. 確認問題

問1AdaGradは、パラメータごとに過去の勾配の二乗和を累積し、その平方根で学習率を割ることで学習率を自動調整する最適化アルゴリズムである。

解答・解説をみる

○ 正しい

AdaGradの中心的な仕組みそのものです。よく更新されるパラメータほど学習率が小さくなり、あまり更新されないパラメータは学習率が大きく保たれます。

問2AdaGradは過去の勾配の二乗和を指数移動平均で扱うため、学習が進んでも学習率が過度に減衰しない。

解答・解説をみる

× 誤り

正しくは、AdaGradは勾配の二乗和を単純な累積和で扱うため、学習が進むほど学習率が際限なく小さくなります。指数移動平均で扱うのはRMSpropの仕組みで、両者は混同しやすい組み合わせです。

問3AdaGradの学習率が単調に減衰し続ける問題は、RMSpropやAdaDeltaが勾配の二乗和を指数移動平均で扱うことで緩和されている。

解答・解説をみる

○ 正しい

RMSprop・AdaDeltaは、AdaGradの学習率枯渇という欠点を、直近の勾配ほど重みを大きくする指数移動平均で解消した後継にあたります。