この記事について
勾配降下法について、G検定対策で概要をまとめます。
出題レベルに合わせるので、あまり細かい点は突っ込んでいません。
模試で出てきた言い回しも併せてまとめました。
勾配降下法の種類
バッチ勾配降下法
- 全訓練データを利用して勾配を計算する
- 局所解から抜け出せない危険があるが必ず収束する
確率的勾配降下法(SGD)
- 全訓練データからランダムに一つのインスタンスを利用して勾配を計算する
- 全体の最小値を見つけやすいがなかなか収束しない→(最短で最適解にたどり着かない)
ミニバッチ勾配降下法(MSGD)
- データセット全体からランダムに複数のインスタンス(複数に分割したサブセット)を利用して勾配を計算する
- バッチ勾配降下法とSGDの中間
勾配降下法の注意点
- 学習率が小さすぎると
収束が遅くなり
、逆に大きすぎると発散
してしまう
勾配降下法の手法
Momentum(慣性)
- 丘にボールを転がすの同じ。ボールと勾配の方向が同じなら加速し、逆なら原則する
- 表現例:
勾配の方向を現在のパラメータ更新にも影響させる
Adam
- それぞれのパラメータに対し学習率を計算し適応させる
- Momentumと似ている
- 指数関数的移動平均(指数関数的減衰平均)を蓄積し、過去の勾配の指数関数的移動平均を保持する
- 表現例:
勾配の平均と分散を推定し利用する
AdaGrad
-
学習率をパラメータに適応させる。
-
頻出のパラメータに対してはより小さな更新を実行し、まれなパラメータに対してはより大きな更新行う
-
過去のすべての2乗勾配を累積する
-
スパースなデータを扱うのに適している
-
表現例:
学習率をパラメータに適応させることで自動的に学習率を調整することができる
-
表現例:
勾配を 2 乗した値を蓄積し、すでに大きく更新されたパラメータほど学習率を小さくする
RMSprop
- Adadeltaという手法とほぼ同様(同時期にほぼ同じの手法が開発された)
- 「Adagradは急速に学習率が低下する」という問題を解決する必要から開発された
- 学習率を勾配の2乗の指数関数的に減衰する平均で除算する
- 指数関数的移動平均(指数関数的減衰平均)を蓄積する
- 表現例:
AdaGradにおける一度更新量が飽和した重みはもう更新されないという欠点を指数移動平均を蓄積することにより解決した
試験中の端的な目途の付け方
-
勾配の2乗
の知す関数的減衰平均 or 移動平均 → RMSprop/Adam -
慣性項
→ Momentum -
稀なパラメータに対して大きな更新
→ Adagrad/Adadelta
おまけ
勾配降下法を「谷にボールを落とすイメージ」で書かれていてなるほどと思ったサイトです。
微分の傾きが0を目指す図はよく見るのですが、こちらもわかりやすかったです。
http://yaju3d.hatenablog.jp/entry/2017/08/27/233459