確率的勾配降下法(SGD)の仕組みと計算手順を具体例で解説

こんにちは。ゆうせいです。

機械学習のモデルがデータを学習する過程では、誤差を最小にするためのパラメータ調整が行われます。その代表的な最適化アルゴリズムの一つが、確率的勾配降下法(Stochastic Gradient Descent、略称:SGD)です。機械学習の基盤となるSGDの基礎概念、更新の計算手順、長所と短所を順を追って解説します。

勾配降下法の基本概念とSGDの位置づけ

機械学習の目的は、予測値と実際の値とのズレを示す損失関数(コスト関数)の値を最小にすることです。

勾配降下法を身近な例で理解する

勾配降下法の動作は、濃い霧の中で山を下りて谷底(最も低い地点)を目指す状況に例えられます。霧で周囲全体が見渡せないため、足元の傾斜(勾配)を足の裏で確かめ、最も傾斜が急な下り坂の方向へ一歩ずつ進む作業を繰り返します。

従来の最急降下法(バッチ勾配降下法)では、谷底への正確な方向を割り出すために、手元にあるすべてのデータをくまなく調べて平均の傾きを計算します。全体の地形を完全に把握してから進むため確実ですが、データ量が膨大になると一歩を踏み出すまでに長い時間を要します。

SGDの特徴

これに対してSGDは、全データではなく、無作為に選んだ1つのデータのみを用いて足元の傾きを計算し、即座にパラメータを更新します。

先ほどの例えを使うと、全体の地図を精査する代わりに、目の前の一歩分の足場だけを確認して小刻みに進む手法といえます。一歩ごとの方向には多少のブレが生じますが、計算を高速に反復できる特性があります。

SGDの具体的な計算例

具体的な数値を用いて、パラメータがどのように更新されるかを確認します。

設定条件

1変数の単純なモデルを考えます。

予測式:y = w * x

ここで、wは調整対象の重みパラメータです。初期値をw = 2.0とします。

学習の歩幅を決める学習率(eta)は0.1と定めます。

手元に次の1組のデータがあると仮定します。

入力データ x = 1

正解データ t = 1

損失関数には、誤差の大きさを測る二乗誤差を採用します。

損失Eは次の式で定義されます。

E = \frac{1}{2}(y - t)^{2}

ステップ1:予測値の算出

初期パラメータ w = 2.0 と入力データ x = 1 を予測式に代入します。

y = 2.0 * 1 = 2.0

予測値は2.0となります。

ステップ2:勾配の計算

重みwをどの方向にどれだけ動かすべきかを求めるため、損失Eをwで微分して勾配を導出します。

\frac{\partial E}{\partial w} = (y - t) \cdot x

得られた導関数に各数値を代入します。

\frac{\partial E}{\partial w} = (2.0 - 1.0) \times 1 = 1.0

現在の勾配は1.0と算出されました。この値が正であることは、wを増加させると損失が増加することを意味するため、wを減らす方向に更新する必要があります。

ステップ3:パラメータの更新

SGDのパラメータ更新式は次の通りです。新しい重みw_newは、現在の重みwから「学習率 * 勾配」を引くことで求まります。

w_new = w - eta * (dE / dw)

数値を代入して計算を実行します。

w_new = 2.0 - 0.1 * 1.0 = 1.9

1回のデータ参照により、パラメータwは2.0から1.9へと更新されました。更新後のwを用いて再計算すると、予測値は1.9となり、正解の1.0に近づいていることが確認できます。SGDはこの小規模な計算をデータごとに連続して反復します。

SGDの利点と課題

SGDの運用上で生じる利点と課題を整理します。

利点

  • 1回の更新あたりの計算量が非常に少なく、CPUやメモリへの負荷を低く抑えられます。
  • データが1点ずつ逐次的に追加されるオンライン学習の環境にもそのまま適用可能です。
  • 勾配のブレが適度な揺らぎを生むため、局所的な浅い窪み(局所解)にトラップされず、より良好な解へ脱出しやすい性質があります。

課題

  • 1データごとの極端な特徴に影響を受けやすく、損失関数の値が小刻みに振動しながら進むため、全体の収束挙動が不安定になります。
  • 谷底の近傍に到達しても小刻みな移動を続けるため、学習率を徐々に小さくするスケジューリングを行わないと、最適な地点にとどまることが困難です。

まとめ

SGDの学習を深めるための推奨ステップは次の通りです。

  1. 二乗誤差以外の損失関数(交差エントロピー誤差など)における勾配の計算手順を確認する。
  2. 1データずつ進むSGDと全データを扱うバッチ勾配降下法の折衷案である「ミニバッチ勾配降下法」の仕組みを学ぶ。
  3. 学習の進行を安定させるためにSGDを改良した発展形(Momentum、RMSprop、Adam)のアルゴリズムへ理解を広げる。

セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
海外放浪の末、2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。