2016-12-14 73 views
0

下面有一段代碼,它一步一步地做GD,但theta是發散的。什麼可能是錯的?漸變下降發散,學習速率過高

X = arange(100) 
Y = 50 + 4*X + uniform(-20, 20, X.shape) 

theta = array([0,0]) 
alpha = 0.001 
# one step of GD 
theta0 = theta[0] - alpha * sum(theta[0]+theta[1]*x-y for x,y in zip(X,Y))/len(X) 
theta1 = theta[1] - alpha * sum((theta[0]+theta[1]*x-y)*x for x,y in zip(X,Y))/len(X) 
theta = [theta0, theta1] 
+0

如果您執行10個步驟而不是僅僅執行一個步驟,它會發散麼? –

+0

是的,每一步越來越錯誤的方式。 – ArekBulski

回答