モデルが実際に学習する仕組み——つまみごとに歩幅を変え、記憶を持つ。

SRC·45 Source
素朴な勾配降下は、10億のつまみに同じ歩幅を使う。

素朴な勾配降下は、10億のつまみに同じ歩幅を使う。

勾配降下には手で決めるつまみが一つある——歩幅だ。その同じ数値で、モデルの重みすべてを動かす。10億個を、まったく同じに。だが各重みが乗る斜面は大きく異なる。優れたオプティマイザはこれを直す——どの重みにもそれぞれの歩幅を与え、これまで進んできた向きの短い記憶を持たせる。
測る傾きは小刻みに揺れる——そのまま追えば、よろめく。

測る傾きは小刻みに揺れる——そのまま追えば、よろめく。

各ステップの傾きは、ほんの一握りの例から読み取る。だから小刻みに揺れ、毎回少しずつ違う方を指す。そのまま追えば、よろめきながら下る。横風の突風になびく吹き流しのように:突風のたびに新しい角度へ跳ね、どの一瞬の振れも、その奥にある定常の風を教えてはくれない。
傾きを一つずつ追うな。その移動平均を追え。

傾きを一つずつ追うな。その移動平均を追え。

mt=β1mt1+(1β1)gtm_t = \beta_1\, m_{t-1} + (1-\beta_1)\, g_t
ぴくつく傾きを一つずつ追うな。移動的に混ぜ続けよ——大半はこれまでの進路で、最新の読みで少しだけ押される。揺れは打ち消し合い、本当の向きが育つ。斜面を転がる重い岩のように:小さな凹凸をならし、自分の線を保つ。その混合がmomentumだ。次の向きは、ほぼ今まで進んでいた方向で、最新の傾きへわずかに傾く。
一つの歩幅で、10億の異なるつまみには合わせられない。

一つの歩幅で、10億の異なるつまみには合わせられない。

θt+1=θtηgt\theta_{t+1} = \theta_t - \eta\, g_t
素朴な降下が決して直さない落とし穴がここにある。その単一の歩幅 η は、すべてのつまみの傾きを同じように掛ける。だが、あるつまみは急で激しい斜面に乗り、ごく小さな慎重な一歩を要する。別のつまみは平らで穏やかな斜面に乗り、大股で進めるはずだ。どの坂にも自転車のギアが一つきりのように:平地では快適、登りでは過酷、下りでは怠け。一つの比——共有された一つの η——では、すべてに合わせられない。
ならば、つまみごとに自前の歩幅を——その荒さに応じて。

ならば、つまみごとに自前の歩幅を——その荒さに応じて。

vt=β2vt1+(1β2)gt2,η~t=ηvt+ϵv_t = \beta_2\, v_{t-1} + (1-\beta_2)\, g_t^{2}, \qquad \tilde{\eta}_t = \dfrac{\eta}{\sqrt{v_t}+\epsilon}
そこで、つまみごとに自前の歩幅を与える。その傾きがどれだけ荒かったか——勾配の二乗の移動平均——を追い、そのつまみの一歩をそれで割る。傾きが暴れるつまみは抑えられ、穏やかなつまみは自由に動ける。節のまわりを紙やすりで削るように:木目が逆らうところは力を抜いてゆっくり、なめらかなところは速く滑らせる。平たく言えば、最近の傾きが大きければそこの一歩は縮み、小さければ伸びる。
どちらの平均もゼロから始まる。だから最初の数歩は小さく出すぎる。

どちらの平均もゼロから始まる。だから最初の数歩は小さく出すぎる。

m^t=mt1β1t,v^t=vt1β2t\hat{m}_t = \dfrac{m_t}{1-\beta_1^{\,t}}, \qquad \hat{v}_t = \dfrac{v_t}{1-\beta_2^{\,t}}
ひとつ難点がある。どちらの移動平均もゼロから始まるので、最初の数歩ではあまりに小さく出る——傾きが小さいからではなく、集計が始まったばかりだからだ。今週、空から始めた小銭の瓶のように:積み上がった合計が小さく見えるのは、何もないところから始めたからにすぎない。修正はこの出だしの分を割り戻し、若いうちは各平均を引き上げる——集計が満ちるにつれ消えていく補正だ。
定まった進路と、つまみごとの歩幅——それがオプティマイザのすべて。

定まった進路と、つまみごとの歩幅——それがオプティマイザのすべて。

θt=θt1ηm^tv^t+ϵ\theta_t = \theta_{t-1} - \eta\, \dfrac{\hat{m}_t}{\sqrt{\hat{v}_t}+\epsilon}
すべてを組み合わせる。momentum が向きを選ぶ——ならされた、揺れのない進路だ。つまみごとの歩幅が各一歩を選ぶ——傾きが穏やかなら長く、暴れるなら短く。一行が両方をこなす。急流を読むカヤッカーのように:本流の筋を保ちつつ、一漕ぎごとに加減する——なめらかな水では優しく、沸き立つところでは力強く。これが Adam、ほとんどすべてを学習させるオプティマイザだ(通常 β₁=0.9, β₂=0.999)。
🌱 同じ丘、同じ出発点——だが谷を選んだのはオプティマイザだ。

🌱 同じ丘、同じ出発点——だが谷を選んだのはオプティマイザだ。

momentum とつまみごとの歩幅があるため、下り坂の道はもはや地形のものではない——オプティマイザのものだ。まったく同じ丘の、まったく同じ地点から二つを走らせても、より重い記憶や、より大胆な歩幅が、それぞれを別々の谷へ運びうる。では学習が止まったとき、私たちはその底を見つけたのか——それとも、たまたま momentum が転がし込んだ底にすぎないのか?
タップ →↑スワイプで詳しく↓スワイプで終了