勾配降下法とは
Gradient Descent
損失関数の勾配の逆方向へパラメータを少しずつ更新し、損失を最小化する最適化アルゴリズム
ひとことで言うと
AIが「もっと正解に近づくにはどちらに調整すればよいか」を繰り返し計算しながら、少しずつ賢くなっていく方法。
概要
勾配降下法は、損失関数(モデルの予測と正解のずれ)をパラメータで微分した勾配を求め、その勾配が指す方向と逆向きにパラメータを少しずつ動かすことで、損失を反復的に小さくしていく最適化アルゴリズム。 1回の更新でどれだけ動かすかは学習率というハイパーパラメータで制御され、大きすぎると発散し、小さすぎると収束が遅くなる。 全データを使って勾配を計算するバッチ勾配降下法、1件ずつ計算する確率的勾配降下法(SGD)、少数のまとまり(ミニバッチ)ごとに計算するミニバッチ勾配降下法があり、深層学習では計算効率と学習の安定性のバランスからミニバッチ方式が広く使われる。 SGDに慣性や適応的な学習率を加えたAdamなどの改良版最適化アルゴリズムが、現在の深層学習モデルの学習で標準的に使われている。
背景
損失関数を最小化するパラメータを解析的に求めることは、パラメータ数が膨大な深層学習モデルでは現実的でない。 勾配降下法は、損失関数の傾きを手がかりに反復的にパラメータを改善していくことで、この最適化問題を近似的に解く。
歴史
19世紀: Cauchyが最急降下法の原型を提案。 1950年代: Robbins と Monro が確率的近似法を発表し、確率的勾配降下法(SGD)の理論的基盤に。 2014年: Adamオプティマイザが提案され、適応的学習率を持つ勾配降下法が深層学習の標準手法に。
ワークフロー
現在のパラメータで損失を計算 → 誤差逆伝播法で各パラメータに対する勾配を求める → 学習率を掛けた分だけ勾配と逆方向にパラメータを更新 → 損失が十分小さくなるか、指定したエポック数に達するまでこれを繰り返す。
利点
欠点
比較
関連用語
よくある質問
SGDとバッチ勾配降下法の違いは?
バッチ勾配降下法は全データで1回の勾配を計算するのに対し、SGDは1件(またはミニバッチ)ごとに勾配を計算して頻繁にパラメータを更新する。SGDは計算コストが低く、深層学習ではミニバッチ版が主流。
参考文献
- Research PaperAn overview of gradient descent optimization algorithms