確率的勾配降下法(SGD)

Stochastic Gradient Descent

確率的勾配降下法(SGD: Stochastic Gradient Descent)とは、訓練データからランダムに1つまたは少数のサンプルを選び、その勾配に基づいてパラメータを更新する最適化アルゴリズムです。標準的な勾配降下法の効率的な近似手法として広く利用されています。

SGDの利点

SGDの最大の利点は計算効率です。全データに対する勾配を計算するバッチ勾配降下法に比べ、1サンプル(または少数サンプル)で更新を行うため、大規模データセットでも高速に学習できます。また、ノイズを含む更新が局所最適解からの脱出に役立つ場合があります。

表:確率的勾配降下法(SGD)の要点まとめ
ひとことで言うと全データではなく一部だけを見て、素早くパラメータを更新する勾配降下法。
何がうれしいか1回の更新が軽く、大量データでも現実的な時間で学習できる。
注意点更新のたびに方向がぶれる。そのぶん局所解から抜け出しやすいという利点もある。

ミニバッチSGD

実務では、1サンプルではなく小さなバッチ(ミニバッチ)単位で勾配を計算するミニバッチSGDが最も一般的です。これはSGDのノイズを適度に抑えながら計算効率を保つバランスの取れた手法です。

図:SGDの更新サイクル
1データを1件/少数抽出ランダムに選ぶ
▶
2損失を計算その分だけで評価
▶
3勾配を求める軽い計算で済む
▶
4すぐ更新全件待たずに進む
↺ データを入れ替えながら1〜4をくり返す

SGDの発展形

SGDを改良した手法として、モメンタム、AdaGrad、RMSprop、Adamなどのオプティマイザがあります。これらは学習率の自動調整や過去の勾配情報の活用により、SGDの収束速度と安定性を向上させています。