オムライスの備忘録

数学・統計学・機械学習・プログラミングに関することを記す

【深層学習】最適化 / Optimization

Index

最適化 / Optimization とは

ニューラルネットワークの学習の目的は、損失関数の値をできるだけ小さくするパラメータを見つけること.

これは、つまり最適なパラメータを見つけることが問題であり、そのような問題を解くことを最適化 / Optimizationという.

この問題は、とても難しい問題である.

というのも、パラメータ空間は複雑であり、広大であるため、最適な解は簡単には見つけられない.

パラメータが 5 つあるだけ、パラメータ空間は5次元であり、その空間から適切な解  x_{1},\ x_{2},\ x_{3},\ x_{4},\ x_{5} を見つけなければならない.



最適なパラメータを見つけるために、パラメータの勾配 (微分) を手がかりにすることは、すばらしい考え.

勾配

あるデータ  Xニューラルネットワークに入力されて、損失関数  L から損失が計算できたとする.

このとき出力は、

 L(X,\ w_{1},\ w_{2})\ =\ (X\ \cdot\ w_{1}\ +\ w_{1})\ \cdot\ w_{2}\ +\ w_{2}



とする.

このとき、

 w_{1},\ w_{2} はパラメータ変数  W_{1},\ W_{2} の値で、  w_{1}\ \in\ W_{1},\ w_{2}\ \in\ W_{2} であり、 パラメータ空間は  W_{1}\ \times\ W_{2}\ \subset\ R^{2} の2次元空間である.





最適化したいこの関数を  w_1, w_2 の関数と考えて、偏微分する.



 \displaystyle \frac{\partial L}{\partial w}\ =
\ \left( \displaystyle \frac{\partial L}{\partial w_{1}},
\ \displaystyle \frac{\partial L}{\partial w_{2}} \right)



これが、勾配 (ベクトル) で、これは、 w_1,\ w_2 での、損失関数  L に沿ったベクトル.

勾配法

このパラメータ空間にて、勾配ベクトルの定数倍分、移動する.

 w\ -\ \mu \displaystyle \frac{\partial L}{\partial w}\ =
\ \left( w_{1}\ -\ \mu\ \displaystyle \frac{\partial L}{\partial w_{1}},\ w_{2}
\ -\ \mu\ \displaystyle\frac{\partial L}{\partial w_{2}} \right)





このように、パラメータを更新していき、

 w\ =\ w\ -\ \mu \displaystyle \frac{\partial L}{\partial w}



最小化(最適化)したい関数  L を、最小とするパラメータの組み( w_1,\ w_2)を決定する.



このように、パラメータを変数として、損失関数を微分し、勾配(ベクトル)を求め、そのベクトル分パラメータ空間を移動していく ことで、徐々に、損失関数が最小となるパラメータを見つけていく方法を「勾配法」 (最小値を見つけるときは、勾配降下法)という.

ニューラルネットワークでは、複数の関数が結合されている.

そのような連結された関数を効率よく微分する仕組みとして誤差逆伝播法がある.

アルゴリズム

確率的勾配降下法 / Stochastic Gradient Descent / SGD

一度の更新に利用する学習データをランダムに選んで(ミニバッチ学習 / Minibatch Learning)、 学習することで、ランダム性を取り入れる手法.

更新アルゴリズム

 W\ \leftarrow\ W\ -\ \mu \displaystyle \frac{\partial L}{\partial W}



 \mu は学習率  0 \leq \mu \leq 1



SGD は、パラメータ空間の局所解に導いてくれる素晴らしいアルゴリズムではあるが、 無駄な動きが発生してしまうケースもある.

そのような欠点にいくつかの効率化を加えた手法が提案されいる.

SGLD / 2011

Momentum

勾配法の(パラメータ空間内での)振動(=無駄な動き)を抑制し、極小値への収束性を改善する.

更新アルゴリズム

 
\begin{align}
v\ &\leftarrow\ \alpha v\ -\ \mu \displaystyle \frac{\partial L}{\partial W} \tag{1.1} \\
W\ &\leftarrow\ W\ +\ v \tag{1.2}
\end{align}



 \mu は学習率  0 \leq \mu \leq 1

 \alpha は抑制パラメータ  0 \leq \alpha \leq 1



ネフテロフの加速勾配法 / Nesterov's Accelerated Gradient Method / NAG / 1983

Momentum の改善手法.

更新アルゴリズム

 
\begin{align}
W\ &=\ W^{(t)}\ +\ W^{(t-1)} \\
v\ &\leftarrow\ \alpha v\ -\ \mu \displaystyle \frac{\partial L}{\partial W} \\
W\ &\leftarrow\ W\ +\ v
\end{align}



 \mu は学習率  0 \leq \mu \leq 1

 \alpha は抑制パラメータ  0 \leq \alpha \leq 1



Momentum との違いは、勾配ベクトルの計算するための対象パラメータだけである.

AdaGrad / Adaptive Subgradient Descent / 2011

勾配法の改善.

よく動きそうな (大きく更新されそうな) パラメータを次第に小さくするという減衰を、 パラメータ個別に行う.

更新アルゴリズム

 
\begin{align}
h\ &\leftarrow\ h\ +\ \displaystyle \frac{\partial L}{\partial W}\ \odot \displaystyle \frac{\partial L}{\partial W} \tag{2.1} \\
W\ &\leftarrow\ W\ -\ \mu \displaystyle \frac{1}{\sqrt{h}} \displaystyle \frac{\partial L}{\partial W} \tag{2.2}
\end{align}



 \mu は学習率  0 \leq \mu \leq 1



RMSProp / Root Mean Square Prop / 2012

過去の情報よりも、直近の情報に重みを置く「指数移動平均」という加算方法を導入した AdaGrad の手法.

更新アルゴリズム

 
\begin{align}
h\ &\leftarrow\ \alpha h\ +\ (1\ -\ \alpha)\ \displaystyle \frac{\partial L}{\partial W}\ \odot \displaystyle \frac{\partial L}{\partial W} \\
W\ &\leftarrow\ W\ -\ \mu \displaystyle \frac{1}{\sqrt{h\ +\ \epsilon}} \displaystyle \frac{\partial L}{\partial W}
\end{align}



 \mu は学習率  0 \leq \mu \leq 1

 \alpha は、どれだけ、直近の勾配に重きを置くかの割合パラメータ

 \epsilon は分母が 0 にならないための固定パラメータ  \epsilon_{n}\ =\ 10^{-6}



AdaDelta / 2012

RMSProp の改善?

RMSpropGraves / 2014

RMSProp の改善?

Adam / Adaptive Moment Estimation / 2014

Momentum と AdaGrad (RMSProp)を合わせた手法.

更新アルゴリズム

 
\begin{align}
m\ &\leftarrow\ \beta_{1}\ m\ +\ (1\ -\ \beta_{1})\ \displaystyle \frac{\partial L}{\partial W} \tag{Momentum} \\
v\ &\leftarrow\ \beta_{2}\ v\ +\ (1\ -\ \beta_{2})\ \displaystyle \frac{\partial L}{\partial W} \odot \displaystyle \frac{\partial L}{\partial W} \tag{RMSProp} \\
\\
\hat{m}\ &\leftarrow\ \frac{m}{1\ -\ \beta_{1}^{t}} \\
\hat{v}\ &\leftarrow\ \frac{v}{1\ -\ \beta_{2}^{t}} \\
\\
W\ &\leftarrow\ W\ -\ \mu \displaystyle \frac{\hat{m}}{\sqrt{\hat{v}\ +\ \epsilon}}
\end{align}



 \mu は学習率  0 \leq \mu \leq 1

 \beta_1,\ \beta_2 はどれだけ、直近の勾配に重きを置くかの割合パラメータ

 \epsilon は分母が 0 にならないための固定パラメータ  \epsilon_{n}\ =\ 10^{-6}



AdaMax / 2015

AdamW / 2017

  • Decoupled Weight Decay Regularization

AdaBound / 2019

  • Adaptive Gradient Methods with Dynamic Bound of Learning Rate

AdaBelief / 2020

  • AdaBelief Optimizer: Adapting Stepsizes by the Belief in Observed Gradients

ASAM / 2021

  • ASAM:Adaptive Sharpness-Aware Minimization for Scale-Invariant Learning of Deep Neural Networks

D-Adaptation / 2023

Lion / EvoLved Sign Momentum / 2023

  • Symbolic Discovery of Optimization Algorithms

DIFF2 / 2023

  • DIFF2: Differential Private Optimization via Gradient Differences for Nonconvex Distributed Learning

Sophia / 2023

SophiaはLLM向け最適化手法であり、ほぼ同じ計算量でAdamWやLIONと比べ2倍近く高速に収束し、パラメータ数も減らせる.

ヘシアンの対角成分をHutchinson法などで定期的に推定し、それを使って前条件付する際に正成分になり、 かつ更新幅が大きくなりすぎないようクリップする.



  • Sophia: A Scalable Stochastic Second-order Optimizer for Language Model Pre-training

テクニック

Warmup

  • 学習率のWarmupで大きいバッチサイズでもいい感じに訓練する

  • SOURCE CODE FOR MMDET.ENGINE.SCHEDULERS.QUADRATIC_WARMUP

研究

  • Over-Parameterization Exponentially Slows Down Gradient Descent for Learning a Single Neuron

参考

Web サイト