Slide 1

Slide 1 text

1 SGD Momentum の 気持ちを理解する 2020/02/11 nyk510

Slide 2

Slide 2 text

Hello! 山口貴大 atma(アートマ)株式会社 取締役 DS / ふろんと / ばっくえんど / いんふら 京都大学大学院 最適化数理卒 SGDが好き Kaggle Master kaggle.com/nyk510 2

Slide 3

Slide 3 text

準備 以下では次の x を最小化する問題を考えます 3

Slide 4

Slide 4 text

そんな問題あるの? あります。期待値はだいたいデータの平均になるのでこうも書けます。 よくある設定で言うと…Neural Network での学習の問題 ● f: 今の重みxでの誤差関数 ● ζ での期待値: 学習データ全体の平均 なんらかの方法でこの方程式を解く必要がある 4

Slide 5

Slide 5 text

しってるよ! NNだったらSGDでしょ ● 最近よく使われるのが SGD (Stochastic Gradient Descent) ○ 特に Neural Network への最適化は事実上1強 ● 1つのサンプルに対する勾配だけで更新する ○ 計算が軽い・NNで経験的に良い SGD (Stochastic Gradient Descent) ちなみに: Gradient Descent は 全部使う 5

Slide 6

Slide 6 text

SGDも種類がいろいろある ● Momentum 項をもたせるパターン ○ 前の更新のときの勾配「も」使う ● 加速法 (Nesterov’s Accelerated Gradient) を使うパターン ○ 勾配の評価を momentum を 考慮した点で行う ● Adaptiveに改造 ○ Adagrad, Adadelta, Adam ... ● ほかにもいろいろ 6

Slide 7

Slide 7 text

どれがいいんだろう… ● 簡単な問題(線形回帰とか)は昔から研究がされていて知見が多い ● 一方で最近の応用問題は凸じゃないことが多い ○ たとえば Neural Network ○ 凸最適化で良い物が必ずしも非凸最適化で良いわけでもない ○ SVRGという良い性質を持つ手法がSGDに勝てなかったり On the Ineffectiveness of Variance Reduced Optimization for Deep Learning [Nips2019] ● 色々な手法が出ているがMomentumの形式の違いなどによる影響の明確な 理解は進んでいない 7

Slide 8

Slide 8 text

きになること 使う側の気持ちになるとこんなことが気になるはず ● どういう条件だったら目的関数が収束するの? ● 収束するとしたらどのぐらいの速さ? ● 得られる解はどのぐら良い解? 8

Slide 9

Slide 9 text

Understanding the Role of Momentum in Stochastic Gradient Methods SGDにおけるMomentum(と加速法)のパラメータと収束の関係を考えた論文 https://papers.nips.cc/paper/9158-understanding-the-role-of-momentum-in-stochastic-gradi ent-methods 9

Slide 10

Slide 10 text

論文で言っていること 漸近的な収束保証 ● どういう条件だったら目的関数が収束するの? Localな収束率: Local Convergence Rate ● 収束するとしたらどのぐらいの速さで収束するの? ● どんなパラメータの組み合わせが良い? 定常解析: Stationary Analysis ● 得られる解はどのぐら良い解? 10

Slide 11

Slide 11 text

論文で言っていること 漸近的な収束保証 ● どういう条件だったら目的関数が収束するの? Localな収束率: Local Convergence Rate ● 収束するとしたらどのぐらいの速さで収束するの? ● どんなパラメータの組み合わせが良い? 定常解析: Stationary Analysis ● 得られる解はどのぐら良い解? 11

Slide 12

Slide 12 text

議論の前に… ● α: 学習率 ● β: momentumの強さ. 1のとき gradientを全く使わない ● γ: 更新の時に使う勾配の強さ ● 論文中で取り上げるSGDは以下の形式で表現できるものにします 通常のMomentum・加速法を使った手法(NAG)もこの形式で表現可能 12

Slide 13

Slide 13 text

Q: どういう条件だったら目的関数が収束するの? ● まず収束するとは… 停留点に大体存在するようになること ● β→0 の時 ○ βの意味: Momentumの大きさ ○ β=0は要するにMomentumなし == SGDとほぼ一緒 ○ イメージどおりSGDと同じように証明出来る (Theorem1) ● 面白いのはβが0にならない時の証明(Theorem2) 13

Slide 14

Slide 14 text

A: α→0よりゆっくりとβγ→1になれば収束 お気持ちを考えると… ● α→0 ○ LRを減らしてだんだんランダムな効果をなくしている ● βγ→1 ○ momentumの割合をどんどん増やして1にしても収束する 14

Slide 15

Slide 15 text

βγ→1をもうちょっと考える お気持ちを考えると… ● β,γ=1のときは勾配の項 g が消える → 最終的には勾配情報を全く使わなくて収束すると言っている 更新ルールを思い出だす 15

Slide 16

Slide 16 text

ある種の収束は保証されたけれど… ● 最終的に0にしたり1にしたりすると収束するよと言っているに過ぎない ● 実際に最適するときはまだ考えることがある ○ どのぐらいの速さ?(速ければ速いほど良い) ○ またどのパラメータの組が速い? ○ 停留点の解はどのぐらい小さいか(小さければ小さいほど良い) 16

Slide 17

Slide 17 text

論文で言っていること 漸近的な収束保証 ● どういう条件だったら目的関数が収束するの? Localな収束率: Local Convergence Rate ● 収束するとしたらどのぐらいの速さで収束するの? ● どんなパラメータの組み合わせが良い? 定常解析: Stationary Analysis ● 得られる解はどのぐら良い解? 17

Slide 18

Slide 18 text

どのぐらいの速さで収束するの? 仮定 ● α・β・γ を定数とする (iterationによって変化しない) ● 目的関数を二次近似して考える ○ ヘシアンは半正定値とする ○ 非線形関数でも局所解近傍では二次近似して考えることが可能 18

Slide 19

Slide 19 text

Theorem3: 収束の速さに関する定理 収束のためには(13) の条件を満たしておく必要がある 19

Slide 20

Slide 20 text

どんなパラメータの組み合わせが速い? 直感的に「Amount Of Momentum」を制御するのが良さそうに思える ● どのぐらいモーメント項を入れるのがという観点 ● モーメントの量は大体 β × γ で決定する どのぐらいで収束するかわかった→収束が最も速いα/β/γが計算できる 20

Slide 21

Slide 21 text

最適な値の関係性 (a,b): 最適なβはγに対して単調減少 直感通り (a,b) γに対しての最適なβを出したもの 21

Slide 22

Slide 22 text

最適な値の関係性 (a,b) γに対しての最適なβを出したもの (c,d) βに対して最適なγを出したもの (c,d): 複雑な挙動. パターンが見えな い (a,b): 最適なβはγに対して単調減少 (a,b) γに対しての最適なβを出したもの たんにMomentumの総量を考えればよいというわけではない 22

Slide 23

Slide 23 text

論文で言っていること 漸近的な収束保証 ● どういう条件だったら目的関数が収束するの? Localな収束率: Local Convergence Rate ● 収束するとしたらどのぐらいの速さで収束するの? ● どんなパラメータの組み合わせが良い? 定常解析: Stationary Analysis ● 得られる解はどのぐら良い解? 23

Slide 24

Slide 24 text

得られる解はどのぐらい良い解? 仮定 ● 目的関数: 同じように二次近似 ● 各パラメータ: 定数にfix ねらい ● 収束した目的関数値や最適値がどのような値をとるか? (かかる時間は一旦置いておく) 24

Slide 25

Slide 25 text

Theorem4: 最適解の分散に関する定理 ● 左辺: 最適解の共分散行列 停留点での最適解の分散はαの一次の項で決まる(βやγは関係ない) → 最適解に対しては学習率がもっとも影響を与えることが分かる 25

Slide 26

Slide 26 text

Theorem5: もっと踏み込んで では α の二次の項まで見てみたら? ● 左辺 tr(A∑x) は目的関数の二倍に一致→ 実質的に目的関数の値 ● γ=1 (SHB) や γ=β(NAG) だとβを1に近づけると達成できる目的関数値は小 さくなる 26

Slide 27

Slide 27 text

実験@Figure3 条件 ● 二次元の二次問題 ● 収束率が影響しないように 最適解からスタートして得られる平均的な解の大きさを調べる 結果 ● αとβの関係性 ○ 理論通り小さいαと大きいβが良い目的関数値を達成 (白いほど値が小さいことを表す) パラメータごとの目的関数の値を 比較 27

Slide 28

Slide 28 text

実験@Figure3 ● γとβの関係性について ○ βを固定したとするとあるγで最小をとる二次式にみえる ○ γを1に固定しない方法が成功している理由のひとつと考えられる (いい感じにγを決めたほうが最終的に良い解にたどり着く) 28

Slide 29

Slide 29 text

実験@Figure3 証明の仮定が満たされていない ものでも実験 ● ロジスティック回帰@MNIST: 凸だがミニバッチからくるノイズが含まれる ● ResNet18@CIFAR10: 非凸+ミニバッチのノイズで全く満たされない これらでも値の関係性が似通っていることを確認 (小さいαと大きいβが良い値) 29

Slide 30

Slide 30 text

おさらい ● 漸近的な収束保証 Q: どういう条件だったら目的関数が収束するの? A: γβ → 1 で α → 0 より遅ければ ● 局所的な収束率 Q: 収束するとしたらどのぐらいの速さ? A: 値の条件がある。最適な組合せは複雑。 ● 定常解析 Q: 得られる解はどのぐら良い解? A: αが小さいほど良い解。二次まで考えるとβが1に近いほうが良い 30

Slide 31

Slide 31 text

「良いパラメータ」を探そう ● そもそも… ○ 良いパラメータを決める方法を探していたんでした ○ いままでで明らかになったことを使ってパラメータを決めてみましょ う 1. 収束が保証されている 2. 早く収束する 3. 良い解に収束する (得られる目的関数の値が小さくなる) 「良いパラメータ」とは… 31

Slide 32

Slide 32 text

良いパラメータを考える 1. 収束が保証されている ○ γβ→1or β→0とすれば収束するのでそこまで困らなさそう 2. 早く収束する 3. 良い解に収束する (得られる目的関数の値が小さくなる) ○ この2つは一般にトレードオフ ○ しかしいままでの結果を使えば 相反しない決め方が考えられる 32

Slide 33

Slide 33 text

速くて・良い解を求めて [定理から言えること] ● γ=1とする(i.e. SHB) と特定の条件を満たせば収束率は√βのみに依存 ● 固定されたβに対してもっとも収束が速いα*は収束可能な最大のαより も小さい βを固定するMomentumの場合、大きいαからはじめて収束しなくなったタ イミングで切り下げる戦略が有効 (収束可能なαの中で最も小さいものを探りながら最適化するイメージ) (一般に用いられる Reduce LR Scheduling に相当) 33

Slide 34

Slide 34 text

まとめ ● Momentum+加速法を理解することはNNなどの非凸関数の最適化を行う際 にとても重要 ● 漸近的な収束・収束の速度・得られる解の性能を評価しパラメータに対す る理論的・実験的裏付けを提案 34

Slide 35

Slide 35 text

参考文献など ● Sutskever, Ilya, et al. "On the importance of initialization and momentum in deep learning." International conference on machine learning. 2013. ● Bottou, Léon, Frank E. Curtis, and Jorge Nocedal. "Optimization methods for large-scale machine learning." Siam Review 60.2 (2018): 223-311. 35