课程:吴恩达机器学习
此篇我们将学习梯度下降算法,我们之前已经定义了代价函数J,梯度下降法可以将代价函数J最小化。
梯度下降是很常用的算法,他不仅被用在线性回归上,还被广泛应用与机器学习的众多领域。
之后,我们也会用到梯度下降法最小化其他函数,而不仅仅是最小化线性回归的额代价函数J。
我们的问题
- 我们有一个代价函数J(\theta_0|theta_1$),可能是线性回归的代价函数,也可能是其他需要最小化的函数。
- 我们需要用一个算法,来最小化代价函数J(\theta_0|theta_1$)。
- 实际上梯度下降算法可应用于更一般的函数
J(\theta_0,\theta_1,\theta_2,\theta_3,...,\theta_n)
Goal:
但为了简化符号,接下来我们只使用两个参数。
梯度下降的思路
图像分析梯度下降
- 开始给定\theta_0和\theta_1的初始值。(设为什么值并不重要,但通常选择的是将\theta_0和\theta_1都初始化为0)
- 我们在梯度下降算法中要做的是不停地一点点地改变\theta_0和\theta_1使J(\theta_0,\theta_1)变小,直到我们找到J的最小值或者局部最小值。
- 假设我们初始化\theta_0和\theta_1在山腰上的这一点,那么我们应该朝什么方向迈步?
-
如果你看一下周围发现最佳的下山方向是如果方向那么:
-
此时又到了新的一点,那么同样的问题,我们应该往什么方向迈步?接着同样的步骤,按照自己的思路,并确定从哪个方向下山,然后又迈进了一小步又一小步,直到收敛至局部最低点。
-
梯度下降有一个有趣的特点, 如果初始点不同,重复上述动作,所得到的可能是不同的局部最优处。
- 起始点偏移了一些, 就得到了完全不同的局部最优解
梯度下降的数学原理
- 在视频中:
赋值符合是":=",判断是否相等是"="。 - a称为学习效率(迈步子的大小)
- 求J(\theta_0,\theta_1)偏导我的理解是迈步子的方向,视频说后面会解释。
-
注意\theta_0和\theta_1需要同步更新
用临时变量存储所有计算的结果,等所有的计算完了再赋值给参数。以下是错误的赋值方法:
这里先不解释为什么要同时更新,事实上使用梯度下降方法,同步更新是更自然的实现方法,当人们谈到梯度下降时,他们指的就是同步更新。
如果用非同步更新去实现算法,可能也会正确工作,但是这种方法并不是人们所指的那个梯度下降算法,而是具有不同性质的其他算法,这其中会表现出微小的差别,你应该做的是在梯度下降中真正实现同时更新。
下一篇,我们将详细讲一下导数项,如果已经学过微积分了,已经熟悉偏导数和导数,这其实就是这个导数项。通过下一篇,就能知道如何利用梯度下降算法了。
【Andrew Ng机器学习】单变量线性回归-梯度下降知识点总结