Index
AdaGrad / Adaptive Subgradient Descent
学習率の減衰(Learning Rate Decay)
パラメータの更新(移動)の際に、移動する分の(勾配ベクトルの)大きさを調整する学習率 がある.
この学習率は、小さすぎると学習に時間がかかってしまい、逆に局所解に収束せずに、うまく学習できなくなる.
この学習率に関するテクニックとして、学習率の減衰(Learning Rate Decay) という方法がある.
これはつまり、学習が進むにつれて、学習率を小さくするという方法.
最初は大きくパラメータ空間を探索し、次第に(局所解周辺に来たら)細かく移動して探索するというアイディア.
個別の学習率
学習率を徐々に下げるというアイディアだけでは、まだ、
パラメータ「全体」の学習率を小さくするということだけだ.
勾配法では、1つの学習率しかなかった!
(あるパラメータの軸では、急激な勾配があったり、あるパラメータの軸では、緩やかな勾配しかなかったりと)
すると、あるパラメータの軸では、大きく更新されるが、あるパラメータ軸では、少しづつしか更新されないようなことになる.
これは、学習率が1つの固定値しかないからである.
そこで、パラメータひとつひとつの固有の学習率を用意するというアイディアを加えたものが、 AdaGrad / Adaptive Gradient という手法.
更新アルゴリズム
パラメータの更新 (式2.2) は、SGD と同様に、勾配ベクトルの定数倍分、移動させる.
ここで、 という新しい変数が登場する.
これは、これまで経験した勾配ベクトルの各値を二乗和として蓄積している.
( は、ベクトルの要素ごとの掛け算を表している.)
そして、パラメータ更新の際に、 を乗算することで、勾配ベクトルの大きさを調整する.
個別の学習率
の役割は、パラメータ個別の調整役になる.
が、パラメータ に対応する個別の学習率.
(正確には、 だが、、、)
学習率の減衰(Learning Rate Decay)
の導入し、実質の学習率をのようにすることで、
よく動きそうな (大きく更新されそうな) パラメータ次元のパラメータは、
学習率が小さく、抑制・制限されるということになる.
まとめ
よく動きそうな (大きく更新されそうな) パラメータを次第に小さくするという減衰を、
パラメータ個別に行うことができる.
参考
ゼロから作るDeepLearning
- 6 学習に関するテクニック
- 6.1 パラメータの更新
- 6.1.5 AdaGrad
- 6.1 パラメータの更新
- 6 学習に関するテクニック
機械学習スタートアップシリーズ これならわかる深層学習入門
- 4 勾配降下法による学習
- 4.2 勾配降下法の課題
- 4.2.4 AdaGrad
- 4.2 勾配降下法の課題
- 4 勾配降下法による学習