[Machine Learning] 方向导数&梯度(Directional Derivative & Gradient)

方向导数

首先,我们先来讨论一下函数 y = f ( x 1 , x 2 ) y = f(x_1,x_2) 在一点P沿某一方向的变化率问题。

假设函数 y = f ( x 1 , x 2 ) y = f(x_1,x_2) 在点 P ( x 1 , x 2 ) P(x_1,x_2) 的某一邻域 U ( P ) U(P) 内有定义,自点P引射线 l l 。设 x x 轴正向到射线 l l 的转角为 φ \varphi ,并设 P ( x 1 + Δ x 1 , x 2 + Δ x 2 ) P'(x_1+\Delta x_1,x_2+\Delta x_2) l l 上的另一点且 P U ( P ) P'\in U(P) (如图)。

那么我们可以定义:

函数的增量 f ( x 1 + Δ x 1 , x 2 + Δ x 2 ) f ( x 1 , x 2 ) f(x_1+\Delta x_1,x_2+\Delta x_2)-f(x_1,x_2) P P PP' 两点间的距离 ρ = ( Δ x 1 ) 2 + ( Δ x 2 ) 2 \rho = \sqrt{(\Delta x_1)^2+(\Delta x_2)^2} 的比值, P P' 沿着 l l 趋于 P P ,如果这个比值的极限存在,则称这个极限为函数在点 P P 沿方向 l l 方向导数。记为:
f l = lim ρ 0 f ( x 1 + Δ x 1 , x 2 + Δ x 2 ) f ( x 1 , x 2 ) ρ \frac{\partial{f}}{\partial{l}} = \lim_{\rho\rightarrow 0} \frac{f(x_1+\Delta x_1,x_2+\Delta x_2)-f(x_1,x_2)}{\rho}

根据定义,函数 f ( x 1 , x 2 ) f(x_1,x_2) 在点 P P 沿着 x 1 x_1 轴正向 e 1 = 1 , 0 \vec{e}_1 = {1,0} x 2 x_2 轴正向 e 2 = 0 , 1 \vec{e}_2 = {0,1} 的方向导数分别为 f x 1 f_{x_1} f x 2 f_{x_2} ;沿着 x x 轴负向、 y y 轴负向的方向导数是 f x 1 -f_{x_1} f x 2 -f_{x_2}

如果函数 y = f ( x 1 , x 2 ) y = f(x_1,x_2) 在点 P ( x 1 , x 2 ) P(x_1,x_2) 在点 P ( x 1 , x 2 ) P(x_1,x_2) 可微分的,那么函数在该点沿任意方向 L L 的的方向导数都存在,且有
f l = f x 1 c o s φ + f x 2 s i n φ \frac{\partial{f}}{\partial{l}} = \frac{\partial{f}}{\partial{x_1}}cos\varphi + \frac{\partial{f}}{\partial{x_2}}sin\varphi
其中 φ \varphi x x 轴到方向 L L 转角

那么推广到三元函数可得方向导数定义:

对于三元函数 y = f ( x 1 , x 2 , x 3 ) y = f(x_1,x_2,x_3) ,它在空间一点 P ( x 1 , x 2 , x 3 ) P(x_1,x_2,x_3) 沿着方向 L L 方向导数,可定义为:
f l = lim ρ 0 f ( x 1 + Δ x 1 , x 2 + Δ x 2 , x 3 + Δ x 3 ) f ( x 1 , x 2 , x 3 ) ρ \frac{\partial{f}}{\partial{l}} = \lim_{\rho\rightarrow 0}\frac{f(x_1+\Delta x_1,x_2 + \Delta x_2, x_3+\Delta x_3) - f(x_1,x_2,x_3)}{\rho}
其中 ρ = ( Δ x 1 ) 2 + ( Δ x 2 ) 2 + ( Δ x 3 ) 2 \rho = \sqrt{(\Delta x_1)^2 + (\Delta x_2)^2 + (\Delta x_3)^2}

同理:

设方向 L L 方向角 α \alpha β \beta γ \gamma .
当函数在此点可微时,那么函数在该点沿任意方向 L L 的方向导数都存在,且有
f l = f x 1 c o s α + f x 2 c o s β + f x 3 c o s γ \frac{\partial{f}}{\partial{l}} = \frac{\partial{f}}{\partial{x_1}}cos\alpha + \frac{\partial{f}}{\partial{x_2}}cos\beta + \frac{\partial{f}}{\partial{x_3}}cos\gamma

注意:方向导数是一个,是一个函数沿指定方向的变化率

扫描二维码关注公众号,回复: 9127226 查看本文章

二元函数举例说明

假设有二元函数 y = f ( x 1 , x 2 ) y=f(x_1,x2) 如上图所示,横坐标代表 x 1 x_1 ,纵坐标代表 x 2 x_2 ,平面中的颜色代表不同的 y y 值。在Loss Function(损失函数)中可认为 x 1 x_1 x 2 x_2 分别代表两种不同的参数,而 y y 值代表Loss(损失)值。

现在我们在函数 y = f ( x 1 , x 2 ) y=f(x_1,x2) 中随机取一点(图中黄点表示) P ( x 1 , x 2 ) P(x_1,x_2) ,很显然,P点不止一个方向,而是360°都有方向,并且每个方向都会有方向导数(即函数变化率)。

通俗地说,可以把这个图当作一个山脉地形图,图中的黄点代表山上有一个人,则方向导数就代表他走的方向的山的坡度大小。

梯度

我们现在已经知道,如果一个函数在某一点 P P 处可微,那么就可以确定这个函数在点 P P 的任一方向的方向导数。那么,函数在点 P P 沿哪一方向增加的速度最快呢?因此,就有了梯度这个概念。

设函数 y = f ( x 1 , x 2 ) y = f(x_1,x_2) 在平面D内具有一阶连续偏导数,则对于每一点 P ( x 1 , x 2 ) D P(x_1,x_2)\in D ,都可定出一个向量 f x 1 i + f x 2 j \frac{\partial{f}}{\partial{x_1}}\vec{i} + \frac{\partial{f}}{\partial{x_2}}\vec{j} ,这向量称为函数 y = f ( x 1 , x 2 ) y = f(x_1,x_2) 在点 P ( x 1 , x 2 ) P(x_1,x_2) 梯度,记为:
g r a d f ( x 1 , x 2 ) = f x 1 i + f x 2 j \vec{grad}f(x_1,x_2) = \frac{\partial{f}}{\partial{x_1}}\vec{i} + \frac{\partial{f}}{\partial{x_2}}\vec{j}

注意:梯度是一个向量

那为什么说函数在该点处沿着梯度的方向变化最快呢?现在我们就来证明一下:

假设 e = c o s φ i + s i n φ j \vec{e} = cos\varphi\vec{i} + sin\varphi\vec{j} 是方向 l \vec{l} 上的单位向量,由方向导数公式可知:

f l = f x 1 c o s φ + f x 2 s i n φ                                 = ( f x 1 , f x 2 ) ( c o s φ , s i n φ )   = g r a d f ( x 1 , x 2 ) e                                    = g r a d f ( x 1 , x 2 ) c o s ( g r a d f ( x 1 , x 2 ) , e ) \frac{\partial{f}}{\partial{l}} = \frac{\partial{f}}{\partial{x_1}}cos\varphi + \frac{\partial{f}}{\partial{x_2}}sin\varphi \\\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ = (\frac{\partial{f}}{\partial{x_1}},\frac{\partial{f}}{\partial{x_2}})\cdot(cos\varphi,sin\varphi) \\ \ \\= \vec{grad}f(x_1,x_2)\cdot\vec{e} \\ \ \\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ = |\vec{grad}f(x_1,x_2)|cos(\vec{grad}f(x_1,x_2),\vec{e})

c o s ( g r a d f ( x 1 , x 2 ) , e ) = 1 cos(\vec{grad}f(x_1,x_2),\vec{e}) = 1 时,方向导数 f l \frac{\partial{f}}{\partial{l}} 有最大值 g r a d f ( x 1 , x 2 ) |\vec{grad}f(x_1,x_2)| 。此时,取得最大方向导数的方向就是梯度的方向。

因此,函数在某点的梯度是这样一个向量:它的方向与取得最大方向导数(即函数在该点变化速率最大)的方向一致,而它的模为方向导数的最大值,梯度的模为:

g r a d f ( x , y ) = ( f x 1 ) 2 + ( f x 2 ) 2 |\vec{grad}f(x,y)| = \sqrt{(\frac{\partial{f}}{\partial{x_1}})^2 + (\frac{\partial{f}}{\partial{x_2}})^2}

当然,梯度的概念也可以推广到三元函数(甚至更高维度)

三元函数 y = f ( x 1 , x 2 , x 3 ) y = f(x_1,x_2,x_3) 在空间区域G内具有一阶连续偏导数,则对于每一点 P ( x 1 , x 2 , x 3 ) G P(x_1,x_2,x_3)\in G ,都可以定义一个向量(梯度):

g r a d f ( x 1 , x 2 , x 3 ) = f x 1 i + f x 2 j + f x 3 k \vec{grad}f(x_1,x_2,x_3) = \frac{\partial{f}}{\partial{x_1}}\vec{i} + \frac{\partial{f}}{\partial{x_2}}\vec{j} + \frac{\partial{f}}{\partial{x_3}}\vec{k}

类似于二元函数,此梯度也是一个向量,其方向与取得最大方向导数的方向一致,其模为方向导数的最大值。

二元函数举例说明

同样的图,假设有二元函数 y = f ( x 1 , x 2 ) y=f(x_1,x_2) 如上图所示,横坐标代表 x 1 x_1 ,纵坐标代表 x 2 x_2 ,平面中的颜色代表不同的 y y 值。在Loss Function(损失函数)中可认为 x 1 x_1 x 2 x_2 分别代表两种不同的参数,而 y y 值代表Loss(损失)值。

现在我们在函数 y = f ( x 1 , x 2 ) y=f(x_1,x_2) 中随机取一点(图中黄点表示) P ( x 1 , x 2 ) P(x_1,x_2) ,很显然,P点不止一个方向,而是360°都有方向,并且每个方向都会有方向导数(即函数变化率),而梯度就指向方向导数最大的方向(等高线的法向量)。

通俗地说,可以把这个图当作一个喜马拉雅山地形图,图中的黄点代表有一个攀登者,他成功登顶并准备下山,方向导数就代表他所在地的坡度大小,现在他在海拔4500米的地方,如果他要以最快的速度下山,那么他就要往等高线的法向量(白线所指方向)也就是坡度最大的方向(即梯度方向)移动。

文章就到这里,还请大家帮忙勘误!

发布了5 篇原创文章 · 获赞 3 · 访问量 2616

猜你喜欢

转载自blog.csdn.net/Oh_MyBug/article/details/104298853