Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Optimizer⼊⾨ & 最新動向
⼿塚研究室
本川哲哉
Optimizerとは
• Optimization(最適化)する者
• 機械学習の⽂脈では、損失関数の値をできるだけ⼩さくするパラメータの
値を⾒つけることを最適化(Optimization) といい、その⼿法を指して
Optimizerと呼ぶ。
• 関数の最⼩化と⾔うと、ラグランジュの未定乗数法、ニュートン法、共役
勾配法など⾊々あるが、機械学習タスクに使われているOptimizerは主に
計算量的な観点から1階微分の勾配降下法がベースとなる。
みんな⼤好き確率的勾配降下法
• Stochastic Gradient Descent
• 最近流⾏りのあらゆるOptimizerの基礎
• ミニバッチごとに勾配降下法を適⽤するため、局所解に陥りに
くい!
引⽤:⼿塚先⽣の本
シンプルだけど不便!
• 学習率の初期値を設定しにくい
• 初期値の設定に失敗すると劇的に悪化
・・・SGDを改良していこう!
引⽤:https://www.slideshare.net/kisa12012/sgd-future-best-27314417?next_slideshow=1
Momentum SGD
「慣性付けるか」
下図のように、より収束に関連性のある⽅向にSGDを加速させて、振動を
抑制する。
引⽤: http://postd.cc/optimizing-gradient-descent/#adagrad
Nesterov accelerated gradient (NAG)
「慣性に加えて⼀歩先の位置での勾配を使おう」
現在のパラメータの勾配ではなく、未来のパラメータの推定位置を計算す
ることで効率的な予測が可能になる。
引⽤:http://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf
Adaptive Learning Rate(適応学習率法)
今までは全てのパラメータに対して同じ学習率を掛けていた。
稀にしか観測されないパラメータにはより⼤きな更新を、よく観
測されるパラメータにはより⼩さな更新をさせたいよね。
・・・学習率をパラメータ(軸)毎に適応させよう!
Adagrad(Adaptive Gradient)
<⽋点>
• エポックを重ねるごとに過去の学習率が累積していき、やがて0に漸近してしまう
• 学習の初期に勾配の⼤きな場所を通ると、それ以降その軸⽅向の勾配は⼩さいまま
になってしまう
RMSprop
「過去全部ではなく最近の勾配の⼆乗和のみ使おう」
指数関数的に減衰する指数移動平均によって、極めて遠い過去の勾配
は取り除く。
⾮凸の条件下でAdagradの性能を改善.
凸関数・⾮凸関数
引⽤: http://ogyahogya.hatenablog.com/entry/2016/05/19/凸解析
Adagradは凸関数では急速に収束するが、⾮凸関数ではうまく機
能しない。RMSpropでこの⽋点を改善。DNNで表現される多く
の関数は⾮凸。
Adadelta
「過去全部ではなく最近の勾配の⼆乗和のみ使おう、
さらに次元も合わそう。」
Adagrad、 RMSpropなどは全て次元がおかしい.
>次元とは?
横軸t(s)、縦軸x(m)のyという関数を考えるとき,
yの勾配(速度)の単位はm/sである。
勾配降下法では、x(m)を勾配(m/s)で更新
していることになるので、次元が合わない!
ここでの勾配降下法:𝑥"#$ = 𝑥" − 𝜂
()*
("
引⽤: https://physnotes.jp/mechanics/motion_diff/
Adadelta
もはや⾃分で学習率をチューニングする必要がない!!
Adam(Adaptive moment estimation)
「勾配の1次(平均)と2次(分散)のモーメント推定しよう」
結局どれが良いの??
• 今のところ、⼈間が経験的に「このタスクにはこのOptimizer
を使う」のような決め⽅をしている
• ⼊⼒データが疎な場合、適応学習率法のどれかを使うと良い
• Adamが最強というわけではない
むしろタスクによってはSGDの⽅がより良い性能を⾒せることもある…!
最近の流れの1つ:Adamを改良しよう!
Weight decay
• DNNにおいて、多層になるほどモデルの表現⼒は増すが、その
分オーバーフィッティングの危険性も⾼まる
• そこでパラメータの⾃由度を制限するWeight decayが⽤いられ
る
• 重みの⾃由度を制限するという意味で、これはL2正則化と同じ
効果を得ると理解できる
Adam with Weight decay
新しい更新式
⼩さなデータセットやCIFAR-10のデータセットではAdam with
Weight decayの⽅が通常のAdamよりもパフォーマンスが向上.
Fixing the exponential moving average
• 指数移動平均(EMA)とは、指数関数的に減衰する重み付き平
均のことで、Adamのような適応学習率法の基本的な考え⽅
• Adamで最適解を狙う場合、⼀部のミニバッチでは有益な勾配
が得られるが、そのようなミニバッチは稀にしか現れない
→そこでパラメータ更新時に⼆乗勾配に関してはEMAではなく、過去の
⼆乗勾配の最⼤値を⽤いるAMSgradという⼿法が提案された。
Learning rate annealing schedule
• 学習率アニーリング
• annealing:焼きなまし
• ⼀旦⼤きくなりすぎた学習率をもう⼀度⼩さくするイメージ
• つまり、勾配降下法における損失関数の下がり⽅を調整してい
る
興味深い⼀例:Adam+以下の学習率アニーリングによって機械翻訳タスクに成功
Warm Restarts
• cosineなどを⽤いた周期的な学習率アニーリング
• 通常の学習率アニーリングよりも2~4倍のエポックが必要とな
るが、同等以上のパフォーマンスを達成する。
Restart後の⾼い学習率によって、前に収束
した最⼩値から損失関数の異なる領域へと
抜け出せるようになる。
引⽤:http://ruder.io/deep-learning-optimization-2017/index.html#fnref:22
課題と今後の⽅針
• 今のところタスクによって最適なOptimizerは異なる
• ⼈間が経験的にこれ!ってやつを使っている
• Adamのような複雑な最適化よりも、シンプルで軽いSGDが使われることも少なくない
• 最適化理論(局所解の性質、最適化の簡単さ etc...)
• 損失関数の形⾃体が分かれば、勾配が消失するor爆発するタイミングが分かって、⼤幅
な改善につながるのでは
• また、損失関数の構造が分かればどのタスクにどのOptimizerが効くかが分かる?
• 近似理論(表現⼒解析、層とノードの関係 etc...)
• 2階微分まで盛り込んでいるニュートン法(計算量がとてつもなく⼤きいが収束が早い)
と1階微分の通常の勾配降下法を交互に組み合わせる⽅法は⾯⽩そう
• Adadeltaで議論されている次元おかしい問題の突き詰め
参考⽂献
• Sebastian Ruder. “An overview of gradient descent optimization algorithms”. http://ruder.io/optimizing-gradient-descent/.
• Sebastian Ruder. “Optimization for Deep Learning Highlights in 2017”. http://ruder.io/deep-learning-optimization-
2017/index.html.
• Ian Goodfellow and Yoshua Bengio and Aaron Courville. “Deep Learning”. http://www.deeplearningbook.org.
• Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., … Polosukhin, I. (2017). Attention Is All You
Need. In Advances in Neural Information Processing Systems.
• Loshchilov, I., & Hutter, F. (2017). SGDR: Stochastic Gradient Descent with Warm Restarts. In Proceedings of ICLR 2017.
• Loshchilov, I., & Hutter, F. (2017). Fixing Weight Decay Regularization in Adam. arXiv Preprint arXi1711.05101. Retrieved
from http://arxiv.org/abs/1711.05101
• Zeiler, M. D. (2012). ADADELTA: An Adaptive Learning Rate Method. Retrieved from http://arxiv.org/abs/1212.5701
• Kingma, D. P., & Ba, J. L. (2015). Adam: a Method for Stochastic Optimization. International Conference on Learning
Representations, 1‒13.
• Masaaki Imaizumi. “深層学習による⾮滑らかな関数の推定”. SlideShare.
https://www.slideshare.net/masaakiimaizumi1/ss-87969960.
• nishio.”勾配降下法の最適化アルゴリズム”. SlideShare. https://www.slideshare.net/nishio/ss-66840545

More Related Content

Optimizer入門&最新動向