जोड़ा गया: तंत्रिका नेटवर्क पर एक स्टैनफोर्ड कोर्स,
cs231n , अभी तक चरणों का एक और रूप देता है:
v = mu * v_prev - learning_rate * gradient(x) # GD + momentum
v_nesterov = v + mu * (v - v_prev) # keep going, extrapolate
x += v_nesterov
यहाँ v
वेग उर्फ स्टेप उर्फ स्टेट है, और mu
एक गति कारक है, आमतौर पर 0.9 या तो। ( v
, x
और learning_rate
बहुत लंबे वैक्टर हो सकते हैं; सुन्न के साथ, कोड समान है।)
v
पहली पंक्ति में गति के साथ ढाल मूल है;
v_nesterov
अतिरिक्त, जा रहा रहता है। उदाहरण के लिए, म्यू = 0.9 के साथ,
v_prev v --> v_nesterov
---------------
0 10 --> 19
10 0 --> -9
10 10 --> 10
10 20 --> 29
निम्नलिखित विवरण में 3 शब्द हैं:
शब्द 1 अकेला सादा ढाल वंश (GD) है,
1 + 2 GD + गति देता है,
1 + 2 + 3 Nesterov GD देता है।
xt→ytyt→xt+1
yt=xt+m(xt−xt−1) - गति, पूर्वसूचक
xt+1=yt+h g(yt) - ढाल
gt≡−∇f(yt)h
yt
yt+1=yt
+ h gt - ढाल
+ m (yt−yt−1) - चरण गति
+ m h (gt−gt−1) - क्रमिक गति
अंतिम अवधि जीडी के बीच सादे गति के साथ अंतर है, और एनडीएस संवेग के साथ जीडी।
mmgrad
+ m (yt−yt−1) - चरण गति
+ mgrad h (gt−gt−1) - क्रमिक गति
mgrad=0mgrad=m
mgrad>0
mgrad∼−.1
mtht
(x/[cond,1]−100)+ripple×sin(πx)