logo

勾配降下における運動量法 📂機械学習

勾配降下における運動量法

概要1 2

勾配降下法におけるモーメンタム技術は、パラメーターを更新する際に以前の勾配もすべて使用することである。これが本質であり、これに尽きる。しかし、奇妙な更新式や物理学の運動量が動機となったとか、質量を11に設定し初期速度を00にするといった説明は理解を難しくするだけである。本稿では、モーメンタム技術をできるだけシンプルに説明する。

ビルドアップ

パラメーターをθ\boldsymbol{\theta}損失関数LLとするとき、標準的な勾配降下法は、以下のように反復的にパラメーターを更新する方法である。

θi+1=θiαLi \boldsymbol{\theta}_{i+1} = \boldsymbol{\theta}_{i} - \alpha \nabla L_{i}

ここでLi=L(θi)L_{i} = L(\boldsymbol{\theta}_{i})は、ii番目の反復で計算された損失関数を意味する。モーメンタム技術とは、これに単に前の反復で計算された損失関数の勾配Li1\nabla L_{i-1}を加えることに過ぎない。

θi+1=θiαLiαLi1αL0 \boldsymbol{\theta}_{i+1} = \boldsymbol{\theta}_{i} - \alpha \nabla L_{i} - \alpha \nabla L_{i-1} - \cdots - \alpha \nabla L_{0}

ここで、反復が進むにつれて勾配の影響を減らし、勾配の合計が発散するのを防ぐために係数β(0,1)\beta \in (0,1)を追加すると、次のようになる。

θi+1=θiαLiβαLi1βiαL0=θiαj=0iβjLij \begin{align} \boldsymbol{\theta}_{i+1} &= \boldsymbol{\theta}_{i} - \alpha \nabla L_{i} - \beta \alpha \nabla L_{i-1} - \cdots - \beta^{i}\alpha \nabla L_{0} \nonumber \\ &= \boldsymbol{\theta}_{i} - \alpha\sum_{j=0}^{i} \beta^{j} \nabla L_{i-j} \end{align}

定義

(1)(1)のようにパラメーターを更新することをモーメンタム技術momentum methodと呼び、追加される項αj=0iβjLij\alpha\sum\limits_{j=0}^{i} \beta^{j} \nabla L_{i-j}モーメンタムmomentumと呼ぶ。

説明

上記の定義によれば、モーメンタム技術は一般化された勾配降下法であり、むしろ勾配降下法はモーメンタム技術のβ=0\beta = 0の特別なケースに過ぎないと見ることができる。β\beta11に近いほど以前の勾配を多く反映し、00に近いほど少なく反映する。

勾配降下法は、現在の傾きが最も大きい方向へパラメーターを更新するために貪欲アルゴリズムである。モーメンタム技術は勾配降下法の貪欲な部分を少し和らげ、現在最善の選択ではないが長期的にはより有効な選択をすることができるようにする。また、勾配の方向が急激に変わるのを防ぐことができる。

当然ながら、パラメーターを更新する際の勾配の大きさが勾配降下法より大きいため、収束速度が速いという利点がある。また、経験的に局所的最小値local minimaから比較的脱出しやすいことが知られており、坂を転がり下るボールが十分な速さであれば、下り坂の途中にある小さな坂も越えて通り過ぎることができると説明される。

ここで重要な事実は、適応的学習率技術を含むこれらのオプティマイザー間に絶対的な優位性はないということである。分野や作業によって最適なオプティマイザーが異なるため、「何が最も良いか」という判断や質問は適切ではない。自分が所属する分野で主に使用されているものが何かを知ることが役立ち、それがないか分からなければSGD+モーメンタムまたはAdamを使用するのが無難である。

ネステロフのモーメンタム

モーメンタム技術を再検討すると、次のパラメーターθi+1\boldsymbol{\theta}_{i+1}を得るために、現在のパラメーターθi\boldsymbol{\theta}_{i}に現在のパラメーターで計算された勾配αL(θi)\alpha \nabla L(\boldsymbol{\theta}_{i})を蓄積しながら加えていく。

ネステロフのモーメンタムNesterov momentumまたはネステロフ加速勾配Nesterov accelerated gradient, NAGと呼ばれる技術は、「現在のパラメーターに前の勾配を加えた値」で勾配を求め、これを現在のパラメーターに加えて次のパラメーターを求める。言葉ではやや複雑だが、モーメンタム技術を理解していれば、以下のアルゴリズムを見ることでネステロフのモーメンタムを理解するのが簡単になるかもしれない。

アルゴリズム

モーメンタム項をp\mathbf{p}と表す。

アルゴリズム: モーメンタム技術
入力学習率 α\alpha, モーメンタムパラメーター β\beta, エポック NN
1.パラメーター θ\boldsymbol{\theta}を任意の値で初期化する。
2.モーメンタムを p=0\mathbf{p} = \mathbf{0}で初期化する。
3.for k=1,,Nk = 1, \cdots, N do
4.   pβpαL(θ)\mathbf{p} \leftarrow \beta \mathbf{p} - \alpha \nabla L(\boldsymbol{\theta})# 勾配を計算しモーメンタムを更新
5.   θθ+p\boldsymbol{\theta} \leftarrow \boldsymbol{\theta} + \mathbf{p}# パラメーターを更新
6.end for
アルゴリズム: ネステロフのモーメンタム
入力学習率 α\alpha, モーメンタムパラメーター β\beta, エポック NN
1.パラメーター θ\boldsymbol{\theta}を任意の値で初期化する。
2.モーメンタムを p=0\mathbf{p} = \mathbf{0}で初期化する。
3.for k=1,,Nk = 1, \cdots, N do
4.   pβpαL(θ+βp)\mathbf{p} \leftarrow \beta \mathbf{p} - \alpha \nabla L(\boldsymbol{\theta} + \beta \mathbf{p})# 勾配を計算しモーメンタムを更新
5.   θθ+p\boldsymbol{\theta} \leftarrow \boldsymbol{\theta} + \mathbf{p}# パラメーターを更新
6.end for

両方の方法について初めの数回の計算を見ると、以下のようになる。簡単にpi=αLi\mathbf{p}_i = \alpha \nabla L_i、およびpi=αL(θiβ1pi1β2pi2βip0)\mathbf{p}^i = \alpha \nabla L(\boldsymbol{\theta}_i - \beta^{1}\mathbf{p}^{i-1} - \beta^{2}\mathbf{p}^{i-2} - \cdots - \beta^{i}\mathbf{p}^{0})(このときp0=p0\mathbf{p}^{0} = \mathbf{p}_0)と表記すると、

モーメンタムネステロフのモーメンタム
θ_0=\boldsymbol{\theta}\_{0} = 初期値θ_0=\boldsymbol{\theta}\_{0} = 初期値
θ1=θ0αL0 =θ0p0\boldsymbol{\theta}_{1} = \boldsymbol{\theta}_{0} - \alpha \nabla L_{0} \\ \quad\ = \boldsymbol{\theta}_{0} - \mathbf{p}_{0}θ1=θ0αL0 =θ0p0\boldsymbol{\theta}_{1} = \boldsymbol{\theta}_{0} - \alpha \nabla L_{0} \\ \quad\ = \boldsymbol{\theta}_{0} - \mathbf{p}^{0}
θ2=θ1αL1βp0 =θ1p1βp0\boldsymbol{\theta}_{2} = \boldsymbol{\theta}_{1} - \alpha\nabla L_{1} - \beta \mathbf{p}_{0} \\ \quad\ = \boldsymbol{\theta}_{1} - \mathbf{p}_{1} - \beta \mathbf{p}_{0}θ2=θ1αL(θ1βp0)βp0 =θ1p1βp0\boldsymbol{\theta}_{2} = \boldsymbol{\theta}_{1} - \alpha \nabla L(\boldsymbol{\theta}_{1} - \beta \mathbf{p}^{0}) - \beta \mathbf{p}^{0} \\ \quad\ = \boldsymbol{\theta}_{1} - \mathbf{p}^{1} - \beta \mathbf{p}^{0}
θ3=θ2p2βp1β2p0 =θ2j=02βjp2j\boldsymbol{\theta}_{3} = \boldsymbol{\theta}_{2} - \mathbf{p}_{2} - \beta \mathbf{p}_{1} - \beta^{2} \mathbf{p}_{0} \\ \quad\ = \boldsymbol{\theta}_{2} - \sum\limits_{j=0}^{2}\beta^{j}\mathbf{p}_{2-j}θ3=θ2αL(θ2βp1β2p0)βp1β2p0 =θ2p2βp1β2p0\boldsymbol{\theta}_{3} = \boldsymbol{\theta}_{2} - \alpha \nabla L(\boldsymbol{\theta}_{2} - \beta \mathbf{p}^{1} - \beta^{2}\mathbf{p}^{0}) - \beta \mathbf{p}^{1} - \beta^{2}\mathbf{p}^{0} \\ \quad\ = \boldsymbol{\theta}_{2} - \mathbf{p}^{2} - \beta \mathbf{p}^{1} - \beta^{2} \mathbf{p}^{0}
\vdots\vdots
θi+1=θij=0iβjpij\boldsymbol{\theta}_{i+1} = \boldsymbol{\theta}_{i} - \sum\limits_{j=0}^{i}\beta^{j}\mathbf{p}_{i-j}θi+1=θij=0iβjpij\boldsymbol{\theta}_{i+1} = \boldsymbol{\theta}_{i} - \sum\limits_{j=0}^{i}\beta^{j}\mathbf{p}^{i-j}

  1. イアン・グッドフェロー, ディープラーニング, 第8.3.2節 モーメンタム, 第8.3.3節 ネステロフのモーメンタム ↩︎

  2. オ・イルソク, 機械学習(MACHINE LEARNING) (2017), 第5.3節 モーメンタム ↩︎