เพิ่มเติม: หลักสูตรสแตนฟอร์ดเกี่ยวกับโครงข่ายประสาทเทียม
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
คือความเร็ว aka ขั้นตอน aka state และmu
เป็นปัจจัยโมเมนตัมโดยทั่วไป 0.9 หรือมากกว่านั้น ( v
, x
และlearning_rate
สามารถเป็นพาหะนานมากกับ numpy รหัสเหมือนกัน.)
v
ในบรรทัดแรกคือการไล่ระดับสีด้วยโมเมนตัม
v_nesterov
ประมาณการณ์ต่อไป ตัวอย่างเช่นด้วย mu = 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) - โมเมนตัมการไล่ระดับสี
เทอมสุดท้ายคือความแตกต่างระหว่าง GD กับโมเมนตัมธรรมดาและ GD กับ Nesterov โมเมนตัม
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)