十分钟学习梯度

EndlessLethe原创文章,转载请注明: 转载自小楼吹彻玉笙寒

本文链接地址: 十分钟学习梯度


前言

梯度是机器学习中的重要概念,其和拉格朗日乘数法、梯度下降法之间的联系密不可分。所以本文给出了梯度的定义,并证明负梯度的方向是函数下降最快的方向(梯度的方向是函数上升最快的方向)。

至于为什么梯度下降算法能够work,是因为对于凸函数,随着函数下降的方向,一定能到达最小值。取梯度是为了沿最快下降方向,降低迭代次数。后来发现对于非凸函数,梯度下降算法表现不错,所以对于非凸函数也有使用。更具体的内容,见下一篇文章《梯度下降算法》。

本文重点结论

本文有大量证明,部分读者可能会感到有些冗余,故将重点结论罗列于下:
1. 梯度\(
\nabla f\left( {{\theta_1},{\theta_2},\cdots,{\theta_n}} \right) = \left( {\frac{{\partial f}}{{\partial {\theta_1}}},\frac{{\partial f}}{{\partial {\theta_2}}},\cdots,\frac{{\partial f}}{{\partial {\theta_n}}}} \right)
\)
2. 梯度的方向是函数上升最快的方向
3. 梯度是 || 在点P的切平面中 || 使得函数上升最快的那个方向向量 ||在\(\mathbb{R}^{n-1}\)空间的投影
4. 梯度的模长描述了上升的快慢
5. 梯度是该点对应等量面的法线

梯度的定义

对于函数\(z=f(x,y)\),其在某一点\(P(x_0,y_0)\)的梯度定义为:
\[\nabla f(x,y) = (\frac{{\partial f}}{{\partial x}},\frac{{\partial f}}{{\partial y}})\]

对于多元函数,其梯度同理可通过每个参数的一阶偏导计算。
\[
\nabla f\left( {{\theta_1},{\theta_2},\cdots,{\theta_n}} \right) = \left( {\frac{{\partial f}}{{\partial {\theta_1}}},\frac{{\partial f}}{{\partial {\theta_2}}},\cdots,\frac{{\partial f}}{{\partial {\theta_n}}}} \right)
\]

为了更好地理解梯度,我们先引入方向导数的概念。

方向导数

在微积分课程中,我们知道函数在某一点的导数代表了函数在该点的变化率。对于单变量函数,自变量只有一个,当x趋近于x0时只能在直线上变动,移动的方向只有左右两方。

然而,对于多变量函数,自变量有多个,因此,函数的变化不仅与移动的距离有关,而且与移动的方向有关。所以我们参照单变量函数导数的定义,引入方向的概念来定义多变量函数,称其为方向导数,即某一点在某一方向上的导数值。

gradient
Note:这些方向向量的集合是该点的切平面。

所以对于一个给定的单位方向向量u,我们来考虑如何求出沿u方向的二元方向导数。
设\(f(x,y)\)为一个二元函数,点\(P(x_0,y_0)\)是函数上一点,而点\(Q(x_0+∆x,y_0+∆y)\)是沿u方向上一点,t是P、Q两点之间的距离\(= \sqrt {\Delta {x^2} + \Delta {y^2}}\)

如果下列的极限值存在
\[\frac{{\partial f}}{{\partial u}} = \mathop {\lim }\limits_{t \to 0} \frac{{\left. {f({x_0} + \Delta x,{y_0} + \Delta y) – f({x_0},{y_0}} \right)}}{t}\]
则称这个极限值是f沿着u方向的方向导数\(D_u f\)。
这也表明了方向导数的意义:函数在点P处沿u方向的平均变化率.

梯度和方向导数

记\(f(x,y)=z\),根据全微分的定义,有
\[\Delta z = f\left( {x + \Delta x,y + \Delta y} \right) – f\left( {x,y} \right) = \frac{{\partial z}}{{\partial x}}\Delta x + \frac{{\partial z}}{{\partial y}}\Delta y + o\left( \rho \right)\]

等式两端同除得到,
\[\frac{{\Delta z}}{\rho } = \frac{{\partial z}}{{\partial x}}\frac{{\Delta x}}{\rho } + \frac{{\partial z}}{{\partial y}}\frac{{\Delta y}}{\rho } + \frac{{o(\rho )}}{\rho }\]

因为\(\Delta x = \rho \cos\alpha ,\Delta y = \rho \cos\beta\)
所以\[\frac{{\Delta z}}{\rho } = \frac{{\partial z}}{{\partial x}}\cos \alpha + \frac{{\partial z}}{{\partial y}}\cos \beta + \frac{{o(\rho )}}{\rho }\]

令ρ\(\rho \to 0\)得
\[\frac{{\partial z}}{{\partial u}} = \mathop {\lim }\limits_{\rho \to 0} \frac{{\Delta z}}{\rho } = \frac{{\partial z}}{{\partial x}}\cos\alpha + \frac{{\partial z}}{{\partial y}}\cos\beta \]

所以方向导数可以进一步表示为:
\[{D_u}f\left( {x,y} \right) = \left( {\frac{{\partial f}}{{\partial x}},\frac{{\partial f}}{{\partial y}}} \right) \cdot \left( {\cos\alpha ,\cos\beta } \right) = \nabla f \cdot u = |\nabla f|\cos\theta \]
故只有当方向余弦\(\cos \alpha = \cos \beta=1\)时方向导数取最大值,对应的方向与梯度的方向重合。

所以有结论:梯度的方向是函数上升最快的方向。

梯度的模

从定义的角度

我们已经知道梯度的方向是函数上升最快的方向,那上升速度是多少呢?根据定义取方向余弦\(\cos \alpha = \cos \beta=1\),显然是\(\left| {\nabla f} \right| = \sqrt {{{(\frac{{\partial f}}{{\partial x}})}^2} + {{(\frac{{\partial f}}{{\partial y}})}^2}}\) 。

从几何的角度

在\(\mathbb{R}^{2}\)空间中,对于\(y=f(x)\)的梯度我们只用了一个变量\(\Delta x\)来表示。同理,在\(\mathbb{R}^{3}\)空间中,对于\(z=f(x,y)\)的梯度我们只用了两个变量\(\Delta x, \Delta y\)来表示。我们可以这样理解,对于\(z=f(x,y)\)在点P的梯度实际上是被投影到\(xOy\)平面的,所以只需要2个变量就可以描述。

但如果我们想要在\(\mathbb{R}^{n}\)描述梯度,就需要将梯度补充成一个长度等于空间维数的向量。这时候z轴向量不就表示变化大小吗?
我们设\[\nabla f\prime = \left( {\frac{{\partial f}}{{\partial x}},\frac{{\partial f}}{{\partial y}},k} \right)\]

因为梯度在函数切平面上,故\( \overrightarrow {\nabla f\prime} \cdot \overrightarrow u = 0\)
即\[\left( {\frac{{\partial f}}{{\partial x}},\frac{{\partial f}}{{\partial y}},k} \right) \cdot \left( {\frac{{\partial f}}{{\partial x}},\frac{{\partial f}}{{\partial y}}, – 1} \right) = 0\]

这样我们就可以将梯度在\(\mathbb{R}^{n}\)空间作为一个向量使用了\[\nabla f\prime = \left( {\frac{{\partial f}}{{\partial x}},\frac{{\partial f}}{{\partial y}},{{\left( {\frac{{\partial f}}{{\partial x}}} \right)}^2} + {{\left( {\frac{{\partial f}}{{\partial y}}} \right)}^2}} \right)\]
经过单位化之后\[\nabla f\prime = \left( {\cos \alpha ,\cos \beta ,\sqrt {{{\left( {\frac{{\partial f}}{{\partial x}}} \right)}^2} + {{\left( {\frac{{\partial f}}{{\partial y}}} \right)}^2}} } \right)\]
故\(k = \left| {\nabla f} \right| = \sqrt {{{(\frac{{\partial f}}{{\partial x}})}^2} + {{(\frac{{\partial f}}{{\partial y}})}^2}}\)

等高线和梯度

这里先给出结论:多元函数上任意一点,其梯度是该点对应等量面的法线。
gradient 2

假设我们的函数为\(z=f(x,y)\),其被平面c(c为常数)所截得的方程为:
\[\left\{ {\begin{array}{*{20}{c}}
{\left. {u = f(x,y,z} \right)} \\
{u = c}
\end{array}} \right.\]

即\(f(x,y,z)=c\)
则这个曲面的法向量为\(\left( {\frac{{\partial f}}{{\partial x}},\frac{{\partial f}}{{\partial y}},\frac{{\partial f}}{{\partial z}}} \right)\)。

Note:对于多元函数的方程\(u=f(x,y,z)=c\)在几何上表示一个曲面,我们称为等量面。

正好这个法向量的形式符合梯度的定义。故多元函数上任意一点,其梯度是该点对应等量面的法线。

参考文献

I. 《高等数学(下册)》 四川大学编
II. 微积分之倚天宝剑
III. 如何直观形象的理解方向导数与梯度以及它们之间的关系?
IV. 第六节 多元函数微分学的几何应用
V. 第七节 方向导数与梯度
VI. 偏导数、全微分、方向导数三者之间的关系
VII. 4全微分与方向导数
VIII. 全微分几何意义

发表评论

电子邮件地址不会被公开。 必填项已用*标注