-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[1908.03265] On the Variance of the Adaptive Learning Rate and Beyond [paper-reading] #50
Comments
久しぶりに paper-reading を書こうと思って、GitHub でもかなり注目されている RAdam の論文を読んでみることにした。最近の学習率スケジューリングは catch up してなかったので、新しめのものを読んで知識をつけようという目論み。 既に一通り読んでいて、どうも納得できない点がある。最初にそれを列挙しておこう。
これは根拠に乏しい気がするが、OpenReview の著者らのコメントを見ても future work という感じのようだ。こういう場合に問題が発生するというのは simplified case (2-layer CNN とか) では示されているとのこと。
これは 誰か詳しい人いたら教えてください。 |
warmup を入れる場合は最初の数エポックは $ α_t = t α_0 $ のように単純な linear scale で学習をして、それ以降は上記のアルゴリズムで学習していくことになる。 勾配 $ g_t $ はパラメタの次元だけ成分があるので、それぞれの成分の絶対値を取ってヒストグラムを作って分布を見てみたのが以下の図である。なんで絶対値を取ってるのかはよく分からない。 この勾配のヒストグラムだけを見て学習がうまくいったうまくいかないを結論づけるのは難しい気がするが、warmup あるなしで振る舞いが大きく異なり得る、というのは確かにあるらしい。 流れとしては、学習初期で分布の歪みが大きい場合に学習がうまくいかないと仮定する → これを引き起こす一つの要因は $ v_t $ の各要素の分散が大きい時(ちなみに演算は全て element-wise である)→ この分散が大きいというのは $ \psi $ の解析をする事で正当化される → warmup はそれを防ぐ役割を担っている → これを受けて新しい手法を提案、という感じである。 |
まずは parameter β を忘れて ψ$ (g) = \sqrt{ 1/g_1^2 } $ という場合を考える。
カイ二乗分布とは何だったのか、使うのがあまりに久しぶりだったので復習がてら確率密度関数 (x > 0) を思い出しておく。 自由度 1 の逆カイ分布の分散が発散するという計算は以下。 |
warmup が variance reduction の働きをしていることを踏まえ、簡単な手法として
を提案。 これで論文の主張が正しそうなのではないかという雰囲気が出てくる。 |
(1) 式に戻って、epoch 数が小さいときの $ \psi $ を考えてみる。 この形にしてしまえば、$ g_i $ が N(0, σ2) に従うというものだったので、$ t / \sum g_i^2 $ は自由度 $ t $ のスケールされた逆カイ二乗分布に従うことになる。 ここまで来ると、以降はあまり真面目に読まずとも論文の言わんとすることは分かる。 よって、少なくとも $ t $ が小さいうちは |
Theorem 1 で自由度が大きくなる毎にスケールされた逆カイ二乗分布の分散が減少することが示されているが、これは定理とすべきほどのものでもない単純な計算である。 自由度 ρ を β の言葉で書き直そう。 exponential moving average は simple moving average として近似することがよくあるらしい。 これまでの議論を思い出せば、この $ f(t,β_2) $ が自由度として働いているわけなので、(5) 式は自由度 $ f(t,β_2) $ のスケールされた逆カイ二乗分布に従うということになる。 また、$ t $ を無限大に飛ばしたものを $ ρ_∞ $ と定義している。 |
問題の分散であるが、やりたいことは分散を大きくしないように保つことであった。 ψ の解析的な表式も求まっているのでこれで終了かと思いきや、数値的に不安定なので工夫を施す。 $ \psi^2 $ が自由度 $ ρ_t $ のスケールされた逆カイ二乗分布に従うことから、この近似で得た $ Var[\psi^2] / 4 E[\psi^2] $ を使えば、$ Var[ψ] $ は以下のように計算できる。スケールされた逆カイ二乗分布のモーメントはガンマ関数を考えれば計算は難しくないし、面倒であれば wikipedia を見ればよい($ τ^2 = 1/σ^2 $ と読み替えればよい)。 最終的に求めたかった $ r_t $ はこれを分母にして分子は $ ρ_∞ $ にしたもので全体の√を取ったものであったので、以下が必要な rectification term である。 |
実験も色々とやっているが、代表的なものを紹介しておく。 warmup とも比較していて、RAdam と同程度の性能を出すには warmup をどこまでやるかを tune しないといけないという結論を出している。 RAdam は細かい tuning いらずでかなり良い性能を発揮する、というのが利点である。 |
最後に、論文で仮定したものがどれくらい正そうかを検証している。 分散の計算で期待値周りで Taylor 展開した正当性は以下の図で示されているとのこと。 gi が平均 0 の正規分布に従うという仮定は、0 じゃないかもしれないので $ μ $ として $ g_i $ をサンプルしてオリジナルの適応的学習率と提案手法を比較している。結果が下の図で iteration が小さいうちはオリジナルの値が大きくて提案手法が小さいので、確かに提案手法で分散を抑えられているという主張。 |
ということで一通り読んだ。 解析としても難しくはないのだが、仮定の部分で自分は納得がいっていない。 |
論文リンク
https://arxiv.org/abs/1908.03265
公開日(yyyy/mm/dd)
2019/08/08
概要
Adam が抱える学習初期に学習率の分散が発散するという問題に着目し、それを解決する RAdam を提案。
経験的に warm up (学習初期は linear でスケールする小さな学習率で学習し、その後に所望の学習率スケジューリングでの学習につなげる) がうまくいくことを知っているが、その必要性を Adam では学習初期の学習率分散の発散と対応づけて説明。
肝になるのは、エポック数が小さい時に、gradient g が標準正規分布に従う → 1/g が逆カイ分布に従う → これは自由度が小さい時は分散が発散 → Adam の学習率はこれを使うので学習初期に望ましくない振る舞いをしてしまう、という流れである。
分散が大きくなるのが問題なのかという点に関しては、経験的に勾配の各成分の絶対値が比較的小さい平均の周りで大きな分散で分布するということを示して、うまく学習が進まなくなってしまうと主張している。
提案する RAdam では分散が ill-defined な学習初期ではモーメンタム法を使用し、それ以降では補正込みの Adam で学習することでこの問題を回避する。
学習率の初期値によって振る舞いが大きく変わる Adam や SGD とは異なり、RAdam はどのような初期値でも安定して良い性能を発揮することを示した。
著者実装:https://github.com/LiyuanLucasLiu/RAdam
The text was updated successfully, but these errors were encountered: