梯度下降法

上一次说到代价函数,代价函数的作用就是找到最优的参数使假设函数与实际值相差最小。而梯度下降法(Gradient Descent)就是找到最优参数的方法之一。

一,算法思想

梯度下降法_第1张图片

  • 1.从参数的某一个(组)值开始,比如从θ0=0和θ1=0开始。
  • 2.保持该(组)值持续减小,如果是一组值就要保证他们***同步更新***,直到找到我们希望找到的最小值。

过程如图,就像下山一样,从一点开始,找到最快的方法下山到最低点,在你不会摔倒的情况下,你会怎么选择下山路径呢,肯定是选择梯度最大(也就是坡度最大)的路径。这就是梯度下降法的精髓。
梯度下降法_第2张图片

而梯度下降法还有一个特点就是可能因为起点不同而找到完全不同的最低点。
梯度下降法_第3张图片

事实证明,用于线性回归的代价函数都是凸函数,就像图中一样:
梯度下降法_第4张图片

所以不会出现这样不同的局部最低点,都会收敛于一个最低点。

二,更新规则

在梯度下降法中,为了使代价函数更加容易找到最小值,我们使用以下更新规则:
梯度下降法_第5张图片

α为学习速率,学习速率需要控制,不能过大也不能过小。太小了很好理解,这就会使得更新次数过大,找到最低点时间过长;而太大了就会在接近最低点的时候跨过最低点,下次迭代又会越过最低点,导致无法收敛,甚至发散,就像图中这样:
梯度下降法_第6张图片

从公式中就能看出这是借助偏导数,使得越接近最低点的时候收敛速度越慢,就像打高尔夫球,越接近洞口用的力度就会越小,才能精确地到达我们的目标,这里目标指的就是全局最低点。当收敛于最低点时,偏导数为0,那么θ0和θ1就会停止更新,也就是知道了代价函数的最低点,并解出θ0和θ1的最优解。

同步更新
梯度下降法_第7张图片
同步更新重点在于更新θ1时J(θ0,θ1)中θ0取的是没有更新之前的θ0。

如果还不清楚,对比一下非同步更新应该就明白了:
梯度下降法_第8张图片

三,批量梯度下降法

对于上次说到的代价函数:
这里写图片描述

对于下面的线性回归方程
这里写图片描述
使用梯度下降法,经过计算后,得到的偏导数为:
梯度下降法_第9张图片

所以,更新规则为:
梯度下降法_第10张图片

我们就可以通过这个更新规则找到代价函数的最小值,从而解出θ0和θ1的最优解,并借此找到最佳拟合直线。

从上面就能看出,这是对许多样本批量处理的一种算法,这种算法就称为批量梯度下降法。

四,对多特征线性回归的梯度下降法

三中提到的是批量梯度下降法,也就是可以对多条记录梯度下降,相当于进行批量操作但这只是一个影响因数(特征向量),如果对于多特征应该如何处理呢?

如对于下面的方程
这里写图片描述

其实,跟单特征线性回归是一样的,就是用批量梯度下降算法分别对每个影响因数进行求偏导数。两者对比如下:
梯度下降法_第11张图片

新的公式就相当于是一个通式,对于多特征以及单特征都适用。只是在单特征中x0^(i)为1,也就是前面说的梯度下降法是多特征梯度下降法的特殊情况。


这是我在学习ng的机器学习课程的基础上,经过自己的一些思考,写下学习笔记,重点是对于一些细节的思考和逻辑的理清。

以上很多都是个人的理解,如果有不对的地方,还请大家指教。

你可能感兴趣的:(ml学习笔记,梯度下降法,算法,ml,机器学习)