- @ThothChildren
- 2017.9.13
- PV 381
Adagrad最適化関数
ー 概要 ー
学習係数を自動調整していく最適化関数の一つ.
過去の勾配と最新の勾配を元に各パラメータごとに学習率を調整するのが特徴.
Adam, Adadelta, RMSPropはAdagradを改良したもの
この章を学ぶ前に必要な知識
効果
- 過去の勾配と異なった値をとったパラメータに対して敏感に更新する
ポイント
- 今までは学習係数が固定だったが、各パラメータごとに勾配を見ながら更新
- 過去の勾配を全部溜めて、それと最新の勾配を考慮してパラメータを更新
- 学習を続けていくと過去の累計値が積算して学習係数が必ず小さくなってしまう
解 説
今までのニューラルネットワークでの更新においては、
常に学習係数は固定で人間がうまい値を決めて収束するように調整していた.
Adagradでは、初めの値を人間に調整してもらったらあとは学習するにつれて、
適宜大きさを変更して学習してくれる.
特徴的なのは
・過去の勾配の結果を全て保持していて、最新の勾配が大きく異なっていたら学習率高めにする
・学習するにつれて学習率は小さくなっていく
・学習率は各更新ごとに各パラメータごとに異なる.
| Adagrad最適化関数導入 |
$$w_t = w_{t-1} - \frac{\eta}{\sqrt{\sum{({\nabla J(w_0)}^2 + {\nabla J(w_1)}^2 + \cdots + {\nabla J(w_t)}^2)}}}\nabla J(w_t)$$ | Adam最適化関数の更新式
今までと異なり分母がつけ加わった.
∇J(Wt)が分母と似たような値ならηに近づき、はるかに大きければ学習係数も大きくなる
実際には次の式のようにパラメータごとに行う. |
$$w_{t,i} = w_{t-1,i} - \frac{\eta}{\sqrt{\sum{({\nabla J(w_{0,i})}^2 + {\nabla J(w_{1,i})}^2 + \cdots + {\nabla J(w_{t,i})}^2)}}}\nabla J(w_{t,i})$$ | iごとに異なる勾配で更新.
パラメータのi番目だけ勾配が強い方向があればi番目のみ学習係数大きめに更新 |
この章を学んで新たに学べる
Comments