Gradient Descent

时间:2017-07-13 13:32:34

标签: optimization machine-learning linear-regression gradient-descent

我目前正在介绍关于课程的机器学习课程,我遇到了一些我必须实现的梯度下降算法的问题。

我将有两个数据点,我会尝试使用渐变下降来填充这些数据点:

X Y. 23 406 98 432

线的等式是y = 0 + 1 * x,最初0 = 0且1 = 0。

梯度下降算法本质上会进行多次迭代,试图优化0和1的值,以便成本函数定义为:

J(θ0,θ1)=(1 / 2m)*Σi= 1 - > m(hθ(x ^(i)) - y ^(i))^ 2

至少是。 (h(x)是回归线方程y = 0 + 1 * x) (我也不能上传两个以上的链接。所以你可以谷歌“梯度下降成本函数,谷歌图像的第二个结果将显示我正在谈论的方程式)

在每次迭代中,梯度下降算法更新0和1的值,如下所示:

enter image description here

其中alpha是算法的学习率,而大的求和项是成本函数的导数,定义为

enter image description here

现在显然,0和1应该增加每次迭代以创建具有正斜率的线。 desmos为此数据给出的回归方程返回以下行:y = 0.346x + 398。

但是,如果我们计算这组数据点的导数项,我在第一次迭代中计算:

d / d0 [J(0)] = -419

d / d1 [J(1)] = -25837

这意味着0和1的值正在减少,与应该发生的情况相反。

我已将此问题与此单一衍生术语隔离开来。我的数据随着越来越多的负值而变化,我的成本函数在每次迭代后都会增加。

如果有人可以帮我解决这个问题;确保我实际上首先计算衍生术语是正确的,如果我是,那么还有什么可能会出错,那就太棒了。

非常感谢你!

1 个答案:

答案 0 :(得分:0)

它们正在增加,因为由于导数是负数,而在更新时减去alpha *导数,它相当于添加一定数量(负数为负数为正数)。这样就会增加参数。