梯度是机器学习领域中一个非常常用且重要的一个数学概念,但是一直不是特别理解深层含义,于是查阅资料,对梯度进行一个总结说明。
我们在高数中都学过梯度的定义:
设函数在平面区域D内具有一阶连续偏导数,则对每一点
都可以定出一个向量
称为
在P点处的梯度,记作
。
从定义中我们可以得到以下信息:1、梯度是矢量 2、梯度的模与函数在点
处的偏导数
有关。
不难想象,函数在几何空间中实际上对应的是三维空间(或者是三维平面或者是三维曲面)。那么我们就以三维曲面为例,对梯度进行说明总结。
首先我们看一幅图片
假如我们在山顶,需要走到山谷的湖泊中,我们应该怎么走最快。这里,其实就涉及到了梯度的概念。
在高数课本中还有这么一个定理是这么说的:梯度的方向与取得最大方向导数的方向一致,模为方向导数的最大值。
那么,我们先来看看方向导数是什么样的存在。
什么是方向导数,方向导数就是函数(当然不一定是二元函数)在某点沿特定方向的变化率
xoy平面上的紫色箭头表示的是特定方向,这个方向是任意的,那么函数在这个方向上的图像如下图所示
函数在点A处特定方向上存在切线,此时这条红色的切线斜率就是点A处的方向导数
曲面上的A点投影到xoy面上的点有无数个方向,同样的A点也有无数个方向。
每个方向上都存在方向导数,而方向导数最大的方向就是梯度的方向,方向导数的最大值就是梯度的值。
那么问题来了,方向导数有无数个,那么它一定会存在最大值吗,而且这个最大值是唯一的。我们回到梯度的定义,定义中说到函数在D内有一阶连续偏导数,高数中的知识:偏导连续必可微我们知道,函数
是可微的,那么函数
各个方向的切线是共面的,即这些方向上的切向组成了在点A处的切平面。
此处我们可以想象一下在一块平滑直立的玻璃上流下一滴水,这滴水的轨迹是唯一的,而且这滴水流下的方向就是玻璃上各点处的梯度的方向。所以最大方向导数是唯一的,梯度也是唯一的。
最后用吴恩达老师在Coursera上的一张图片
回到在山顶走到山谷湖泊的图片,沿着梯度的反方向(因为梯度表达的是增加最快的方向)就是最快到达山谷的方向。
梯度是机器学习深度学习中求解参数中非常关键的一个概念
这是TensorFlow中的一张流图,可以看到,它就是根据梯度来训练模型的。此图来源于TensorFlow中文社区。
补充:
实际上对于一元函数也是存在梯度的,只不过梯度的方向只有沿x轴的正方向和反方向之分,其大小某点处的导数值。
参考文献:
1、如何直观形象的理解方向导数与梯度以及它们之间的关系? https://www.zhihu.com/question/36301367
2、吴恩达coursera https://www.coursera.org/lecture/machine-learning/welcome-to-machine-learning-zcAuT