SGD, Momentum, NAG
2552 ワード
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で、知らないなら「アダム」と書いてからにしよう.
Reference
この問題について(SGD, Momentum, NAG), 我々は、より多くの情報をここで見つけました
https://velog.io/@hughqlee/SGD
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
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で、知らないなら「アダム」と書いてからにしよう.
Reference
この問題について(SGD, Momentum, NAG), 我々は、より多くの情報をここで見つけました
https://velog.io/@hughqlee/SGD
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(SGD, Momentum, NAG), 我々は、より多くの情報をここで見つけました https://velog.io/@hughqlee/SGDテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol