2016-06-06 5 views
0

내 질문은 Coursera 과정의 데이터 (https://www.coursera.org/learn/machine-learning/)를 기반으로하지만 검색 후에는 일반적인 문제로 보입니다.정규화없이 그라디언트 디센트가 작동하지 않는 이유는 무엇입니까?

그래디언트 디센트는 데이터 정규화 (pic.1)에서 완벽하게 작동하지만 J (비용 함수)가 무한대로 매우 빠르게 증가하면서 원래 데이터 (그림 2)에서 잘못된 방향으로 이동합니다. 매개 변수 값의 차이는 약 10^3입니다.

더 나은 실행 속도를 위해서는 정규화가 필요하다고 생각했는데, 많은 검색을 한 후에도 비용 기능에서 이러한 성장의 이유를 실제로 볼 수 없습니다. 'alpha'를 줄입니다. 0.001 또는 0.0001로 설정하면 도움이되지 않습니다.

아이디어가 있으면 게시 해주세요.

P. (나는 X_buf - 정규화 된 버전과 X_basic - original; Y - vector의 모든 Q-theta 벡터, 알파 - leaning rate)를 함수에 수동으로 제공했다.

function [theta, J_history] = gradientDescentMulti(X, Y, theta, alpha, num_iters) 

m = length(Y); 
J_history = zeros(num_iters, 1); 

for iter = 1:num_iters 
theta = theta - (alpha/m)*X'*(X*theta-Y); 
J_history(iter) = computeCostMulti(X, Y, theta); 
end 

end 

그리고 두 번째 함수 :

function J = computeCostMulti(X, Y, theta) 

m = length(Y); % number of training examples 
J = 0; 
J = (1/(2*rows(X)))*(X*theta-Y)'*(X*theta-Y); 

end 

Screenshots

+0

코스 게시판을 사용하여 도움을 받았습니까? TA는 꽤 반응 적입니다. 귀하의 코드에 문제가 보이지 않지만 ML 기능 내부에서 작업 한 지 1 년이 지났습니다. – Prune

+0

학습 속도 1e-10 시도 (비표준 데이터의 스케일에 따라 다름) – lejlot

+0

참조하는 사진의 위치가 명확하지 않습니다. – etov

답변

0

은 많은 반복으로까지 걸립니다 정말이 경우에 도움이되지 않는 매우 작은 값으로 알파의 가치를 감소 모이다.

정규화 빠른 수렴을 위해 사용되지만, 비용 함수의 미분이 I 같은 문제를 처음 직면 X.

의 값에 의존으로는 알파의 선택에 영향을 미친다. 그러나 X를 정규화 한 후에는 1보다 작은 모든 알파 값에 대해 비용 함수와 쎄타 수렴이 발생합니다.