深層学習day1 Section4:勾配降下法

要点まとめ

深層学習の目的は、学習を通して誤差E(\boldsymbol{w})を最小化するパラメータ\boldsymbol{w}を求めるること。誤差Eをパラメータ\boldsymbol{w}偏微分した\nabla \boldsymbol{E}を用いてパラメータを更新することで、誤差を最小とするパラメータを求めることができる。

学習率\epsilonを用いて、

 \displaystyle{
\boldsymbol{w}^{(t+1)} = \boldsymbol{w}^{(t)} + \epsilon \nabla \boldsymbol{E}
}

という式で\boldsymbol{w}を更新していくが、\epsilonが大きすぎると発散してしまい、\epsilonが小さすぎると学習の収束が遅く、局所最適解に陥ってしまいがちなので、適切な値を設定する必要がある。

収束性向上のためのアルゴリズム

よく使われるものは下記。

  • Momentum
  • AdaGrad
  • AdaDelta
  • Adam

確率的勾配降下法

勾配降下法が全学習データを用いて繰り返し学習するのに対し、確率的勾配降下法では学習データの一部を用いて繰り返し学習を行う。下記のメリットがある。

  • データが冗長な場合の計算コスト軽減
  • 望まない局所最適解に収束するリスクの軽減
  • オンライン学習ができる

オンライン学習とは

学習データが入ってくるたびに都度パラメータを更新して学習を進めていく方法。一方、バッチ学習では一度にすべての学習データを使ってパラメータ更新を行う。

ミニバッチ勾配降下法

全学習データをランダムに分割したデータの集合(ミニバッチ)を用いて学習をすすめる。 CPUを利用したスレッド並列化や、GPUを利用したSIMD並列化等、計算機の計算資源を有効利用できる。

実装演習実施

f:id:yui-gen-ron:20211128084354p:plain

確認テスト考察


\boldsymbol{w}^{(t+1)} = \boldsymbol{w}^{(t)} + \epsilon \nabla \boldsymbol{E} には誤差から学習を行う基本的な考え方が表現されていると感じる。

追加演習

ぜろつく①の6章の例で、SGDとAdaGradの学習を比較確認してみた。AdaGradがスムーズに収束している。

f:id:yui-gen-ron:20211128090330p:plain
SGD

f:id:yui-gen-ron:20211128090358p:plain
AdaGrad