Optimizer入門&最新動向

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
1 of 21

More Related Content

What's hot(20)

近年のHierarchical Vision Transformer近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer
Yusuke Uchida13.8K views
最適化超入門最適化超入門
最適化超入門
Takami Sato174.5K views
Curriculum Learning (関東CV勉強会)Curriculum Learning (関東CV勉強会)
Curriculum Learning (関東CV勉強会)
Yoshitaka Ushiku63.6K views
自己教師学習(Self-Supervised Learning)自己教師学習(Self-Supervised Learning)
自己教師学習(Self-Supervised Learning)
cvpaper. challenge12.7K views
モデル高速化百選モデル高速化百選
モデル高速化百選
Yusuke Uchida24.7K views
GAN(と強化学習との関係)GAN(と強化学習との関係)
GAN(と強化学習との関係)
Masahiro Suzuki82.9K views
生成モデルの Deep Learning生成モデルの Deep Learning
生成モデルの Deep Learning
Seiya Tokui47.8K views

Optimizer入門&最新動向