勾配降下法(SGD, ミニバッチSGD)

機械学習における最適化アルゴリズムの一つである「**勾配降下法(Gradient Descent)」は、目的関数(通常は損失関数)の最小値を探索するための基本的な方法です。ここではその基本的な仕組みと、**確率的勾配降下法(SGD: Stochastic Gradient Descent)およびミニバッチ勾配降下法(Mini-batch SGD)**について詳しく説明します。


1. 勾配降下法の基本原理

目的

モデルのパラメータ(重みなど)を更新し、損失関数の値を最小にすること。

アルゴリズムの流れ

  1. 初期のパラメータをランダムに設定する。

  2. 損失関数の**勾配(微分)**を計算する。

  3. 勾配の逆方向にパラメータを更新する。

  4. 収束条件を満たすまで繰り返す。

更新式

θ:=θηθJ(θ)\theta := \theta – \eta \cdot \nabla_{\theta} J(\theta)

  • θ\theta:パラメータ

  • η\eta:学習率(learning rate)

  • θJ(θ)\nabla_{\theta} J(\theta):損失関数のパラメータに対する勾配


2. バッチ勾配降下法(Batch Gradient Descent)

  • 全ての訓練データを用いて勾配を計算する。

  • 正確な勾配を得られるが、計算コストが高く、大規模データには不向き。


3. 確率的勾配降下法(SGD: Stochastic Gradient Descent)

特徴

  • 毎回1つのデータ点だけを使って勾配を計算。

  • 更新は以下のように行われる:

    θ:=θηθJ(θ;xi,yi)\theta := \theta – \eta \cdot \nabla_{\theta} J(\theta; x_i, y_i)

メリット

  • 高速に更新できる。

  • 局所最小値にハマりにくく、ある程度のノイズが探索に役立つ。

デメリット

  • 勾配がノイズに敏感で、収束が不安定になることがある。

  • 最適値の周囲で振動する可能性がある。


4. ミニバッチ勾配降下法(Mini-batch SGD)

特徴

  • 全データを**小さなバッチ(ミニバッチ)**に分割して、それぞれで勾配を計算。

  • 一般的に用いられる標準的手法。

更新式

θ:=θη1mj=1mθJ(θ;xj,yj)\theta := \theta – \eta \cdot \frac{1}{m} \sum_{j=1}^{m} \nabla_{\theta} J(\theta; x_j, y_j)

  • mm:ミニバッチサイズ(例:32、64、128など)

メリット

  • SGDより安定した学習が可能。

  • GPUなどの並列計算との相性が良い。

  • ノイズを減らしつつ、学習の速度と精度をバランスよく両立。


5. まとめ

手法 精度 計算コスト ノイズ耐性 一般的な用途
バッチ勾配降下法 高い 高い 低い 小規模データ
SGD 低め~中 低い 高い 大規模データ、オンライン学習
ミニバッチSGD 中~高 通常のディープラーニング学習

生成日:2025/06/01