【机器学习】梯度下降

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

文章目录

  • 什么是梯度下降
  • 梯度下降的数学原理
    • 梯度下降的图像
    • 学习率α对梯度下降的影响
    • 局部最低点
    • 迭代效率


什么是梯度下降

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


梯度下降的数学原理

梯度下降算法公式: θ 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,因为公式的性质是相同的,我们研究单变量的代价函数的特征可以推广到更高维的公式中。
【机器学习】梯度下降_第4张图片

【机器学习】梯度下降_第5张图片
假设取 θ 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变小,在图像上应当是向左移动,而图像向左移动的距离则由学习率 α α α所决定
因此我们说学习率α决定了梯度下降的速度
【机器学习】梯度下降_第6张图片同理,当 θ 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,
其缺点在于迭代次数多,效率偏低
优点在于准确度高,更趋近最低点

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

【机器学习】梯度下降_第8张图片
因此学习率α并不是越高越好,也不是越低越好,我们需要找到一个适合的学习率,既要保证迭代速度,又要保证迭代的准确度


局部最低点

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


迭代效率

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

你可能感兴趣的:(吴恩达机器学习课程,人工智能)