我在Coursera上参加了Andrew Ng的机器学习课程,对梯度下降有些困惑。我感到困惑的公式截图在这里:
在他的第二个公式中,为什么他要乘以第i个训练样本的值?我原以为更新时只是减去步长乘以成本函数(成本函数不应该包括第i个训练样本)。
我错过了什么?这对我来说不太合理,特别是因为第i个训练样本是一系列值,而不仅仅是一个值…
谢谢,@bclayman
回答:
从数学上讲,我们在这里试图最小化误差函数
Error(θ) = Σ(yi - h(xi))^2 对i求和。
为了最小化误差,我们进行
d(Error(θ))/dθi = Zeroputting h(xi) = Σ(θi*xi) 对i求和
并推导出上述公式。
其余的公式可以解释为
梯度下降利用函数本身的斜率来寻找最大值。可以把它想象成在山谷中下山,通过选择最小向下的斜率方向。所以,我们得到了方向,但步长应该是什么(我们应该在同一个方向上继续移动多远)?
我们也使用斜率来确定步长。因为在最小值处斜率为零。(想象一下山谷的底部,因为它附近的所有点都比它高。所以,必定有一个点,在这个点上高度在减少,斜率为负,然后高度开始增加,斜率改变符号,从负变为正,而在中间,最小值是斜率为零的点。)为了达到零斜率,斜率的幅度在接近最小值时会减小。因此,如果斜率的幅度大,我们可以迈出大步,而如果斜率的幅度小,我们正在接近最小值,应该迈出小步。