最適化アルゴリズムとは
今回は、ディープラーニングで最適な重みパラメータを見つけるための最適化アルゴリズムについて説明します。この分野はマジでE資格でよく出るよ。
有名なのは以下の5つ。特にモメンタムはE資格に死ぬほど出題されるで。
・確率的勾配降下法(SGD)
・モメンタム
・Adagrad
・RMSProp
・Adam
確率的勾配降下法
ランダムに取り出したデータを用いて、パラメータを更新していく勾配降下法。
■更新式
W_{t+1} = W_t - η \frac{\partial L}{\partial W_t}
■イメージ図
https://kunassy.com/oprimizer/
モメンタム
SGDの進化形。Momentunでは、αvtすなわち、「現在の速度に0以上1未満の係数をかけたもの」を、次の時刻の速度に足し合わせる。これは、物理学で言う”慣性“の導入に相当する。
更新式
W_{t+1} = α・v_t - η \frac{\partial L}{\partial W_t}
Q. 慣性を導入すると、何が起こるか。
以下のようなイメージです。
・現在の速度が大きいとき、外力を受けない限り、次の時刻における速度も大きいまま。
・現在の速度が小さいとき、外力を受けない限り、次の時刻における速度も小さいまま。
Adagrad
SGDの進化形。
「学習が進むにつれて、学習係数を小さくしていく」というアイデアを盛り込んだアルゴリズムのこと。
RMSProp
Adagradの進化形。AdaGradに移動平均を導入したアルゴリズムのこと。
更新式
Q. なんで移動平均を導入したのか?何がよくなるん?
まず、AdaGradは、パラメータごとに学習率を調整することで最適化を効率的に行うアルゴリズムです。AdaGradでは、過去の勾配の二乗の和を使って、学習率を小さくしていきます。これは、勾配が大きいパラメータは学習率を小さくし、勾配が小さいパラメータは学習率を大きくするという効果があります。しかし、AdaGradの問題は、学習が進むにつれて学習率が小さくなりすぎてしまうということです。学習率が小さくなりすぎると、最適な値に近づけなくなってしまいます。
RMSPropは、AdaGradの問題を解決するために、勾配の二乗の移動平均を使って学習率を調整するアルゴリズムです。移動平均とは、時系列データの変動をならすために、ある期間のデータの平均を計算して新しいデータとすることです。RMSPropでは、過去の勾配の二乗の和ではなく、過去の勾配の二乗の移動平均を使って、学習率を小さくしていきます。これにより、過去の勾配の影響を減らし、最新の勾配に応じて学習率を適切に保つことができます。つまり、移動平均を導入すると、学習率の減衰を抑えて、最適化の収束を早めることができるということです。
Adam
Adamとは、モメンタムとRMSPropという二つの最適化アルゴリズムを組み合わせたものです。モメンタムは、過去の勾配の方向に加速度をつけてパラメータを更新する方法です。RMSPropは、勾配の大きさに応じて学習率を調整する方法です。Adamでは、これらの2つを組み合わせて、より効率的にパラメータを最適化する。
更新式
▽E(Wt):t回目の勾配
mt:t回目のモーメンタム
vt:t回目の勾配の二乗和
m^t:mtのバイアス補正した値
v^t:vtのバイアス補正した値、
θt:t回目のパラメータ
α:学習率
β1、β2:減衰率
ϵ:ゼロ除算を防ぐための微小な値
更新式の解説
<①式について>
これはモメンタムの更新式。過去のモーメンタムmt−に減衰率β1をかけて、現在の勾配▽E(Wt)に(1−β1)をかけたものを足している。これにより、勾配の方向に加速度がつく。
β1は、過去の勾配の影響力を調整するパラメータで、一般には0.9程度に設定されるらしい。
<②式について>
これはRMSPropの更新式。過去の勾配の二乗和vtに減衰率β2をかけて、現在の勾配の二乗▽E(Wt)^2に(1−β2)をかけたものを足している。これにより、勾配の大きさに応じて学習率が調整される。
β2は、過去の勾配の影響力を調整するパラメータで、一般には0.999程度に設定されるらしい。
<③式、④式について>
バイアス補正の式です。mtとvtは、減衰率β1とβ2によって割り引かれた勾配の(二乗の)和であるため、初めの頃は値が小さくなってしまいます。これでは効率的に学習が進められないため、β1tとβ2tで割って値を拡大します。β1tとβ2tは指数的に0に近づくため、更新が進むにつれてこの補正の影響が薄れていきます。
<⑤式について>
これはパラメータの更新式です。現在のパラメータθtから、学習率αとバイアス補正したモーメンタムm^tと勾配の二乗和v^tの平方根の逆数をかけたものを引きます。これにより、モーメンタムの方向に加速しながら、勾配の大きさに応じて学習率が調整されます。αは、学習の速さを調整するパラメータで、一般には0.001程度に設定されます。ϵは、ゼロ除算を防ぐための微小な値で、一般には10^−8程度に設定されます。
参考文献
本記事は、以下のページと、AVILENの『全人類がわかるE資格講座』のテキスト・動画を参考にして作成しております。