SGD(確率的勾配降下法)
Stochastic Gradient Descent
えすじーでぃー
全データではなく、無作為に選んだ1件(または少数のミニバッチ)のデータで勾配を計算してパラメータを更新する勾配降下法。1回の更新の計算が軽く大規模なデータでも速く学習が進む一方、勾配にばらつき(ノイズ)が入るので更新の向きは揺らぐが、それが局所最適解から抜け出す助けにもなる。モーメンタムやAdamなどの最適化アルゴリズムの基礎である。
Related
関連キーワードの用語
学習データ全体をまとめて使って損失と勾配を計算し、パラメータを更新する学習の方法。更新の方向が安定するが、1回の更新に全データの計算が要るのでデータが大きいと時間とメモリを多く使う。新しいデータが加わったら全データで学習し直すのが基本で、データを少しずつ使うミニバッチ学習やオンライン学習と対比される。
学習によってデータから求めるパラメータ(重みなど)ではなく、学習の前に人が設定する値。学習率、エポック数、ミニバッチの大きさ、ニューラルネットワークの層数、決定木の深さ、正則化の強さなどが当たる。検証用データでの性能をもとに、グリッドサーチ、ランダムサーチ、ベイズ最適化などで調整する。
ニューラルネットワークの学習で、ミニバッチ1つ分のデータで損失と勾配を計算し、パラメータを1回更新する処理の単位。学習データ全体を1回使い切るのが1エポックで、1エポック当たりのイテレーション数は「データ数÷バッチサイズ」になる。例えば1万件をバッチサイズ100で学習すると、1エポックは100イテレーションである。
損失関数の値が小さくなるよう、パラメータを損失関数の勾配(傾き)と逆の方向に少しずつ動かす更新を繰り返して、最小となる点を探す最適化の手法。1回に動かす量は学習率で決まり、大きすぎると発散し、小さすぎると収束が遅い。損失の形によっては局所最適解や鞍点にとどまることがある。
ニューラルネットワークの出力と正解の誤差(損失)を、出力層から入力層に向かって逆向きに伝え、微分の連鎖律を使って各層の重みに対する損失の勾配を効率よく求める方法。求めた勾配を使い、勾配降下法で重みを更新する。層が深いと勾配が極端に小さくなる勾配消失問題が起きることがある。
ニューラルネットワークなどの学習で、学習データ全体を1回使い切ることを1エポックという。通常は数十から数百エポック繰り返して学習し、エポック数はハイパーパラメータになる。エポックを重ねすぎると過学習するので、検証用データの誤差を監視して悪化し始めたら止める早期終了を使う。
