- @ThothChildren
- 2017.9.13
- PV 319
DeepLearningにおける最適化関数
ー 概要 ー
最適化関数はニューラルネットワークにおいて学習率を学習しながら調整してくれます。
DeepLearningにおける最適化関数選びは大きな検討要素の一つです。
どれを選ぶかによっても大きく学習時間や結果に関わってきます。
この章を学ぶ前に必要な知識
条件
- 最適化関数にパラメータをセットする
効果
- 最適な最適化関数を選べば学習時間や学習結果が改善
- 学習率を固定で定めるときはかなり調整が必要
ポイント
- どの最適化関数を選べばよいかは定かではない
- 論文ではMomentumが未だに使用されるケースが多い
解 説
1.最適化関数について | |
ニューラルネットワークの学習では、どれだけ今の状態から更新するかを"勾配法"を用いて決定されます。
最適化関数はその勾配法で学習するときにどれだけ新しく変えてみるかを調整するために使用され、様々な最適化関数が提案されています。
これらの最適化関数は学習精度や速度に影響します。
最適化関数一覧
・Momentum
・Adagrad
・Adadelta
・Adam
・RMSProp
| 最適化関数とは |
2.各最適化関数の概略 | |
Momentumは今までの勾配法に慣性項を加えて、直近の更新量を参考にしながら新しい更新量を加える最適化関数.勾配が緩やかになってもある程度速さを保って更新できる. | Momentum最適化関数 |
Adagradは今までの通常の勾配法での更新式において、
過去の更新量から算出される最適な係数を勾配に掛け合わせた最適化関数. | Adagrad最適化関数 |
AdadeltaはAdagradで問題になっていた点を解決した最適化関数.メモリ使用量や学習率が下がっていく問題を解決. | Adadelta最適化関数 |
AdamはAdagrad, RMSPropを改良して作られ、あるバイアスを取り除くことで他より効率的な最適化関数となっている。 | Adam最適化関数 |
RMSPropはAdagradの問題点をAdadelta同様に解決した最適化関数.一部アプローチが異なるため,Adadeltaは学習係数初期値が不要だが、RMSPropでは必要. | RMSProp最適化関数 |
3.今流行りの最適化関数 | |
実用上今どの最適化関数が一番よいかというのは定かではありません。
多くの論文ではMomentumを使ったものが散見されます。
また、シンプルに最適化関数を添えずにSGDは鞍点で学習が遅くなりやすいことを除けば多くの場合は最小解にたどり着くことがわかっており、SGDを少し改変したもの等も検討されています。 | 流行りの最適化関数 |
以下の画像は右のリンクより引用 | 外部リンク 可視化作者のReddit |
最適化関数ごとの動きの違い | |
最適化ごとの動きの違い2 | |
最適化ごとの動きの違い3 | |
最適化ごとの動きの違い3 |
この章を学んで新たに学べる
Comments
Reasons
知識: Adadelta最適化関数
学習係数を自動で調整する最適化関数.
Adagradで学習が進むにつれて学習係数が0になってしまう点を改良した最適化関数.
単位を揃えることで学習係数の初期値を不要にしている.
知識: Adagrad最適化関数
学習係数を自動調整していく最適化関数の一つ.
過去の勾配と最新の勾配を元に各パラメータごとに学習率を調整するのが特徴.
Adam, Adadelta, RMSPropはAdagradを改良したもの
知識: RMSProp最適化関数
ニューラルネットワークの学習係数を自動で調整する最適化関数の一つ.
Adagradで問題だった学習が進むにつれて学習係数が小さくなるのを回避. (その点ではAdadeltaと目的は同じ)
知識: Momentum最適化関数
SGDではランダムにデータを選んでパラメータ更新を行ったことで値がばたつきなかなか収束しない.慣性項を加えたことで、パラメータ更新に勢いをつけ学習を早くした.