Momentum(モーメンタム)の仕組みと具体的な計算手順

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

機械学習のモデルが適切な予測を行えるようにするためには、パラメータを更新して誤差を徐々に減らす作業が必要です。この調整手法の一つに、確率的勾配降下法(SGD)の挙動を改良したアルゴリズムであるMomentum(モーメンタム)が存在します。Momentumの基本概念、計算の手順、利点と留意点を順に解説します。

Momentumの基本概念

Momentumは、日本語で運動量や慣性を意味する単語です。機械学習の最適化計算において、過去の更新方向を考慮しながらパラメータを調整する仕組みを指します。

物理の慣性による比喩

Momentumの動作は、斜面を転がる鉄球の動きに例えられます。

通常の勾配降下法では、立ち止まりながら足元の傾斜だけを確認して一歩ずつ進むため、勾配が急な方向へ細かく蛇行しやすい傾向があります。これに対してMomentumは、一度転がり始めた鉄球のように前回の速度や勢いを保持します。谷に向かって転がる鉄球が、横揺れを抑えながら進行方向への推進力を維持して下っていく様子を思い浮かべると把握しやすくなります。

計算の仕組みと更新式

Momentumでは、過去の進行方向を蓄積する速度(ベロシティ)と呼ばれる変数を新たに導入します。

速度変数をv、調整対象の重みパラメータをw、学習率をeta、過去の速度をどれだけ維持するかを決める減衰率(モーメンタム係数)をalpha、損失関数をEと定義します。alphaには通常0.9などの値が設定されます。

速度の更新式は次の通りです。

v_new = alpha * v - eta * (dE / dw)

更新された速度を用いて、重みパラメータを次のように更新します。

w_new = w + v_new

速度v_newに前回の速度成分が含まれるため、同じ方向へ傾斜が続いている場合は速度が増加し、傾斜が頻繁に反転する場合は不要な揺れが相殺されます。

Momentumの具体的な計算例

具体的な数値を当てはめて、パラメータが更新される過程を2回分追跡します。

設定条件

初期のパラメータ設定を次のように定めます。

重みパラメータ初期値:w = 2.0

初期速度:v = 0.0

学習率:eta = 0.1

モーメンタム係数:alpha = 0.9

1変数xと正解ラベルtの関係を扱う単純なモデルを想定します。

予測式:y = w * x

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

損失の勾配は次の式で計算されます。

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

1回目の更新計算

入力データx = 1、正解データt = 1が与えられたとします。

  1. 予測値の計算y = 2.0 * 1 = 2.0
  2. 勾配の計算dE / dw = (2.0 - 1.0) * 1 = 1.0
  3. 速度の計算v_new = 0.9 * 0.0 - 0.1 * 1.0 = -0.1
  4. パラメータの更新w_new = 2.0 + (-0.1) = 1.9

1回目の更新を終えた段階で、パラメータwは1.9になり、速度vには-0.1という勢いが蓄積されます。

2回目の更新計算

続いて同じデータを用いて2回目の計算を行います。現在のwは1.9、直前の速度vは-0.1です。

  1. 予測値の計算y = 1.9 * 1 = 1.9
  2. 勾配の計算dE / dw = (1.9 - 1.0) * 1 = 0.9
  3. 速度の計算直前の速度-0.1にalphaを乗じた値と、今回の勾配による変化量を合成します。v_new = 0.9 * (-0.1) - 0.1 * 0.9 = -0.09 - 0.09 = -0.18
  4. パラメータの更新w_new = 1.9 + (-0.18) = 1.72

通常の勾配降下法であれば今回の移動量は0.09にとどまりますが、Momentumでは過去の速度が加算された結果、移動量が0.18へ拡大しました。同じ向きへの坂道が続く環境において、更新幅が自然に加速する様子が確認できます。

Momentumの利点と留意点

Momentumを実際の機械学習モデルに組み込む際の利点と留意点を整理します。

利点

  • 谷の形状が細長いすり鉢状(渓谷状)になっている地形において、左右の壁を行き来する不要な振動を相殺し、谷底への直進を促します。
  • 傾きがほとんど存在しない平坦な領域(プラトー)に遭遇した際も、これまでに獲得した慣性によって歩みを止めずに前進を継続できます。
  • 同じ方向への降下が続く領域では速度成分が累積するため、目的とする解へ到達するまでの更新回数を削減できます。

留意点

  • 保持すべき変数として各重みに対する速度vが必要になるため、記憶領域(メモリ)の消費量が通常のSGDと比較して約2倍になります。
  • 調整すべき設定値として学習率etaのほかにモーメンタム係数alphaが加わるため、パラメータ調整の探索範囲が広がります。
  • 勢いがつきすぎた場合、最小値が存在する谷底を一時的に通り過ぎてしまうオーバーシュートが生じる場合があります。

まとめ

Momentumへの理解を深めるための学習ステップは次の通りです。

  1. 通常のSGDにおける更新幅の推移と、今回のMomentumによる更新幅の拡大傾向を数値上で比較する。
  2. 谷を行き過ぎる問題を抑えるためにMomentumを改良した手法である、Nesterovの加速勾配法(NAG)の数式を確認する。
  3. 過去の勾配の大きさに応じて学習率自体を自動調整するAdaGradやRMSprop、さらにそれらとMomentumを統合したAdamのアルゴリズムへと学習を進める。

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

投稿者プロフィール

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

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