本文へ移動

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

あだばうんど

アダバウンド

AdaBound

Adamの学習率に、時間とともに狭まる下限と上限を設ける最適化手法。学習初期はAdamのように、学習が進むとモーメンタム付きSGDのように振る舞う。

詳しい説明

何を解決しようとしたか

AdaBound(アダバウンド)は、Adamの変種として提案された最適化手法です。同じ論文で、AMSGradの変種にあたるAMSBoundも提案されています。

SGDには、勾配をすべての方向に同じ比率で扱うという弱点があります。これに対し、Adagrad、RMSprop、Adamといった適応的な手法は、過去の勾配の二乗の平均にあたる量の平方根で勾配を割ります。こうしてパラメータの要素ごとに学習率を調整します。なかでもAdamは学習が速いため、多くの深層学習フレームワークで標準の手法として使われてきました。

ただし、適応的な手法には問題もあります。学習の初期は速く進みますが、未知のデータ(検証用やテスト用のデータ)に対する性能はすぐに伸びなくなります。そのため、SGDと比べて汎化性能が劣りやすくなります。さらに、要素ごとの学習率が不安定になったり、極端な値になったりして、収束しない場合もあります。AMSGradなどの改良も提案されていましたが、既存の手法を大きく上回る改善には届いていませんでした。論文は、極端な学習率が性能の低下につながりうることを示しています。

学習率をクリッピングする

AdaBoundの着想は勾配クリッピングから来ています。勾配クリッピングは、勾配爆発を避けるために、閾値を超えた勾配を切り詰める手法です。AdaBoundは勾配ではなく、Adamの要素ごとの学習率 α/sqrt(V_t) を次のようにクリッピングします。

Clip(α/sqrt(V_t), η_l(t), η_u(t))

これは、学習率を要素ごとに下限η_l(t)と上限η_u(t)の範囲 [η_l(t), η_u(t)] に収める操作です。この形で見ると、η_l = η_u = α* の場合は一定のステップ幅α*を使うモーメンタム付きSGDにあたります。η_l = 0、η_u = 無限大 の場合は、制限のないAdamにあたります。

範囲を時間とともに狭める

AdaBoundの要点は、下限と上限を定数ではなく、時刻tの関数 η_l(t)、η_u(t) にしたことです。

  • η_l(t) は非減少関数で、t=0 のとき0から始まり、しだいにα*へ近づく
  • η_u(t) は非増加関数で、t=0 のとき無限大から始まり、同じくα*へ近づく

学習の初めは範囲がほぼ [0, 無限大] なので、制限はほとんど効きません。このためAdaBoundはAdamとほぼ同じように動きます。学習が進むと範囲が狭まり、学習率はα*の近くに収められていきます。その結果、動きは少しずつモーメンタム付きSGDに近づきます。ある時点で手法を切り替えるのではなく、適応的な手法からSGDへ滑らかに少しずつ移っていく点が特徴です。

報告されている効果

論文では、収束することが理論的に証明されています。また、さまざまなタスクとモデルで実験した結果として、次の3点が報告されています。学習初期の速さを保てること。適応的な手法とSGDの間にあった汎化性能の差をなくせること。とくに複雑で深いネットワークでは、元になったAdamやAMSGradより大きく性能が上がること。

試験で問われること

G検定

  • AdaBoundはAdamの変種である。要素ごとの学習率 α/sqrt(V_t) を、下限η_l(t)と上限η_u(t)でクリッピングし、時刻とともに変わる範囲に学習率を収める最適化手法である。
  • 提案の動機は、Adam、Adagrad、RMSpropなどの適応的な手法の問題にある。学習初期は速い一方で、SGDより汎化性能が劣りやすく、不安定で極端な学習率のために収束しないこともある。
  • 下限η_l(t)は0から始まる非減少関数、上限η_u(t)は無限大から始まる非増加関数である。学習が進むにつれて、どちらも一定の値α*へ近づいていく。
  • 学習初期は範囲が広く制限がほとんど効かないため、Adamのように動く。範囲が狭まるにつれて、モーメンタム付きSGDへ滑らかに少しずつ移っていく。これが中心となる考え方である。
  • 着想は、閾値を超えた勾配を切り詰める勾配クリッピングである。η_l=η_u=α*ならモーメンタム付きSGD、η_l=0かつη_u=無限大ならAdamにあたる。同じ論文ではAMSGradの変種AMSBoundも提案された。

最終更新日: 2026/09/23