机器学习笔记003 | 梯度下降算法

为了达到最佳的预测效果,我们需要找到使得代价函数最小的参数。

还记得上一篇文章提到的代价函数么:

我们通过不断去调整参数θ0和θ1,最终找到让J(θ01)最小的参数。

如果直观来看,我们就像这样,一步一步地走下山:

机器学习笔记003 | 梯度下降算法_第1张图片
走下山

具体是怎么实现的呢?

这里要提到一个算法:梯度下降(Gradient Descent)算法

为了使得代价函数的结果越来越小,我们需要不断重复以下步骤:

来改变参数,以寻找使得代价函数最小的最优解。

需要注意的是,所有的参数θj必须同时更新,如:

机器学习笔记003 | 梯度下降算法_第2张图片
同时更新

而下面这样的方式,是不正确的:

机器学习笔记003 | 梯度下降算法_第3张图片
不同时更新

或者说已经不属于梯度下降算法的范畴,而是其他的算法了。

在这里,“:=”是赋值的含义,就是把等式右边的值赋予左边;α是学习的速率,代表着下山的脚步大小;后面这个是对代价函数的求导:

为什么通过这样的重复,可以找到最佳的参数呢?

为了方便理解,这里还是将θ0设置为0,也就是说,我们的预测函数为:

hθ(x1) = θ0 + θ1 xi = θ1 xi

那么对于θ1,我们需要重复的调整的步骤就是:

J(θ1)的代价函数大概是这样的:

机器学习笔记003 | 梯度下降算法_第4张图片
代价函数曲线

对这样的代价函数求导,其实得到的,就是在某一个点的切线,也就是在该点的斜率。

机器学习笔记003 | 梯度下降算法_第5张图片
斜率为正数

斜率为正,说明需要减去的是一个正数,θ1的值变小。

机器学习笔记003 | 梯度下降算法_第6张图片
斜率为负数

斜率为负,说明需要减去了一个负数,也就是加上一个正数,θ1的值变大。

可以看到,两个图的绿点就是最低点。

因为斜率的原因,不管红点在绿点的左边还是右边,最终都会往绿点靠拢。

当到达最低点的时候,斜率为0,所以在这个位置,参数保持很定不变。

所以不管初始点设置在最低点的哪一边,在设置了合理的学习速率α的情况下,重复了这些步骤之后,最终都会往最低点汇聚。

为什么说是合理学习速率α呢?

因为如果学习速率α太大,那么有可能一直偏离,永远的去不到最低点。

如图,随着斜率的绝对值变大,脚步还越来越大,从距离低点最近的参数偏离得越来越远:

机器学习笔记003 | 梯度下降算法_第7张图片
学习速率α太大

如果学习速率α太小,那么就需要很多的步骤,才能够找到最优解:

机器学习笔记003 | 梯度下降算法_第8张图片
学习速率α太小

那么是否需要随着参数逐渐接近最优解的时候,降低学习速率α呢?

其实没有必要,你看一个在学习速率α固定的情况下,迈出的步子大概是这样的:

机器学习笔记003 | 梯度下降算法_第9张图片
学习速率α固定

由于越接近最低点,斜率的绝对值就越小。

那么也就意味着即使学习速率恒定不变,由于斜率绝对值的不断变小,机器学习所走的脚步也会变得越来越小。

相信看到这里,你也对算法的原理有了个基本的理解。

下面是J(θ01)代入之后,得到的等式

机器学习笔记003 | 梯度下降算法_第10张图片

为什么两个等式会不同呢?

其中对于θ1求导数的过程如下:

机器学习笔记003 | 梯度下降算法_第11张图片
求导过程

看完这个,你应该就能明白,之前代价函数为什么要乘以 1/2 了吧。

如果看不懂也没有关系,直接记住前面的等式就行了。

由于这样的梯度下降算法在整个训练过程中,每一步都去计算所有的训练样本,被命名为“批量梯度下降(batch gradient descent)”。

文章转载自公众号:止一之路

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