ゼロから作るDeepLearning 第六章 勾配法アルゴリズム

画像

勾配法

DNNでは、モデルのパラメータを修正して、目的地をきちんと求めることを目的としている。

よって、パラメータをどう調整するか?が大切である(ネットワークの重みなど)

このとき、学習においては出力損失関数値$L$の微分を利用して重みを修正するが、この重みの修正アルゴリズムには複数あるのでそれを見ていく。

SGD

Stochastic Gradient Descent, 確率勾配法。

ミニバッチを作ってそのデータで得られた勾配方向に進んでいく。
最も単純だが局所解に陥りやすい

Momentum

物理の慣性を利用したもの。
前回の移動速度をある程度維持しながら勾配を利用する。
学習率は1より小さいので探索に連れいずれは収束する。

AdaGrad

最初は大胆に、後半は落ち着いたパラメータ調整をするのは
Momentumと同じだが、
特徴として、各重みのパラメータごとに学習率のようなものを調整する。
というものがある。

毎回求める勾配の2乗を足し合わせていく。つまり広義単調増加をしていく。
そして、重みの修正率を、この勾配のルートで割ることで変化すればするほど、後半の変化は小さくなる。

これによって、各パラメータごとに柔軟な修正を行うことでより良い探索が行える。

Adam

Adam = Momentum + AdaGradのイメージらしい。

ちょっとまだ分かってない