オムライスの備忘録

数学・統計学・機械学習・プログラミングに関することを記す

【深層学習】AdaGrad / Adaptive Subgradient Descent

yhayato1320.hatenablog.com

Index

AdaGrad / Adaptive Subgradient Descent

学習率の減衰(Learning Rate Decay)

パラメータの更新(移動)の際に、移動する分の(勾配ベクトルの)大きさを調整する学習率  \mu がある.
この学習率は、小さすぎると学習に時間がかかってしまい、逆に局所解に収束せずに、うまく学習できなくなる.

この学習率に関するテクニックとして、学習率の減衰(Learning Rate Decay) という方法がある.
これはつまり、学習が進むにつれて、学習率を小さくするという方法.
最初は大きくパラメータ空間を探索し、次第に(局所解周辺に来たら)細かく移動して探索するというアイディア.

個別の学習率

学習率を徐々に下げるというアイディアだけでは、まだ、 パラメータ「全体」の学習率を小さくするということだけだ.

勾配法では、1つの学習率しかなかった!

実際には、パラメータ空間の座標方向によって誤差関数の勾配には、大きな違いがある可能性がある.
(あるパラメータの軸では、急激な勾配があったり、あるパラメータの軸では、緩やかな勾配しかなかったりと)
すると、あるパラメータの軸では、大きく更新されるが、あるパラメータ軸では、少しづつしか更新されないようなことになる.
これは、学習率が1つの固定値しかないからである.



そこで、パラメータひとつひとつの固有の学習率を用意するというアイディアを加えたものが、 AdaGrad / Adaptive Gradient という手法.

Adaptive はパラメータひとつひとつに適用するの Adaptive の意.

更新アルゴリズム

更新アルゴリズム

 
\begin{align}
h\ &\leftarrow\ h\ +\ \displaystyle \frac{\partial L}{\partial W}\ \odot \displaystyle \frac{\partial L}{\partial W} \tag{2.1} \\
W\ &\leftarrow\ W\ -\ \mu \displaystyle \frac{1}{\sqrt{h}} \displaystyle \frac{\partial L}{\partial W} \tag{2.2}
\end{align}

 \mu は学習率  0 \leq \mu \leq 1


パラメータの更新 (式2.2) は、SGD と同様に、勾配ベクトルの定数倍分、移動させる.

ここで、 h という新しい変数が登場する.
これは、これまで経験した勾配ベクトルの各値を二乗和として蓄積している. ( \odot は、ベクトルの要素ごとの掛け算を表している.)

そして、パラメータ更新の際に、 \displaystyle \frac{1}{\sqrt{h}} を乗算することで、勾配ベクトルの大きさを調整する.

個別の学習率

 h の役割は、パラメータ個別の調整役になる.

 h もベクトルで、 W\ =\ \begin{pmatrix}w_1 \\ \vdots \\ w_N \end{pmatrix} のように  N 次元ベクトルとすれば、
 h\ =\ \begin{pmatrix}
\displaystyle \sum_{s=1}^{t} \left\{ \displaystyle \frac{\partial L}{\partial w_{1}^{(s)}} \right\}^{2} \\
\vdots \\
\displaystyle \sum_{s=1}^{t} \left\{ \displaystyle \frac{\partial L}{\partial w_{N}^{(s)}} \right\}^{2} \\
\end{pmatrix}
 w_{n}^{(s)} s 回目の 更新後の  n 番目のパラメータ

 h_n が、パラメータ  W_{n} に対応する個別の学習率.
(正確には、 \displaystyle \frac{\mu}{\sqrt{h_{n}}} だが、、、)

学習率の減衰(Learning Rate Decay)

 h の導入し、実質の学習率を \displaystyle \frac{\mu}{\sqrt{h}}のようにすることで、
よく動きそうな (大きく更新されそうな) パラメータ次元のパラメータは、
学習率が小さく、抑制・制限されるということになる.

まとめ

よく動きそうな (大きく更新されそうな) パラメータを次第に小さくするという減衰を、
パラメータ個別に行うことができる.

参考