勾配降下における運動量法
📂機械学習勾配降下における運動量法
概要
勾配降下法におけるモーメンタム技術は、パラメーターを更新する際に以前の勾配もすべて使用することである。これが本質であり、これに尽きる。しかし、奇妙な更新式や物理学の運動量が動機となったとか、質量を1に設定し初期速度を0にするといった説明は理解を難しくするだけである。本稿では、モーメンタム技術をできるだけシンプルに説明する。
ビルドアップ
パラメーターをθ、損失関数をLとするとき、標準的な勾配降下法は、以下のように反復的にパラメーターを更新する方法である。
θi+1=θi−α∇Li
ここでLi=L(θi)は、i番目の反復で計算された損失関数を意味する。モーメンタム技術とは、これに単に前の反復で計算された損失関数の勾配∇Li−1を加えることに過ぎない。
θi+1=θi−α∇Li−α∇Li−1−⋯−α∇L0
ここで、反復が進むにつれて勾配の影響を減らし、勾配の合計が発散するのを防ぐために係数β∈(0,1)を追加すると、次のようになる。
θi+1=θi−α∇Li−βα∇Li−1−⋯−βiα∇L0=θi−αj=0∑iβj∇Li−j
定義
(1)のようにパラメーターを更新することをモーメンタム技術momentum methodと呼び、追加される項αj=0∑iβj∇Li−jをモーメンタムmomentumと呼ぶ。
説明
上記の定義によれば、モーメンタム技術は一般化された勾配降下法であり、むしろ勾配降下法はモーメンタム技術のβ=0の特別なケースに過ぎないと見ることができる。βが1に近いほど以前の勾配を多く反映し、0に近いほど少なく反映する。
勾配降下法は、現在の傾きが最も大きい方向へパラメーターを更新するために貪欲アルゴリズムである。モーメンタム技術は勾配降下法の貪欲な部分を少し和らげ、現在最善の選択ではないが長期的にはより有効な選択をすることができるようにする。また、勾配の方向が急激に変わるのを防ぐことができる。
当然ながら、パラメーターを更新する際の勾配の大きさが勾配降下法より大きいため、収束速度が速いという利点がある。また、経験的に局所的最小値local minimaから比較的脱出しやすいことが知られており、坂を転がり下るボールが十分な速さであれば、下り坂の途中にある小さな坂も越えて通り過ぎることができると説明される。
ここで重要な事実は、適応的学習率技術を含むこれらのオプティマイザー間に絶対的な優位性はないということである。分野や作業によって最適なオプティマイザーが異なるため、「何が最も良いか」という判断や質問は適切ではない。自分が所属する分野で主に使用されているものが何かを知ることが役立ち、それがないか分からなければSGD+モーメンタムまたはAdamを使用するのが無難である。
ネステロフのモーメンタム
モーメンタム技術を再検討すると、次のパラメーターθi+1を得るために、現在のパラメーターθiに現在のパラメーターで計算された勾配α∇L(θi)を蓄積しながら加えていく。
ネステロフのモーメンタムNesterov momentumまたはネステロフ加速勾配Nesterov accelerated gradient, NAGと呼ばれる技術は、「現在のパラメーターに前の勾配を加えた値」で勾配を求め、これを現在のパラメーターに加えて次のパラメーターを求める。言葉ではやや複雑だが、モーメンタム技術を理解していれば、以下のアルゴリズムを見ることでネステロフのモーメンタムを理解するのが簡単になるかもしれない。
アルゴリズム
モーメンタム項をpと表す。
アルゴリズム: モーメンタム技術 | | |
---|
入力 | 学習率 α, モーメンタムパラメーター β, エポック N | |
1. | パラメーター θを任意の値で初期化する。 | |
2. | モーメンタムを p=0で初期化する。 | |
3. | for k=1,⋯,N do | |
4. | p←βp−α∇L(θ) | # 勾配を計算しモーメンタムを更新 |
5. | θ←θ+p | # パラメーターを更新 |
6. | end for | |
アルゴリズム: ネステロフのモーメンタム | | |
---|
入力 | 学習率 α, モーメンタムパラメーター β, エポック N | |
1. | パラメーター θを任意の値で初期化する。 | |
2. | モーメンタムを p=0で初期化する。 | |
3. | for k=1,⋯,N do | |
4. | p←βp−α∇L(θ+βp) | # 勾配を計算しモーメンタムを更新 |
5. | θ←θ+p | # パラメーターを更新 |
6. | end for | |
両方の方法について初めの数回の計算を見ると、以下のようになる。簡単にpi=α∇Li、およびpi=α∇L(θi−β1pi−1−β2pi−2−⋯−βip0)(このときp0=p0)と表記すると、
モーメンタム | ネステロフのモーメンタム |
θ_0= 初期値 | θ_0= 初期値 |
θ1=θ0−α∇L0 =θ0−p0 | θ1=θ0−α∇L0 =θ0−p0 |
θ2=θ1−α∇L1−βp0 =θ1−p1−βp0 | θ2=θ1−α∇L(θ1−βp0)−βp0 =θ1−p1−βp0 |
θ3=θ2−p2−βp1−β2p0 =θ2−j=0∑2βjp2−j | θ3=θ2−α∇L(θ2−βp1−β2p0)−βp1−β2p0 =θ2−p2−βp1−β2p0 |
⋮ | ⋮ |
θi+1=θi−j=0∑iβjpi−j | θi+1=θi−j=0∑iβjpi−j |