【机器学习】梯度下降

上一章——线性回归与代价函数


什么是梯度下降

在上一章中我们介绍了代价函数,然而之前举出的例子都是形状简单的图形,如果我们碰到了一些形状复杂的图像,比如下图这个,我们又该如何找到最低点呢?
在这里插入图片描述
整个图形看起来就像是一座山,想象一下,你从山上某点打算到达山的最低点,那么不可能一下子直接跳到最低点,一定是一步一步从山顶走到山腰,再走到山脚,最后到达最低点的。
并且我们想尽快地走下山,下山的步伐既不能太快,也不能太慢。
在这里插入图片描述
但是还有一个问题,你的确是到达"最低点"了,已经在山脚下无法再下山了,问题是你所在的最低点真的是最低点吗?可能你所处的位置的确是局部的最低点,但是你并不知道是否存在其他最低点比你当前所处位置要更低。如果你选择从另一面下山,那么你将到达另一个局部最低点。
在这里插入图片描述
整个下山过程也就是梯度下降的过程,接下来我们将理解它的数学原理


梯度下降的数学原理

梯度下降算法公式: θ j ≔ θ j − α ∂ ∂ θ j J ( θ 0 , θ 1 ) ( 其中 j = 0 和 1 ) θ_j\coloneqqθ_j-α\cfrac{∂}{∂θ_j}J(θ_0,θ_1)\biggl(其中j=0和1\biggr) θj:=θjαθjJ(θ0,θ1)(其中j=01)
其中 ≔ \coloneqq :=是赋值的符号,相当于程序中的赋值号" = = ="
α α α是一个自变量,代表了学习率,当α越大,梯度下降越快,反正越小下降越慢
对代价函数 J J J求偏导,其结果为在该点处的斜率
程序中代码应如下:
t e m p 0 ≔ θ 0 − α ∂ ∂ θ 0 J ( θ 0 , θ 1 ) temp0\coloneqqθ_0-α\cfrac{∂}{∂θ_0}J(θ_0,θ_1) temp0:=θ0αθ0J(θ0,θ1)
t e m p 1 ≔ θ 1 − α ∂ ∂ θ 1 J ( θ 0 , θ 1 ) temp1\coloneqqθ_1-α\cfrac{∂}{∂θ_1}J(θ_0,θ_1) temp1:=θ1αθ1J(θ0,θ1)
θ 0 ≔ t e m p 0 θ_0\coloneqq temp0 θ0:=temp0
θ 1 ≔ t e m p 1 θ_1\coloneqq temp1 θ1:=temp1


梯度下降的图像

我们看看图像来辅助理解这个公式
记得上一节中的这个图吗,当 θ 0 = 0 θ_0=0 θ0=0时,关于 θ 1 θ_1 θ1的代价函数类似于一条开口向上的二次函数
我们依旧将 θ 0 = 0 θ_0=0 θ0=0,因为公式的性质是相同的,我们研究单变量的代价函数的特征可以推广到更高维的公式中。
在这里插入图片描述

在这里插入图片描述
假设取 θ 1 θ_1 θ1处于该点,对 J ( θ 1 ) J(θ_1) J(θ1)求偏导就是求此时函数的斜率,我们画出该点时的切线,发现斜率为正,因此 t e m p 1 ≔ θ 1 − α ∂ ∂ θ 1 J ( θ 0 , θ 1 ) temp1\coloneqqθ_1-α\cfrac{∂}{∂θ_1}J(θ_0,θ_1) temp1:=θ1αθ1J(θ0,θ1) ,那么 θ 1 θ_1 θ1变小,在图像上应当是向左移动,而图像向左移动的距离则由学习率 α α α所决定
因此我们说学习率α决定了梯度下降的速度
在这里插入图片描述同理,当 θ 1 θ_1 θ1处于最低点的左侧,我们画出该点时的切线,发现斜率为负,
因此 t e m p 1 ≔ θ 1 − α ∂ ∂ θ 1 J ( θ 0 , θ 1 ) temp1\coloneqqθ_1-α\cfrac{∂}{∂θ_1}J(θ_0,θ_1) temp1:=θ1αθ1J(θ0,θ1) ,那么减去一个负数, θ 1 θ_1 θ1变大,在图像上应当是向右移动
因此,梯度下降算法无论如何都会使得当前点向着最低点的方向移动


学习率α对梯度下降的影响

当学习率α足够小时,梯度下降就会如下图一样,
变量向着最低点一小步一小步的运动,迈着baby steps,
其缺点在于迭代次数多,效率偏低
优点在于准确度高,更趋近最低点

在这里插入图片描述
而当学习率α过大时,梯度下降就会如下图一样,
变量向着最低点运动,然而跨越的距离过大,导致每次向最低点方向移动后落点会越来越高,
这就导致我们反向运动,从而永远找不到这个最低点了
最终它会无法收敛,甚至发散

在这里插入图片描述
因此学习率α并不是越高越好,也不是越低越好,我们需要找到一个适合的学习率,既要保证迭代速度,又要保证迭代的准确度


局部最低点

虽然梯度下降很好,但是它仍然有一些问题,比如它只能到达局部最低点,你无法确定该点是否为全局最低点,比如下图
在这里插入图片描述
在该图中,我们已经到达了右半部分的局部最低点,但显然,左半部分的那个点才是全局最低点,然而我们无法再进行下降了
这是因为在这个局部最低点,它的最低点是其驻点,驻点处函数可以取到极值,但不一定取到最值,并且由于此处导数值为0, θ 1 ≔ θ 1 − 0 = θ 1 θ_1\coloneqqθ_1-0=θ_1 θ1:=θ10=θ1,因此在极值点处不会再移动
因此,梯度下降不一定能找到全局最低点


迭代效率

最后,我们再看下面这个图
在这里插入图片描述
当我们选取了合适的学习率后,我们会发现实际上迭代效率是越来越低的,这是由于当越接近最低点,斜率就越接近0,那么迭代速度就会越来越慢,不过不用担心,在有限次的迭代计算后,最终总会收敛到最低点的。


下一章——多元梯度下降法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值