SGD, Momentum, NAG


import tensorflow as tf

tf.keras.optimizers.SGD(
    learning_rate=0.01,
    momentum=0.0, # Momentum
    nesterov=False, # NAG (Nesterov Accelrated Gradient)
    name='SGD', **kwargs
)

Stochastic Gradient Descent


wt+1=wt−η∗gradient(η=learning rate)w_{t+1} = w_t -\eta * gradient\\(\eta = learning\,rate)wt+1​=wt​−η∗gradient(η=learningrate)

Momentum


wt+1=wt+v(v=velocity)w_{t+1} = w_t + v\\(v = velocity)wt+1​=wt​+v(v=velocity)
vt+1=m∗vt−η∗gradient(m=moment coef)v_{t+1} = m * v_t -\eta * gradient\\(m = moment\,coef)vt+1​=m∗vt​−η∗gradient(m=momentcoef)
整理すると、
wt+1=wt+m∗vt−η∗gradient=SGD+m∗vtw_{t+1} = w_t + m*v_t -\eta*gradient\\= SGD + m*v_twt+1​=wt​+m∗vt​−η∗gradient=SGD+m∗vt​
テーマはSGDにm87 vtm*v tm87 vt!

Nesterov Accelrated Gradient


wt+1=wt+vw_{t+1} = w_t + vwt+1​=wt​+v
vt+1=m∗vt−η∗gradient(wt+m∗v)v_{t+1} = m * v_t -\eta * gradient(w_t + m * v)vt+1​=m∗vt​−η∗gradient(wt​+m∗v)
整理すると、
wt+1=wt+m∗vt−η∗gradient(wt+m∗vt)=A−η∗gradient(A)(A=wt+m∗vt)w_{t+1} = w_t + m*v_t -\eta*gradient(w_t+m*v_t)\\= A -\eta*gradient(A)\\(A = w_t + m*v_t)wt+1​=wt​+m∗vt​−η∗gradient(wt​+m∗vt​)=A−η∗gradient(A)(A=wt​+m∗vt​)
NAGはSGDでwtwtをAAAにします!ここでAAAは重み付け(www)と運動量(m87 vtm*v tm87 vt)の和である.
最適化関数の開始ともいえる「確率スロープダウン」は、単に「SGD」という
最適化は勾配の低下と何の関係がありますか?最適化は、予測値と実際の値の差、すなわち損失を最小にすることを意味し、この損失図では、傾斜値(傾き)を微分で求め、下方に下げる意味はこれと同じである.
動機はSGDに慣性(Momentum)を加え,局所極小値から逸脱させることである.車の運転中に加速して入ると、上り坂を通りやすいことを想像してみてください.
NAGは...勉強を続けましょう.これはトピックに似た機能ですが、1段階の歪みのため、理解がさらに困難です.これはロシアの数学者Nesterovが提案した方法のようで、私が大鵬についているのはまだ遠いですね.遠いですね.
実は基礎的なOptimizerなので、他のOptimizerを学ぶために、実際に使うことはありません.最も一般的な最適化関数はAdamで、知らないなら「アダム」と書いてからにしよう.