「最適化手法を用いてパラメータを更新する」
最適化手法とはパラメータを更新するための方法のこと
最適化手法とは?
深層学習においてニューラルネットワークを学習させるには,損失関数の値をできるだけ小さくするようなパラメータ(重み,バイアス)を求める必要があります.損失関数の値を小さくする最適なパラメータを求める問題を解くことを最適化と言います.そして,いくつか存在しているその問題の解き方,公式のようなものを最適化手法と言います.高校の数学の授業で勉強した二次関数の最小値を求める方法の発展ver.みたいなものです.損失関数は,高校数学のようにxとyの二つのパラメータからなる関数ではなく,もっと多くのパラメータからなる関数なので,簡単に最適解を求めることはできません.そこで,最適化手法を使って,できるだけ最適な解を求めよう!ってなるわけです.
勾配に着目して最適解を求める
y = x^2のような二次関数におけるパラメータxの勾配とは,傾きのことです.傾きはyをxで微分したy' = 2xとなり,x = 0の時は傾きが0, x = 1の時は傾きが2のようになりますよね.傾きは,任意の点xにおいて,xを少しだけ大きくしたら,yがどれだけ変化するのかを表しています.深層学習で考えるべきは最小値です.つまり損失関数がy = x^2だとすると,傾きが正ならxを少し小さく,傾きが負ならxを少し大きくすれば,yの値が小さくなります.このようにxの値を少しずつ変化させながら最適な解を見つけていきます.損失関数が複雑でパラメータすうが膨大になっても基本的な考え方は同じです.ただし,実際は最適解ではなく,局所最適解(極小値)を求めてしまう問題などもあるため難しい.
損失関数は推測したパラメータの値の精度を示している.
つまり,学習すべきパラメータは推測後にはある特定の値をもっている.
例えば,損失関数がy = x^2とすると,一回目の推測でパラメータxはx = 4という特定の値になったとする.損失関数におけるx = 4のときの勾配を求め,損失関数を小さくする方向へ少しxを進めることがパラメータ更新である.パラメータを何度も更新することでx = 0という最適解へ近づくことができる.
最適化手法の種類
- 最急降下法(勾配降下法)
- バッチ学習(全データまとめて学習)
- 確率的勾配降下法(SGD: stochastic gradient descent)
- ミニバッチ学習(ミニバッチごとに学習)
- 確率的に無作為に選び出したデータ(ミニバッチ)に対して勾配降下法を適用
- ミニバッチ学習(ミニバッチごとに学習)
- Momentum
- Adam
- AdaGrad
など