原作者:WangBo_NLPR 原文:https://blog.csdn.net/walilk/article/details/50978864
原作者:Eric_LH 原文:https://blog.csdn.net/eric_lh/article/details/78994461
前言
机器学习中的大部分问题都是优化问题,而绝大部分优化问题都可以使用梯度下降法处理,那么搞懂什么是梯度、什么是梯度下降法就非常重要!这是基础中的基础,也是必须掌握的概念!
提到梯度,就必须从导数(derivative)、偏导数(partial derivative)和方向导数(directional derivative)讲起,弄清楚这些概念,才能够正确理解为什么在优化问题中使用梯度下降法来优化目标函数,并熟练掌握梯度下降法(Gradient Descent)。
文章小节安排如下:
1.导数
2.导数和偏导数
3.导数和方向导数
4.导数和梯度
5.梯度下降法
导数
一张图读懂导数和微分:
导数的定义如下:
导数的定义 反映的是函数在某一处沿轴正方向的变化率。再强调一遍,是函数在轴上某一点处沿着轴正方向的变化率/变化趋势。直观来看,也就是在轴上某一点处,如果,说明的函数值在点沿轴正方向是趋于增加 ;如果,说明的函数值在点沿轴正方向是趋于减少的。
这里补充上图中的等符号的意义及关系如下:
:的变化量;
:的变化量趋于0时,则记做微元;
:,是函数的增量;
:,是切线的增量;
当时,和都是无穷小,是的主部,即
导数和偏导数
偏导数的定义如下:
可以看到,导数与偏导数本质是一致的,都是当自变量的变化趋于0时,函数值的变化量与自变量变化量比值的极限。直观来说,偏导数也是函数在某一点上沿坐标轴正方向的变化率。
区别在于:
导数,指的是一元函数中,函数在某一处沿轴正方向的变化率;
偏导数,指的是多元函数中,函数在某一点处沿着某一坐标轴正方向的变化率。
导数与方向导数
方向导数的定义如下:
在前面导数和偏导数的定义中,均是沿坐标轴正方向讨论函数的变化率。那么当我们讨论函数沿任意方向的变化率时,也就引出了方向导数的定义,即:某一点在某一趋近方向上的导数值。
通俗的解释是:
我们不仅要知道函数在坐标轴正方向上的变化率(即偏导数),而且还要设法求得函数在其他特定方向上的变化率。而方向导数就是函数在其他特定方向上的变化率。
导数和梯度
梯度的定义如下:
梯度的提出职位回答一个问题:
函数在变量空间的某一点处,沿着哪一方向有最大的变化率?
梯度定义如下:
函数在某一点的梯度是这样一个向量,它的方向与取得最大方向导数的方向一致,而它的模为方向导数的最大值。
这里需要注意三点:
1)梯度是一个向量,即有方向有大小;
2)梯度的方向是最大方向导数的方向;
3)梯度的模是最大方向导数的值。
导数与向量
提问:导数与偏导数与方向导数是向量么?
向量的定义是有方向(direction)和大小(magnitude)的量。
从前面的定义可以这样看出,偏导数和方向导数表达的是函数在某一点沿某一个方向的变化率,也是具有方向和大小的。因此从这个角度理解,我们可以把偏导数和方向导数看作是一个向量,向量的方向就是变化率的方向,向量的模就是变化率的大小。
那么沿着这样一种思路,就可以如下理解梯度:
梯度即函数在某一点最大的方向导数,函数沿梯度方向函数有最大的变化率。
梯度下降法
既然在在变量空间的某一点处,函数沿梯度方向局域最大的变化率,那么在优化目标函数的时候,自然是沿着负梯度方向去减少函数值,以此来达到我们的优化目标。
如何沿着负梯度方向减少函数值呢?既然梯度是偏导数的集合,如下:
同时梯度和偏导数都是向量,那么参考向量运算法则,我们在每个变量轴上减少对应变量值即可,梯度下降法可以描述如下:
以上就是提嘟嘟下降法的由来,大部分的机器学习任务,都可以利用来进行优化。
总结
概念 | 物理意义 |
---|---|
导数 | 函数在该点的瞬时变化率 |
偏导数 | 函数沿坐标轴方向的变化率 |
方向导数 | 函数在某点沿某一特定方向的变化率 |
梯度 | 函数在某一点沿梯度方向变化率最大 |
网友评论