確率的勾配降下法の大雑把な意味

「普通の」勾配降下法について確認してから、確率的勾配降下法について述べます。

「普通の」勾配降下法

パラメータ $\overrightarrow{w}$ によって定まる損失関数 $E(\overrightarrow{w})$ を最小化したいという問題設定を考えます。

勾配降下法では、以下の手順で最小化を行います。
(参考:最急降下法のイメージと例

手順1.適当に初期点 $\overrightarrow{w}$ を選ぶ

手順2.今いる位置における最急降下方向(関数 $E$ の値が最も小さくなる方向)を計算する。
最急降下方向は、勾配ベクトルのマイナス1倍です。つまり $-\dfrac{\partial E(\overrightarrow{w})}{\partial\overrightarrow{w}}$ です。

勾配降下法のイメージ

手順3.最急降下方向に進む
$\overrightarrow{w}\leftarrow\overrightarrow{w}-\eta\dfrac{\partial E(\overrightarrow{w})}{\partial\overrightarrow{w}}$
このとき、どれくらい移動するか(ステップ幅 $\eta$)を与える必要があります。

手順4.上記2と3を繰り返す

確率的勾配降下法

損失関数 $E$ が、$E(\overrightarrow{w})=\displaystyle\sum_{i=1}^nE_i(\overrightarrow{w})$
のように、和の形で書ける場合を考えてみます。

例えば、最小二乗法の文脈では、全体の誤差は
$E=\displaystyle\sum_{i=1}^n(f(x_i)-y_i)^2$
のように、各データの誤差の和で表されます。
(参考:最小二乗法と最尤法の関係

この場合、データ数 $n$ が多くなると、$-\dfrac{\partial E(\overrightarrow{w})}{\partial\overrightarrow{w}}$ の計算が非常に大変です。

そこで、手順2と3で登場する $-\dfrac{\partial E(\overrightarrow{w})}{\partial\overrightarrow{w}}$ の変わりに $-\dfrac{\partial E_i(\overrightarrow{w})}{\partial\overrightarrow{w}}$ を使うのが、確率的勾配降下法(Stocastic Gradient Descent、SGD)です。$i$ は各反復で変えてやります。

「$E$ の代わりに $E_i$ を使う」というのは乱暴に見えますが、その分たくさん反復を繰り返すことができます。

例えば「全データ $1,\dots, n$ をランダムにソートし、順番に $E_i$ を使って $n$ 回反復していく」というのを何回か繰り返します。

関連する用語

・確率的勾配降下法のことをオンライン勾配降下法と言うことがあります。
(データ $i$ が到着するごとに、それに対応する誤差 $E_i$ を使ってパラメータの更新ができる → 逐次処理ができるというイメージです)

・それに対して「普通の」勾配降下法のことをバッチ勾配降下法と言うことがあります。

・オンライン勾配降下法とバッチ勾配降下法の中間を取った方法も考えられます。つまり、勾配の計算に、全データの誤差の和 $E$ でもなく、1つのデータの誤差 $E_i$ でもなく、いくつかのデータの誤差 $E_i$ の和を使う方法です。この方法を、ミニバッチ勾配降下法と言うことがあります。

バッチ ミニバッチ オンライン
1回の反復の計算 全データを使うので計算が大変 ほどほど データ1つしか使わないので計算が楽
1回の反復の精度 全データを使うので良さそう ほどほど データを1つしか使わないので変な方向に進むことがある

・確率的勾配降下法や、ミニバッチ勾配降下法において、全データを食わせる回数のことをエポック数と言うことがあります。例えば、データ数 $1000$ で、ミニバッチのサイズが $50$ のとき、$20$ 反復で全データを1周するので、$20$ 反復が1エポックに対応します。さらに、エポック数が $10$ なら、総反復回数は $200$ になります。

・ステップ幅 $\eta$ のことを学習率と言うことがあります。

次:ロジット関数とロジスティック関数
前:交差確認(交差検証、Cross-Validation)の簡単な説明

スポンサーリンク

スポンサーリンク

誤植がございましたら @mathwordsnet までご連絡をお願いいたします。
ページ上部へ戻る