【发布时间】:2018-12-22 22:08:53
【问题描述】:
我已经尝试了所有方法,但无法弄清楚为什么我的梯度下降不起作用。我查看了许多示例,并多次更改了梯度下降代码。当我运行程序时,我得到NaN 的响应。然后我打印了每次迭代,并看到在我到达NaN 之前,该值越来越高(或越来越低到负无穷大)。我尝试了不同的 alpha 值、起始 beta 值和迭代次数,但每次都不起作用。怎么回事?
这是我的代码:
A = load('A2-datasets/data-build-stories.mat');
X = [ones(60,1) A.data_build_stories(:,1)];
y = A.data_build_stories(:,2);
b = gradDes(X, y);
function beta = gradDes(X,y)
alpha = 0.01;
beta = [0;0];
m = length(y);
for i = 1:1000
beta = beta - (alpha/m) * (X' * (X * beta - y));
end
end
这里是data-build-stories.mat:
770 54
677 47
428 28
410 38
371 29
504 38
1136 80
695 52
551 45
550 40
568 49
504 33
560 50
512 40
448 31
538 40
410 27
409 31
504 35
777 57
496 31
386 26
530 39
360 25
355 23
1250 102
802 72
741 57
739 54
650 56
592 45
577 42
500 36
469 30
320 22
441 31
845 52
435 29
435 34
375 20
364 33
340 18
375 23
450 30
529 38
412 31
722 62
574 48
498 29
493 40
379 30
579 42
458 36
454 33
952 72
784 57
476 34
453 46
440 30
428 21
【问题讨论】:
-
您的渐变线似乎正确。你能发布 data-build-stories.mat 吗?
-
@rsaxvc 我把它加到原帖里了