如何理解梯度下降法?

梯度下降法是用来计算函数最小值的。它的思路很简单,想象在山顶放了一个球,一松手它就会顺着山坡最陡峭的地方滚落到谷底:

凸函数图像看上去就像上面的山谷,如果运用梯度下降法的话,就可以通过一步步的滚动最终来到谷底,也就是找到了函数的最小值。

1 动机
先解释下为什么要有梯度下降法?其实最简单的二维凸函数是抛物线  ,很容易通过解方程   求出最小值在   处:

只是有一些凸函数,比如下面这个二元函数(该函数实际上是逻辑回归的经验误差函数,在监督式学习中确实需要求它的最小值):  要求它的最小值点就需要解如下方程组:

这个方程组实在太复杂了,直接求解难度太高,好在   的图像就像一座山谷:

所以可以用梯度下降法来找到   的谷底,也就是最小值。

2 最简单的例子
梯度下降法在本文不打算进行严格地证明和讲解,主要通过一些例子来讲解,先从最简单的凸函数   开始讲起。

2.1 梯度向量

假设起点在   处,也就是将球放在  :

它的梯度为 1 维向量:  这是在   轴上的向量,它指向函数值增长最快的方向,而   就指向减少最快的方向:

将   也看作 1 维向量  ,通过和   相加,可以将之向   移动一段距离得到新的向量  :  其中   称为步长,通过它可以控制移的动距离,本节设  ,那么:  此时小球(也就是起点)下降到了   这个位置:

2.2 迭代

的梯度为:  继续沿着梯度的反方向走:  小球就滚到了更低的位置:

重复上述过程到第 10 次,小球基本上就到了最低点,即有  :

2.3 梯度下降法

把每一次的梯度向量   的模长列出来,可以看到是在不断减小的,因此这种方法称为梯度下降法:

这也比较好理解,当最终趋向于 0 时有:  所以梯度下降法求出来的就是最小值(或者在附近)。

3 步长
上面谈到了可以通过步长   来控制每次移动的距离,下面来看看不同步长对最终结果的影响。

3.1 过小

如果设   就过于小了,迭代 20 次后离谷底还很远,实际上 100 次后都无法到达谷底:

3.2 合适

上面例子中用的   是较为合适的步长,10 次就差不多找到了最小值:

3.3 较大

如果令  ,这个时候会来回震荡(下图看上去只有两个点,实际上在这两个点之间来来回回):

3.4 过大

继续加大步长,比如令  ,反而会越过谷底,不断上升:

3.5 总结

总结下,不同的步长  ,随着迭代次数的增加,会导致被优化函数   的值有不同的变化:

寻找合适的步长是个手艺活,在工程中可以将上图画出来,根据图像来手动调整:

  • 往上走(红线),自然是   过大,需要调低

  • 一开始下降特别急,然后就几乎没有变化(棕线),可能是   较大,需要调低

  • 几乎是线性变化(蓝线),可能是   过小,需要调高

4 三维的例子
原理都介绍完了,下面再通过一个三维的例子来加强对梯度下降法的理解。假设函数为:

其图像及等高线如下(等高线中心的蓝点表示最小值):

下面用梯度下降法来寻找最小值。

4.1 前进一步

设初始点为  ,此时梯度为: 令步长  ,那么下一个点为:  可以看到向最小值方向前进了一步:

4.2 迭代

同样的方法找到下一个点:  此时又向最小值靠近了:

如此迭代20次后,差不多找到了最小值:
(0)

相关推荐

  • Lasso回归算法:坐标轴下降法与最小角回归法小结

    公众号后台回复"python",立刻领取100本机器学习必备Python电子书 前面的文章对线性回归做了一个小结,文章在这:线性回归原理小结.里面对线程回归的正则化也做了一个初步的 ...

  • 女朋友问我什么是最优化原理(上)——系列连载(9)

    后台回复"python",立刻领取100本机器学习必备的Python电子书! 泰勒定理‍ 满足一定条件的函数可以通过泰勒展开式对其做近似: 泰勒展开式 泰勒展开式原理如下,主要采用 ...

  • (3条消息) 梯度算法求步长的公式

    本文主要对计算机视觉图像配准中搜索空间算法引发讨论,即当图片配准后,讨论下一步怎么办,往哪个方向,多大步长的进行搜索.是一种优化算法 本文将介绍设计到的基本的数学知识.一阶优化算法.针对多阶方程的梯度 ...

  • DL一(ML基础知识)

    基础知识ML 在进行深度学习前,根据学习网站的建议,首先学习机器学习的基础课程,学习资料主要是Andrew讲的ShortVideo,网址:http://openclassroom.stanford.e ...

  • 梯度下降法的三种形式BGD、SGD以及MBGD

    阅读目录 1. 批量梯度下降法BGD 2. 随机梯度下降法SGD 3. 小批量梯度下降法MBGD 4. 总结 在应用机器学习算法时,我们通常采用梯度下降法来对采用的算法进行训练.其实,常用的梯度下降法 ...

  • 梯度下降法 数学家澄清了现代应用中最重要的算法的本质

    majer @ 2021.08.24 , 16:39 现代应用研究的许多方面都依赖于一种叫做梯度下降的关键算法.这是一个通常用于寻找特定数学函数的最大或最小值的程序--过程被称为优化函数.它可以用来计 ...

  • 借助可视化,最直观理解梯度,以及偏导数、方向导数和法向量等

    写在前面 梯度是微积分中的基本概念,也是机器学习解优化问题经常使用的数学工具(梯度下降算法),虽然常说常听常见,但其细节.物理意义以及几何解释还是值得深挖一下,这些不清楚,梯度就成了"熟悉的 ...

  • ML之UliR:利用非线性回归,梯度下降法(迭代十万次)求出学习参数θ,进而求得Cost函数最优值

    ML之UliR:利用非线性回归,梯度下降法(迭代十万次)求出学习参数θ,进而求得Cost函数最优值 输出结果 更新-- 代码设计 import numpy as np import random de ...

  • 用Excel体验梯度下降法

    公众号后台回复"图书",了解更多号主新书内容 作者:气象学渣 来源:气象学渣 梯度下降法是目前神经网络训练过程中最为核心的算法之一,配合链式求导可实现误差在神经网络中的反向传播,更 ...

  • 梯度下降法的关键点

    梯度下降法的关键点 梯度下降法沿着梯度的反方向进行搜索,利用了函数的一阶导数信息.梯度下降法的迭代公式为: 根据函数的一阶泰勒展开,在负梯度方向,函数值是下降的.只要学习率设置的足够小,并且没有到达梯 ...

  • 如何理解梯度下降算法

    介绍 在这篇文章中,我们将了解什么是真正的梯度下降法,为什么它成为非常流行的机器学习算法,为什么AI和ML中的大多数算法都遵循这种技术. 柯西在1847年提出了梯度下降算法,是第一个提出梯度下降的人, ...

  • 理解强化学习知识之策略梯度

    策略梯度简述 为什么要引入策略梯度,它的优缺点? 策略目标函数 怎么优化目标函数---得到策略梯度 关于策略的设计 基于蒙特卡洛的策略梯度--REINFORCE算法 降低方差---为策略梯度添加常数基 ...

  • 理解凸性:为什么梯度下降适用于线性回归

    在机器学习中我们总会遇到线性回归问题,但是为什么我们可以用梯度下降算法来求解线性回归成本函数呢?凸性理论可以让我们更容易理解这个问题. 凸性 首先,通过凸集和凸函数定义凸度.凸集的定义如下: 在二维中 ...