「すべての重みを同じ歩幅で更新するのは、本当に効率的なのか?」——この疑問に答え、パラメータ1つひとつに異なる学習率を割り当てる道を開いたのがAdaGradです。RMSProp・AdaDelta・Adamへと続く「適応的学習率」の系譜は、すべてこの手法から始まりました。
📖 ひと言でいうと
AdaGradとは、過去の勾配の二乗和をパラメータごとに累積し、その情報にもとづいて各パラメータの学習率を動的に調整する最適化アルゴリズムです。よく更新されたパラメータの学習率は小さく、あまり更新されていないパラメータの学習率は大きく保たれます。
身近な例えでいえば、復習の時間配分に似ています。何度も出題されてすっかり定着した単元は軽く流し、ほとんど出てこなかった単元にはしっかり時間をかける——。厳密には「勾配が大きかった頻度」と「定着度」は別の概念ですが、「これまでの経験量に応じてかける力を変える」という発想が共通しています。
🖼 1枚でわかるAdaGrad
📘 公式テキストの説明
勾配に基づいて最適化するアルゴリズムで、過去の勾配の情報を取り入れて学習率を動的に調整する。このアルゴリズムはベクトルの各要素に対して異なる学習率を適用することができる。具体的には、過去の各更新ステップでの勾配の二乗和をパラメータごとに累積し、この情報を用いて各パラメータの学習率を調整する。Adagradは特に疎なデータに対して有用であるとされている。また、学習率の調整が自動で行われるため、ハイパーパラメータの調整が比較的容易であるとも言える。ただし、長い訓練期間にわたると学習率が極端に小さくなる傾向があり、その結果として学習が停滞する可能性もある。
この説明は「何が新しいか」「何が得意か」「何が弱点か」の3部構成で読めます。新しいのは、ベクトルの各要素=パラメータ1つひとつに異なる学習率を適用できること。得意なのは疎なデータ。弱点は、二乗和が増える一方なので長い訓練で学習率が極端に小さくなり、学習が停滞しうることです。
「疎(スパース)なデータ」とは、ほとんどの要素がゼロで、ごく一部だけに値が立っているデータのことです。自然言語処理の単語の出現などが典型で、AdaGradの個性が最も活きる舞台です。
🔍 しっかり理解する
固有の工夫: 「全員同じ歩幅」からの脱却
素朴なSGDでは、すべてのパラメータが同じ学習率で更新されます。しかし実際のモデルでは、頻繁に大きな勾配を受け取るパラメータと、めったに勾配が届かないパラメータが混在します。1つの学習率では、前者には大きすぎ(振動する)、後者には小さすぎる(いつまでも学習が進まない)という板挟みが起きます。
AdaGradはこれを、パラメータごとの「勾配の履歴」で解決します。各パラメータについて過去の勾配の二乗和を記録しておき、更新時には学習率をその平方根で割ります。二乗和が大きい(=これまでよく動いた)パラメータほど実効学習率は小さく、二乗和が小さい(=まだあまり動いていない)パラメータほど実効学習率は大きく保たれる、という自動調整が働きます。
なぜ疎なデータに強いのか
疎なデータでは、まれにしか現れない特徴に対応するパラメータには、たまにしか勾配が届きません。SGDならこうしたパラメータの学習は遅々として進みませんが、AdaGradでは「勾配の累積が小さい=実効学習率が大きい」ため、貴重な出番が来たときに大きく学習できます。頻出特徴は小さな歩幅で安定して、希少特徴は大きな歩幅で逃さずに——この非対称な扱いこそAdaGradの真骨頂です。
宿命的な弱点: 学習率の単調減少
一方で、勾配の二乗和は「足し込む一方」で減ることがありません。訓練が長引くほど分母は大きくなり続け、実効学習率はすべてのパラメータで単調に下がっていきます。最適解にたどり着く前に歩幅がほぼゼロになり、学習が止まってしまうことがあるのです。
この弱点への対策が、次世代のRMSPropとAdaDeltaです。両者は「二乗和の単純累積」を「指数移動平均」に置き換え、古い勾配を徐々に忘れることで学習率が枯れないようにしました。さらにその発想はAdamへと受け継がれます。つまりAdaGradは、後続手法すべての出発点であり、弱点までもが系譜を駆動した重要な手法なのです。
💡 具体例で考える
大量のニュース記事から文書分類モデルを学習する場面を考えます。単語を特徴量にすると、「する」「こと」のような超頻出語と、「量子暗号」のような専門語が同居する典型的な疎データになります。SGDでは、専門語に対応する重みは登場のたびにわずかしか動かず、分類の決め手になる希少語の情報がなかなかモデルに反映されません。AdaGradなら、希少語の重みは累積が小さいぶん実効学習率が大きく、数少ない登場機会で一気に学習が進みます。検索広告のクリック予測など、特徴量が膨大かつ疎な業務領域で適応的手法が広まった背景には、この性質があります。
⚠️ よくある誤解・紛らわしい用語
- 「学習率が不要になる」わけではない — 基準となる学習率は与えたうえで、それをパラメータごとに自動で割り引く仕組みです。ハイパーパラメータ調整が「比較的容易」になる、が正確な理解です。
- RMSProp・AdaDeltaとの関係 — この2つはAdaGradの「学習率が下がり続ける」弱点を指数移動平均で直した後継です。「単純な二乗和の累積」と来たらAdaGrad、「指数移動平均」と来たら後継の記述です。
- モーメンタムとの混同 — モーメンタムは過去の「勾配の方向」を更新に加算して勢いをつける手法、AdaGradは過去の「勾配の大きさ」で歩幅を調整する手法です。着目点が違います。
- 勾配そのものを変えるのではない — AdaGradが調整するのは学習率(歩幅)であり、勾配の方向は変わりません。
📝 試験でのポイント
- 定義問題では「過去の勾配の二乗和を累積」「ベクトルの各要素(パラメータごと)に異なる学習率」がキーフレーズです。
- 「疎なデータに有用」という長所は、AdaGradを特定させる決定的なヒントとしてよく使われます。
- 「長い訓練期間で学習率が極端に小さくなり学習が停滞する」という弱点と、それを改善した手法(RMSProp/AdaDelta)の対応を問う問題が最頻出パターンです。
- 系譜の並べ替え問題では、SGDとRMSProp/AdaDeltaの間に位置する「適応的学習率の元祖」として押さえておきましょう。
📚 まとめ
- AdaGradは、過去の勾配の二乗和をパラメータごとに累積し、各パラメータに異なる学習率を適用する適応的最適化の元祖です。
- あまり更新されていないパラメータほど大きな歩幅で学習できるため、疎なデータに特に有効です。
- 学習率調整が自動化されるためハイパーパラメータ調整は比較的容易ですが、二乗和の単調増加により長期訓練で学習が停滞する弱点があります。
- この弱点を指数移動平均で改善したのがRMSPropとAdaDeltaであり、AdaGradは以後の最適化手法の系譜全体の出発点となりました。
