勾配降下法(Gradient Descent)
Gradient Descent
概要
勾配降下法(Gradient Descent)とは、ニューラルネットワークの学習において、損失関数(Loss Function)を最小化するためにパラメータ(重み・バイアス)を更新する最適化アルゴリズムです。損失関数の勾配(傾き)を計算し、勾配が小さくなる方向にパラメータを少しずつ更新していくことで、最適な値に近づけていきます。
勾配降下法はディープラーニングの根幹をなす技術であり、誤差逆伝播法(Backpropagation)と組み合わせて使用されます。学習率(Learning Rate)の設定やデータの使い方によってさまざまなバリエーションがあり、SGD、モメンタム、Adamなどの改良手法が広く使われています。
詳細解説
勾配降下法の基本原理
ニューラルネットワークの学習では、モデルの予測値と正解値の差を損失関数で数値化します。この損失を最小化するために、各パラメータに対する損失関数の偏微分(勾配)を計算し、勾配の逆方向にパラメータを更新します。更新の大きさは学習率(Learning Rate: η)によって制御されます。パラメータの更新式は w ← w - η × ∂L/∂w で表されます。
学習率の重要性
学習率はパラメータ更新の歩幅を決定するハイパーパラメータです。学習率が大きすぎると最適解を飛び越えて発散してしまい、学習が収束しません。逆に学習率が小さすぎると学習が非常に遅くなり、局所最適解に陥りやすくなります。適切な学習率の設定はモデルの性能を左右する重要な要素です。
バッチ勾配降下法(Batch Gradient Descent)
すべての訓練データを使って勾配を計算し、パラメータを更新する手法です。勾配の推定が正確である一方、大規模データセットではメモリ消費が大きく、計算時間も長くなるという欠点があります。
確率的勾配降下法(SGD:Stochastic Gradient Descent)
訓練データから1つのサンプルをランダムに選び、そのサンプルに基づいて勾配を計算しパラメータを更新する手法です。各更新は高速ですが、勾配の推定にノイズが含まれるため、更新の方向が不安定になります。ただし、このノイズが局所最適解からの脱出を助ける効果があるとも言われています。
ミニバッチSGD
バッチ勾配降下法とSGDの折衷案として、訓練データを小さなバッチ(ミニバッチ)に分割し、各ミニバッチごとに勾配を計算してパラメータを更新する手法です。実用上はこのミニバッチSGDが最も広く使われています。バッチサイズは一般的に32、64、128、256などの2のべき乗が使用されます。
モメンタム(Momentum)
過去の勾配の情報を蓄積し、パラメータ更新に慣性の効果を加える手法です。ボールが坂を転がり降りるように、勾配の方向に加速し、振動を抑制する効果があります。SGDの改良版として広く使われています。
Adam(Adaptive Moment Estimation)
2014年にKingmaとBaによって提案された最適化アルゴリズムで、モメンタムとRMSPropの両方のアイデアを組み合わせたものです。勾配の一次モーメント(平均)と二次モーメント(分散)の推定値を利用して、パラメータごとに適応的に学習率を調整します。多くの場合において優れた性能を発揮するため、現在最も広く使用されている最適化手法の一つです。
学習率スケジューリング
学習の進行に応じて学習率を動的に変化させる手法です。代表的な手法として、一定のエポック数ごとに学習率を一定の割合で減衰させるステップ減衰、エポック数に応じてコサイン関数的に学習率を変化させるコサインアニーリング、検証損失が改善しなくなったら学習率を減らすReduceLROnPlateauなどがあります。
歴史・背景
勾配降下法自体は19世紀のコーシーにまで遡る古典的な最適化手法ですが、ニューラルネットワークへの適用は1986年のRumelhartらによる誤差逆伝播法の研究で本格化しました。誤差逆伝播法により、多層ネットワークの各パラメータに対する勾配を効率的に計算できるようになりました。
1990年代から2000年代にかけて、SGDにモメンタムを加えた手法やAdaGrad(2011年)、RMSProp(2012年、Hinton)などの適応的学習率を持つ手法が提案されました。2014年にはAdamが登場し、その汎用性の高さから急速に普及しました。
近年では、大規模モデルの学習に特化したLAMB、AdaFactorなどの最適化手法も登場しています。また、学習率のウォームアップ(最初は小さい学習率から始めて徐々に増やす手法)も広く用いられています。
具体的な事例
- 画像認識モデルの学習:ResNetなどの大規模CNNの学習では、ミニバッチSGD+モメンタム(0.9)+重み減衰(Weight Decay)の組み合わせが標準的に使われてきました。学習率はステップ減衰で段階的に下げるのが一般的です。
- 自然言語処理モデルの学習:BERTやGPTなどのTransformerモデルの学習では、Adamの改良版であるAdamWが主に使用されています。学習率のウォームアップとコサインアニーリングを組み合わせることが多いです。
- 局所最適解からの脱出:SGDのノイズ性が局所最適解からの脱出を助けるため、より良い汎化性能が得られることがあります。実際に、画像認識タスクではAdamよりもSGD+モメンタムの方が良いテスト精度を達成するケースが報告されています。
- 学習率探索:適切な学習率を見つけるために、学習率を指数的に増加させながら損失の変化を観察するLearning Rate Range Testが実務で活用されています。
G検定での出題ポイント
G検定では、勾配降下法に関して以下のような内容が出題される傾向があります。
- 勾配降下法の基本原理(損失関数の最小化、勾配の逆方向への更新)
- 学習率が大きすぎる場合・小さすぎる場合のそれぞれの問題点
- バッチ勾配降下法、SGD、ミニバッチSGDの違いと特徴
- モメンタムの役割(過去の勾配情報の蓄積、振動の抑制)
- Adamの特徴(適応的学習率、モメンタム+RMSPropの融合)
- 局所最適解と大域最適解の概念
- 勾配降下法は「損失関数の勾配の逆方向にパラメータを更新」することを理解する
- 学習率が大きすぎると発散し、小さすぎると収束が遅くなる(局所最適解に陥りやすい)ことを覚える
- ミニバッチSGDが実用上最も一般的であることを押さえる
- Adamは適応的に学習率を調整する手法であり、多くのタスクで有効であることを理解する
- 誤差逆伝播法(Backpropagation)と勾配降下法の関係を理解する