機械学習における最適化アルゴリズムの一つである「**勾配降下法(Gradient Descent)」は、目的関数(通常は損失関数)の最小値を探索するための基本的な方法です。ここではその基本的な仕組みと、**確率的勾配降下法(SGD: Stochastic Gradient Descent)およびミニバッチ勾配降下法(Mini-batch SGD)**について詳しく説明します。
1. 勾配降下法の基本原理
目的
モデルのパラメータ(重みなど)を更新し、損失関数の値を最小にすること。
アルゴリズムの流れ
-
初期のパラメータをランダムに設定する。
-
損失関数の**勾配(微分)**を計算する。
-
勾配の逆方向にパラメータを更新する。
-
収束条件を満たすまで繰り返す。
更新式
-
:パラメータ
-
:学習率(learning rate)
-
:損失関数のパラメータに対する勾配
2. バッチ勾配降下法(Batch Gradient Descent)
-
全ての訓練データを用いて勾配を計算する。
-
正確な勾配を得られるが、計算コストが高く、大規模データには不向き。
3. 確率的勾配降下法(SGD: Stochastic Gradient Descent)
特徴
-
毎回1つのデータ点だけを使って勾配を計算。
-
更新は以下のように行われる:
メリット
-
高速に更新できる。
-
局所最小値にハマりにくく、ある程度のノイズが探索に役立つ。
デメリット
-
勾配がノイズに敏感で、収束が不安定になることがある。
-
最適値の周囲で振動する可能性がある。
4. ミニバッチ勾配降下法(Mini-batch SGD)
特徴
-
全データを**小さなバッチ(ミニバッチ)**に分割して、それぞれで勾配を計算。
-
一般的に用いられる標準的手法。
更新式
-
:ミニバッチサイズ(例:32、64、128など)
メリット
-
SGDより安定した学習が可能。
-
GPUなどの並列計算との相性が良い。
-
ノイズを減らしつつ、学習の速度と精度をバランスよく両立。
5. まとめ
| 手法 | 精度 | 計算コスト | ノイズ耐性 | 一般的な用途 |
|---|---|---|---|---|
| バッチ勾配降下法 | 高い | 高い | 低い | 小規模データ |
| SGD | 低め~中 | 低い | 高い | 大規模データ、オンライン学習 |
| ミニバッチSGD | 中~高 | 中 | 中 | 通常のディープラーニング学習 |
生成日:2025/06/01