讲的很好的梯度下降,终于弄明白了

原文链接https://zhuanlan.zhihu.com/p/38525412

这是我见过的最好的讲梯度下降的文章,感谢大佬
特意转发存储
侵权删

写在前面

上周末和一位学金融的师兄吃饭回来的路上,偶然间聊到了深度学习中的梯度下降方法,于是便有了下述的对话。

师兄:为什么要沿着梯度的反方向更新参数?
我:因为我们的目标是使损失函数值最小,而梯度的方向是函数值增加最快的方向,因此要沿着梯度的反方向更新参数。
师兄:为什么梯度的方向是函数值增加最快的方向?
我:。。。

说来惭愧,本人已入门机器学习近三年了,竟连这样一个基础的问题都没有回答上来,真的需要好好面壁一段时间了。当然,面壁归面壁,问题还是需要解决的。,然后在其基础上结合高数课本以及其余的一些博文、问答,整理出自己的一些见解,并以此记录之。余在此向网络上无私分享知识的前辈表以深深的感谢!
PS:下文所述内容仅为个人见解,供大家参考。若有错误或不当之处,欢迎批评指正!

一元函数的导数

仅拥有一个自变量的函数称为一元函数,简记为 [公式] 。在实际生活中,人们想要了解函数 [公式] 在点 [公式] 处的变化率。例如,一个非匀速运动的质点在某一时刻的瞬时速度;或者一条曲线上某一点的斜率。此时涉及到一个问题:如何求出函数在某一个点的变化率呢?一般情况下,人们可以很容易求出函数在自变量变化某一段的变化率。例如,当自变量在 [公式] 处产生一个增量 [公式] 时,函数 [公式] 也会产生一个增量 [公式] ,此时 [公式] 即为函数在自变量从 [公式] 变化到 [公式] 时的变化率。那么,如何求出函数 [公式] 在点 [公式] 处的变化率呢?

为了解决上述问题,需要借助极限的概念(极限非此博文讨论的内容,若不太了解可自行查阅相关资料)。若了解极限的概念,便可十分容易理解下面的叙述:当 [公式] 趋于 [公式] 时,若 [公式] 的极限存在,则此极限值即为函数 [公式] 在点 [公式] 处的变化率,也将其称之为函数 [公式] 在点 [公式] 处的导数。具体过程如下图所示(图片来自于博文函数的导数概念),数学上可描述如下:

[公式]

求导变化过程图


至此,一元函数导数的基本概念已介绍完毕。由于一元函数仅仅具有一个自变量 [公式] ,因此这类函数仅且只能反应函数沿 [公式] 轴方向的变化率。进一步讲,当点 [公式] 确定后,函数在该点的变化率有且仅有一个,数值上为过该点的切线的斜率。当其大于 [公式] 时,表明函数在该点有上升趋势;当其小于 [公式] 时,表明函数在该点有下降趋势。

多元函数的偏导数

拥有多个自变量( [公式] )的函数称为多元函数。这里以二元函数 [公式] 为例讲解偏导数,其余情况以此类推(下文与此一致)。

由于二元函数具有两个自变量 [公式] ,因此函数图像为一个曲面。与一元函数类似,如何计算二元函数对曲面上一点 [公式] 的变化率呢?此处需要注意的是,因为过曲面上一点可以作出无数条切线,因此函数在该点也具有无数个变化率。为了简单起见,可以先考虑函数沿着两个坐标轴( [公式] 轴, [公式] 轴)方向的变化率。

  • 当自变量 [公式] 固定在 [公式] ,函数在点 [公式] 处的变化率称为函数在点 [公式] 处对 [公式] 的偏导数,记作 [公式]
  • 当自变量 [公式] 固定在 [公式] ,函数在点 [公式] 处的变化率称为函数在点 [公式] 处对 [公式] 的偏导数,记作 [公式]
二元函数图示例

多元函数的方向导数

当了解了多元函数的偏导数后,细心的读者可能会发现偏导数仅仅描述了函数在点 [公式] 处沿两个坐标轴( [公式] 轴, [公式] 轴)方向的变化率,然而实际上函数在该点具有无数个变化率(在几何上表现为函数在该点具有无数个切线的斜率)。因此,如何求出函数在点 [公式] 处沿某一方向的变化率呢?万变不离其宗,此时仍然按照变化率的定义去求解,即只需求出函数的增量与自变量沿着某一方向增量比值的极限即可。


二元函数在某点沿着某一方向的变化率


假设某一方向的单位向量为 [公式][公式] 为此向量与x轴正向夹角,显然根据 [公式] 的不同,此向量可以表示任意方向的单位向量。当点 [公式] 沿着该方向产生一个增量 [公式] 到达点 [公式] 时(终点的坐标可以根据向量运算法则求出),函数 [公式] 也会产生一个增量 [公式] 。此时函数沿此方向的变化率为:

[公式]

向量运算法则

上述公式的证明可参阅:方向导数公式的证明。至此,多元函数的方向导数概念已讲解完毕。

多元函数的梯度

在了解了多元函数的方向导数之后,一个很自然的问题是:既然函数在点 [公式] 处沿着任意的方向都有一个变化率,那么沿着哪个方向( [公式] )函数的变化率最大呢?

二元函数在某点具有无数个变化率

根据上节的介绍,函数 [公式] 沿着任意方向( [公式] 取任意值)的变化率为: [公式] ,因此接下来只需求得使其达到最大值时的 [公式] 便可解决上述问题。由于上式可以看成两个向量的内积,令 [公式] ,则:

[公式]

其中, [公式][公式][公式] 的夹角。根据上式,可得出如下结论:

  • [公式] 时,即 [公式][公式] 方向相同时,函数变化率最大,且在点 [公式] 处呈上升趋势;
  • [公式] 时,即 [公式][公式] 方向相反时,函数变化率最大,且在点 [公式] 处呈下降趋势;

最后,当点 [公式] 确定后,向量 [公式] 也随即确定。由于向量 [公式] 的方向为函数值增加最快的方向,而此方向经常被用于实际生活中,因此为便于表述,人们为其取了一个名字—梯度。换而言之,多元函数在某一点的梯度是一个非常特殊的向量,其由多元函数对每个变量的偏导数组成(这即是为什么求梯度的时候需要对各个变量求偏导的原因),其方向为函数在该点增加最快的方向,大小为函数在该点的最大变化率。

总结

写到这里,即对为什么梯度是函数值增加最快的方向有了一个全面的了解,同时也明白了为什么在机器学习中,使用梯度下降方法去寻找损失函数的最小值。基于此事,也使得自己懂得,凡事既要知其然更要知其所以然的重要性。







方向导数公式的证明

前言

应之前一位网友的要求,遂决定将方向导数公式的证明写一下。在查阅一些相关资料后,却发现很多都是根据全微分的定义对其进行证明,个人感觉并不是很直观。于是思考如何根据极限的定义对其进行证明,却发现虽然方向导数公式的形式很像极限的定义,但却与之不同,无法直接根据极限的定义对其进行证明。正当自己想要放弃此种解决方案时,却在百度知道搜到了一个巧妙的证明,其核心思想是利用拉格朗日中值定理对其进行证明,看完以后恍然大悟,遂动手将其过程整理记录一下,希望可以帮助到同样在此处迷茫的小伙伴~

PS: 此文接上篇:梯度的方向为什么是函数值增加最快的方向?

方向导数的公式:

若函数 [公式] 在点 [公式] 可微分,则此函数在该点沿任一方向 [公式] 的方向导数存在,且有

[公式]

其中, [公式] 为方向 [公式] 的单位向量。

证明:

[公式]

[公式]

[公式]

(此处应用了拉格朗日中值定理: [公式]

[公式]

[公式]

证毕。

参考贴

[1] 微积分:方向导数是如何推导的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值