本节作为介绍凸函数的铺垫,简单介绍方向导数与梯度。
以二元函数 f ( x , y ) f(x,y) f(x,y)为例,其关于变量的偏导数表示:三维空间中,曲面上某一点沿着 x x x轴方向或 y y y轴方向变化的速率。也就是说:
在
梯度下降法——铺垫中解释过,下图中描述斜率的红色切线
不是方向;真正描述方向的是红色箭头。
下图中
P \mathcal P P点
沿着 x x x轴方向的红色直线所描述的斜率
;下图中
P \mathcal P P点
沿着 y y y轴方向的红色直线所描述的斜率
。 f ( x , y ) f(x,y) f(x,y)在点 P ( x 0 , y 0 ) \mathcal P(x_0,y_0) P(x0,y0)关于 x , y x,y x,y的偏导数分别表示如下:
第一个公式即:
y = y 0 y=y_0 y=y0不变,观察变量
x x x的斜率;
x x x同理。
{ f x ( x 0 , y 0 ) = lim Δ x ⇒ 0 f ( x 0 + Δ x , y 0 ) − f ( x 0 , y 0 ) Δ x f y ( x 0 , y 0 ) = lim Δ y ⇒ 0 f ( x 0 , y + Δ y ) − f ( x 0 , y 0 ) Δ y \begin{cases} \begin{aligned} & f_x(x_0,y_0) = \mathop{\lim}\limits_{\Delta x \Rightarrow 0} \frac{f(x_0 + \Delta x,y_0) - f(x_0,y_0)}{\Delta x} \\ & f_y(x_0,y_0) = \mathop{\lim}\limits_{\Delta y \Rightarrow 0} \frac{f(x_0,y+\Delta y) - f(x_0,y_0)}{\Delta y} \end{aligned} \end{cases} ⎩ ⎨ ⎧fx(x0,y0)=Δx⇒0limΔxf(x0+Δx,y0)−f(x0,y0)fy(x0,y0)=Δy⇒0limΔyf(x0,y+Δy)−f(x0,y0)
观察上图中的 P \mathcal P P点,它仅仅在 x , y x,y x,y两个方向(红色箭头)上有导数吗 ? ? ?并不是,在其他方向同样可以存在导数。由此,引出方向导数 ( Directional Derivative ) (\text{Directional Derivative}) (Directional Derivative)的概念。
例如下图中
P \mathcal P P点,其导数方向可以有很多。例如
黄色箭头描述的方向。
关于某向量 l ⃗ \vec l l在坐标系中表示如下:
在坐标系中记作 l ⃗ = ( a , b ) \vec l =(a,b) l=(a,b);如果要将 l ⃗ \vec l l单位化,得到单位向量 l ⃗ o \vec l^{o} lo,则执行:
l ⃗ o = 1 a 2 + b 2 ( a , b ) = ( a a 2 + b 2 , b a 2 + b 2 ) \begin{aligned} \vec l^{o} & = \frac{1}{\sqrt{a^2 + b^2}} (a,b) \\ & = \left(\frac{a}{\sqrt{a^2 + b^2}},\frac{b}{\sqrt{a^2 + b^2}}\right) \end{aligned} lo=a2+b21(a,b)=(a2+b2a,a2+b2b)
观察上图,可以将 a a 2 + b 2 = cos α , b a 2 + b 2 = sin α = cos β \begin{aligned}\frac{a}{\sqrt{a^2 + b^2}} = \cos \alpha,\frac{b}{\sqrt{a^2 + b^2}} = \sin \alpha = \cos \beta\end{aligned} a2+b2a=cosα,a2+b2b=sinα=cosβ,最终 l ⃗ o \vec l^{o} lo可表示为: ( cos α , cos β ) (\cos \alpha,\cos \beta) (cosα,cosβ)
也就是说,单位向量可以表示成这种
方向余弦的形式。
依然以上述图形示例:可能存在各种各样(黄色箭头)的方向,这里以黄色直线箭头为例,该方向的在函数图像中的投影会呈现一条轨迹(黄色实线):
实际上这条轨迹就是
过 P \mathcal P P点,在该方向朝向的、与坐标平面 X O Y \mathcal X\mathcal O\mathcal Y XOY垂直的平面把 f ( x , y ) f(x,y) f(x,y)截断产生的图像
去掉其他多余的箭头,过 P ( x 0 , y 0 ) \mathcal P(x_0,y_0) P(x0,y0)对应的函数结果位置做一条切线,而切线的斜率即函数在 P \mathcal P P点处的斜率(黑色直线):
其中黄色菱形表示
截断平面中间由实线与虚线组成的类似梯形的区域表示截面,只不过虚线部分的
轨迹并不是当前方向对应的轨迹,不是我们我们关注的对象。
由此可见:在 P \mathcal P P点的 36 0 o 360^o 360o方向上,每一个方向都存在一个截面,随着方向的变化,对应的函数结果 f ( x 0 , y 0 ) f(x_0,y_0) f(x0,y0)在截面上的位置得到不同的切线(斜率)结果。
准确来说是
截线而不是截面,因为函数
f ( ⋅ ) f(\cdot) f(⋅)是
空心的
。
上述图像描述 X O Y \mathcal X\mathcal O\mathcal Y XOY平面上, P ( x 0 , y 0 ) \mathcal P(x_0,y_0) P(x0,y0)点沿着 l ⃗ \vec l l方向前进了一个极小的长度 t t t并到达 A \mathcal A A点,对应 P \mathcal P P在函数上的映射结果 z 0 = f ( x 0 , y 0 ) z_0= f(x_0,y_0) z0=f(x0,y0)也会沿着对应的轨迹移动一个距离,并达到新的位置 z 0 ′ z_0' z0′;假设 Δ Z = ∣ z 0 − z 0 ′ ∣ \Delta \mathcal Z = |z_0 - z_0'| ΔZ=∣z0−z0′∣,对应的方向导数可表示为:
lim t ⇒ 0 Δ Z t \mathop{\lim}\limits_{t \Rightarrow 0} \frac{\Delta \mathcal Z}{t} t⇒0limtΔZ
已知 P \mathcal P P点坐标是 ( x 0 , y 0 ) (x_0,y_0) (x0,y0),并且已知距离 t t t以及对应的 α , β \alpha,\beta α,β夹角,因而可以得到 A \mathcal A A的坐标: A ( x 0 + t ⋅ cos α , y 0 + t ⋅ cos β ) \mathcal A (x_0 + t \cdot \cos \alpha,y_0 + t \cdot \cos \beta) A(x0+t⋅cosα,y0+t⋅cosβ)。最终可以将 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)处关于向量 l ⃗ \vec l l的方向导数 ∂ Z ∂ l ⃗ ∣ ( x 0 , y 0 ) \begin{aligned}\frac{\partial \mathcal Z}{\partial {\vec l}}|_{(x_0,y_0)}\end{aligned} ∂l∂Z∣(x0,y0)表达为如下形式:
∂ Z ∂ l ⃗ ∣ ( x 0 , y 0 ) = lim t ⇒ 0 f ( x 0 + t ⋅ cos α , y 0 + t ⋅ cos β ) − f ( x 0 , y 0 ) t \frac{\partial \mathcal Z}{\partial {\vec l}}|_{(x_0,y_0)} = \mathop{\lim}\limits_{t \Rightarrow 0} \frac{f(x_0 + t \cdot \cos \alpha,y_0 + t \cdot \cos \beta) - f(x_0,y_0)}{t} ∂l∂Z∣(x0,y0)=t⇒0limtf(x0+t⋅cosα,y0+t⋅cosβ)−f(x0,y0)
基于方向导数重新观察偏导数,可以发现:方向导数就是偏导数的一种特例。以 ∂ f ( x , y ) ∂ x \begin{aligned}\frac{\partial f(x,y)}{\partial x}\end{aligned} ∂x∂f(x,y)为例。它等价于: l ⃗ \vec l l的方向是 x x x轴的正方向:
此时: α = 0 , β = π 2 ⇒ cos α = 1 , cos β = 0 \begin{aligned}\alpha = 0,\beta = \frac{\pi}{2} \Rightarrow \cos \alpha = 1,\cos \beta = 0\end{aligned} α=0,β=2π⇒cosα=1,cosβ=0从而有:
此时的方向导数退化成了偏导数,
∂ f ( x , y ) ∂ y \begin{aligned}\frac{\partial f(x,y)}{\partial y}\end{aligned} ∂y∂f(x,y)同理,这里不再赘述。
∂ Z ∂ l ⃗ = lim t ⇒ 0 f ( x 0 + t , y 0 ) − f ( x 0 , y 0 ) t = f x ( x 0 , y 0 ) = ∂ f ( x , y ) ∂ x ∣ ( x 0 , y 0 ) \begin{aligned} \frac{\partial \mathcal Z}{\partial \vec l} = \mathop{\lim}\limits_{t \Rightarrow 0} \frac{f(x_0 + t,y_0) - f(x_0,y_0)}{t} = f_x(x_0,y_0) = \frac{\partial f(x,y)}{\partial x}|_{(x_0,y_0)} \end{aligned} ∂l∂Z=t⇒0limtf(x0+t,y0)−f(x0,y0)=fx(x0,y0)=∂x∂f(x,y)∣(x0,y0)
在函数 f ( ⋅ ) f(\cdot) f(⋅)在其定义域内可微的条件下,该函数在 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)处关于方向向量 l ⃗ \vec l l的方向导数 ∂ Z ∂ l ⃗ ∣ ( x 0 , y 0 ) \begin{aligned}\frac{\partial \mathcal Z}{\partial {\vec l}}|_{(x_0,y_0)}\end{aligned} ∂l∂Z∣(x0,y0)与该函数在 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)处的偏导数 f x ( x 0 , y 0 ) , f y ( x 0 , y 0 ) f_x(x_0,y_0),f_y(x_0,y_0) fx(x0,y0),fy(x0,y0)之间的关联关系表示如下:
∂ Z ∂ l ⃗ ∣ ( x 0 , y 0 ) = f x ( x 0 , y 0 ) ⋅ cos α + f y ( x 0 , y 0 ) ⋅ cos β \begin{aligned}\frac{\partial \mathcal Z}{\partial {\vec l}}|_{(x_0,y_0)} = f_x(x_0,y_0) \cdot \cos \alpha + f_y(x_0,y_0) \cdot \cos \beta\end{aligned} ∂l∂Z∣(x0,y0)=fx(x0,y0)⋅cosα+fy(x0,y0)⋅cosβ
其中
O [ ( Δ x ) 2 + ( Δ y ) 2 ] \mathcal O\left[\sqrt{({\Delta x})^2 + (\Delta y)^2}\right] O[(Δx)2+(Δy)2]表示关于
( Δ x ) 2 + ( Δ y ) 2 \sqrt{({\Delta x})^2 + (\Delta y)^2} (Δx)2+(Δy)2的高阶无穷小。
表示
P ( x 0 , y 0 ) \mathcal P(x_0,y_0) P(x0,y0)沿着
l ⃗ \vec l l移动
t t t到达
A \mathcal A A点前后函数结果的变化量。
将上述公式代入。
并令
I left \mathcal I_{\text{left}} Ileft中
t ⇒ 0 t \Rightarrow 0 t⇒0,因为
I Right \mathcal I_{\text{Right}} IRight中不含
t ( O ( t ) t = 0 ) t \left(\begin{aligned}\frac{\mathcal O(t)}{t} = 0\end{aligned} \right) t(tO(t)=0),因此不产生影响。
关于梯度,它的返回结果是一个向量形式。关于函数 f ( x , y ) f(x,y) f(x,y),其梯度向量通常记作: grad f ( x , y ) \text{grad } f(x,y) grad f(x,y)或者 ∇ f ( x , y ) \nabla f(x,y) ∇f(x,y)。
其具体表示为:
∇ f ( x , y ) = [ f x ( x , y ) , f y ( x , y ) ] \nabla f(x,y) = \left[f_x(x,y),f_y(x,y)\right] ∇f(x,y)=[fx(x,y),fy(x,y)]
很明显:梯度向量中的元素就是 f ( x , y ) f(x,y) f(x,y)针对不同自变量 x , y x,y x,y的偏导数。因此它的计算并不麻烦,如何理解梯度向量 ? ? ?具体从方向和大小两个角度对梯度向量进行认知。
回顾上面的方向导数 ∂ Z ∂ l ⃗ \begin{aligned}\frac{\partial \mathcal Z}{\partial \vec l}\end{aligned} ∂l∂Z,它可以表示成如下形式:
两向量之间的内积形式。
是
l ⃗ \vec l l的单位向量结果。
首先,由于 x , y x,y x,y轴描述的方向是确定的,因而在某点 ( x , y ) (x,y) (x,y)处的梯度向量也同样是固定的;但 l ⃗ o \vec l^{o} lo却不固定。由于是内积结果,我们可以将其展开:
∂ Z ∂ l ⃗ = ∇ f ( x , y ) ⋅ l ⃗ o = ∣ ∣ ∇ f ( x , y ) ∣ ∣ ⋅ ∣ ∣ l ⃗ o ∣ ∣ ⋅ cos θ \begin{aligned}\frac{\partial \mathcal Z}{\partial \vec l} & = \nabla f(x,y) \cdot \vec l^{o} \\ & = ||\nabla f(x,y)|| \cdot ||\vec l^{o}|| \cdot \cos \theta \end{aligned} ∂l∂Z=∇f(x,y)⋅lo=∣∣∇f(x,y)∣∣⋅∣∣lo∣∣⋅cosθ
观察:由于 ∣ ∣ ∇ f ( x , y ) ∣ ∣ = [ f x ( x , y ) ] 2 + [ f y ( x , y ) ] 2 ||\nabla f(x,y)|| = [f_x(x,y)]^2 + [f_y(x,y)]^2 ∣∣∇f(x,y)∣∣=[fx(x,y)]2+[fy(x,y)]2,因而在函数 f ( ⋅ ) f(\cdot) f(⋅)某一点 ( x , y ) (x,y) (x,y)确定的条件下,其值也是固定的;并且 ∣ ∣ l ⃗ o ∣ ∣ = 1 ||\vec l^{o}|| = 1 ∣∣lo∣∣=1。因此:影响 ∂ Z ∂ l ⃗ \begin{aligned}\frac{\partial \mathcal Z}{\partial \vec l}\end{aligned} ∂l∂Z大小的因素只有向量 ∇ f ( x , y ) \nabla f(x,y) ∇f(x,y)与向量 l ⃗ o \vec l^{o} lo之间的夹角 cos θ \cos \theta cosθ。
由于 cos θ ∈ [ − 1 , 1 ] \cos \theta \in [-1,1] cosθ∈[−1,1],因此当 θ = 0 \theta = 0 θ=0时,也就是 l ⃗ o \vec l^{o} lo与 ∇ f ( x , y ) \nabla f(x,y) ∇f(x,y)方向重合时,方向导数取得最大值,最大值即:
∂ Z ∂ l ⃗ = ∣ ∣ ∇ f ( x , y ) ∣ ∣ \frac{\partial \mathcal Z}{\partial \vec l} = ||\nabla f(x,y)|| ∂l∂Z=∣∣∇f(x,y)∣∣
也就是说:当前点 ( x , y ) (x,y) (x,y),选择梯度方向时,它的斜率(变化量)最大。
相关参考:
【多元微分专题】第六期:方向导数和梯度的直观理解