首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

机器学习笔记之优化算法(十一)凸函数铺垫:梯度与方向导数引言

  • 23-09-05 19:03
  • 3770
  • 13692
blog.csdn.net

机器学习笔记之优化算法——凸函数铺垫:梯度与方向导数

  • 引言
    • 回顾:偏导数
    • 方向余弦
    • 方向导数
      • 方向导数的几何意义
      • 方向导数的定义
    • 方向导数与偏导数之间的关联关系
      • 证明过程
    • 梯度 ( Gradient ) ( ext{Gradient}) (Gradient)

引言

本节作为介绍凸函数的铺垫,简单介绍方向导数与梯度。

回顾:偏导数

以二元函数 f ( x , y ) f(x,y) f(x,y)为例,其关于变量的偏导数表示:三维空间中,曲面上某一点沿着 x x x轴方向或 y y y轴方向变化的速率。也就是说:
在梯度下降法——铺垫中解释过,下图中描述斜率的红色切线不是方向;真正描述方向的是红色箭头。

  • ∂ f ( x , y ) ∂ x = f x ( x , y ) ∂f(x,y)∂x=fx(x,y) ∂x∂f(x,y)​=fx​(x,y)​表示函数 f ( x , y ) f(x,y) f(x,y)沿着 x x x轴方向的斜率;
    下图中 P mathcal P P点沿着 x x x轴方向的红色直线所描述的斜率;
  • 同理, ∂ f ( x , y ) ∂ y = f y ( x , y ) ∂f(x,y)∂y=fy(x,y) ∂y∂f(x,y)​=fy​(x,y)​表示函数 f ( x , y ) f(x,y) f(x,y)沿着 y y y轴方向的斜率。
    下图中 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 {fx(x0,y0)=limΔx⇒0f(x0+Δx,y0)−f(x0,y0)Δxfy(x0,y0)=limΔy⇒0f(x0,y+Δy)−f(x0,y0)Δy ⎩ ⎨ ⎧​​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 ) ( ext{Directional Derivative}) (Directional Derivative)的概念。
例如下图中 P mathcal P P点,其导数方向可以有很多。例如黄色箭头描述的方向。
其他方向-方向导数示例

方向余弦

关于某向量 l ⃗ vec l l 在坐标系中表示如下:
向量l在坐标系中的表示
在坐标系中记作 l ⃗ = ( a , b ) vec l =(a,b) l =(a,b);如果要将 l ⃗ vec l l 单位化,得到单位向量 l ⃗ o vec l^{o} l o,则执行:
l ⃗ o = 1 a 2 + b 2 ( a , b ) = ( a a 2 + b 2 , b a 2 + b 2 ) →lo=1√a2+b2(a,b)=(a√a2+b2,b√a2+b2) l o​=a2+b2 ​1​(a,b)=(a2+b2 ​a​,a2+b2 ​b​)​
观察上图,可以将 a a 2 + b 2 = cos ⁡ α , b a 2 + b 2 = sin ⁡ α = cos ⁡ β a√a2+b2=cosα,b√a2+b2=sinα=cosβ a2+b2 ​a​=cosα,a2+b2 ​b​=sinα=cosβ​,最终 l ⃗ o vec l^{o} l o可表示为: ( cos ⁡ α , cos ⁡ β ) (cos alpha,cos eta) (cosα,cosβ)
也就是说,单位向量可以表示成这种方向余弦的形式。

方向导数

方向导数的几何意义

依然以上述图形示例:可能存在各种各样(黄色箭头)的方向,这里以黄色直线箭头为例,该方向的在函数图像中的投影会呈现一条轨迹(黄色实线):
实际上这条轨迹就是过 P mathcal P P点,在该方向朝向的、与坐标平面 X O Y mathcal Xmathcal Omathcal 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在某方向上的切线斜率
由此可见:在 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 Xmathcal Omathcal 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⇒0lim​tΔZ​
已知 P mathcal P P点坐标是 ( x 0 , y 0 ) (x_0,y_0) (x0​,y0​),并且已知距离 t t t以及对应的 α , β alpha,eta α,β夹角,因而可以得到 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 eta) 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 ) ∂Z∂→l|(x0,y0) ∂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 eta) - f(x_0,y_0)}{t} ∂l ∂Z​∣(x0​,y0​)​=t⇒0lim​tf(x0​+t⋅cosα,y0​+t⋅cosβ)−f(x0​,y0​)​

基于方向导数重新观察偏导数,可以发现:方向导数就是偏导数的一种特例。以 ∂ f ( x , y ) ∂ x ∂f(x,y)∂x ∂x∂f(x,y)​​为例。它等价于: l ⃗ vec l l 的方向是 x x x轴的正方向:
偏导数与方向导数
此时: α = 0 , β = π 2 ⇒ cos ⁡ α = 1 , cos ⁡ β = 0 α=0,β=π2⇒cosα=1,cosβ=0 α=0,β=2π​⇒cosα=1,cosβ=0​从而有:
此时的方向导数退化成了偏导数, ∂ f ( x , y ) ∂ y ∂f(x,y)∂y ∂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 ) ∂Z∂→l=limt⇒0f(x0+t,y0)−f(x0,y0)t=fx(x0,y0)=∂f(x,y)∂x|(x0,y0) ∂l ∂Z​=t⇒0lim​tf(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 ) ∂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 ⁡ β ∂l ∂Z​∣(x0​,y0​)​=fx​(x0​,y0​)⋅cosα+fy​(x0​,y0​)⋅cosβ​

证明过程

  • 在函数 f ( ⋅ ) f(cdot) f(⋅)可微的条件下,在 ( x 0 , y 0 ) (x_0,y_0) (x0​,y0​)点关于 Z mathcal Z Z的变化量 Δ Z Delta mathcal Z ΔZ可表示为:
    其中 O [ ( Δ x ) 2 + ( Δ y ) 2 ] mathcal Oleft[sqrt{({Delta x})^2 + (Delta y)^2} ight] O[(Δx)2+(Δy)2 ​]表示关于 ( Δ x ) 2 + ( Δ y ) 2 sqrt{({Delta x})^2 + (Delta y)^2} (Δx)2+(Δy)2 ​的高阶无穷小。
    Δ Z = f x ( x 0 , y 0 ) ⋅ Δ x + f y ( x 0 , y 0 ) ⋅ Δ y + O [ ( Δ x ) 2 + ( Δ y ) 2 ] Delta mathcal Z = f_x(x_0,y_0) cdot Delta x + f_y(x_0,y_0) cdot Delta y + mathcal Oleft[sqrt{({Delta x})^2 + (Delta y)^2} ight] ΔZ=fx​(x0​,y0​)⋅Δx+fy​(x0​,y0​)⋅Δy+O[(Δx)2+(Δy)2 ​]
  • 由于全微分在任意方向上均成立。
    全微分方程
    因而有:
    { Δ x = t ⋅ cos ⁡ α Δ y = t ⋅ cos ⁡ β ( Δ x ) 2 + ( Δ y ) 2 = t 2 ⋅ ( cos ⁡ 2 α + cos ⁡ 2 β ) = t 2 α + β = π 2 ⎩ ⎨ ⎧​​Δx=t⋅cosαΔy=t⋅cosβ(Δx)2+(Δy)2=t2⋅(cos2α+cos2β)=t2α+β=2π​​​
  • 观察等式左侧:
    Δ Z Delta mathcal Z ΔZ表示 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 = Δ Z = f ( x 0 + t ⋅ cos ⁡ α , y 0 + t ⋅ cos ⁡ β ) − f ( x 0 , y 0 ) mathcal I_{ ext{left}} = Delta mathcal Z = f(x_0 + t cdot cos alpha,y_0 + t cdot cos eta) - f(x_0,y_0) Ileft​=ΔZ=f(x0​+t⋅cosα,y0​+t⋅cosβ)−f(x0​,y0​)
    观察等式右侧:
    将上述公式代入。
    I right = f x ( x 0 , y 0 ) ⋅ t ⋅ cos ⁡ α + f y ( x 0 , y 0 ) ⋅ t ⋅ cos ⁡ β + O ( t ) mathcal I_{ ext{right}} = f_x(x_0,y_0) cdot t cdot cos alpha + f_y(x_0,y_0) cdot t cdot cos eta + mathcal O(t) Iright​=fx​(x0​,y0​)⋅t⋅cosα+fy​(x0​,y0​)⋅t⋅cosβ+O(t)
  • 将 I left , I right mathcal I_{ ext{left}},mathcal I_{ ext{right}} Ileft​,Iright​同时除以 t t t,等式两端依然相等:
    并令 I left mathcal I_{ ext{left}} Ileft​中 t ⇒ 0 t Rightarrow 0 t⇒0,因为 I Right mathcal I_{ ext{Right}} IRight​中不含 t ( O ( t ) t = 0 ) t left( ight) t(tO(t)​=0​),因此不产生影响。
    { I right t = f x ( x 0 , y 0 ) ⋅ cos ⁡ α ⋅ t + f y ( x 0 , y 0 ) ⋅ cos ⁡ β ⋅ t + O ( t ) t = f x ( x 0 , y 0 ) ⋅ cos ⁡ α + f y ( x 0 , y 0 ) ⋅ cos ⁡ β lim ⁡ t ⇒ 0 I l e f t t = lim ⁡ t ⇒ 0 f ( x 0 + t ⋅ cos ⁡ α , y 0 + t ⋅ cos ⁡ β ) − f ( x 0 , y 0 ) t = ∂ Z ∂ l ⃗ ∣ ( x 0 , y 0 ) ⎩ ⎨ ⎧​tIright​​t⇒0lim​tIleft​​​=tfx​(x0​,y0​)⋅cosα⋅t+fy​(x0​,y0​)⋅cosβ⋅t+O(t)​=fx​(x0​,y0​)⋅cosα+fy​(x0​,y0​)⋅cosβ=t⇒0lim​tf(x0​+t⋅cosα,y0​+t⋅cosβ)−f(x0​,y0​)​=∂l ∂Z​∣(x0​,y0​)​​​
  • 最终有:
    ∂ Z ∂ l ⃗ ∣ ( x 0 , y 0 ) = f x ( x 0 , y 0 ) ⋅ cos ⁡ α + f y ( x 0 , y 0 ) ⋅ cos ⁡ β 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 eta ∂l ∂Z​∣(x0​,y0​)​=fx​(x0​,y0​)⋅cosα+fy​(x0​,y0​)⋅cosβ
    证毕。

梯度 ( Gradient ) ( ext{Gradient}) (Gradient)

关于梯度,它的返回结果是一个向量形式。关于函数 f ( x , y ) f(x,y) f(x,y),其梯度向量通常记作: grad  f ( x , y ) ext{grad } f(x,y) grad f(x,y)或者 ∇ f ( x , y ) abla f(x,y) ∇f(x,y)。
其具体表示为:
∇ f ( x , y ) = [ f x ( x , y ) , f y ( x , y ) ] abla f(x,y) = left[f_x(x,y),f_y(x,y) ight] ∇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 ⃗ ∂l ∂Z​​,它可以表示成如下形式:

  • 两向量之间的内积形式。
  • l ⃗ o vec l^{o} l o是 l ⃗ vec l l 的单位向量结果。
    ∂ Z ∂ l ⃗ = f x ( x , y ) ⋅ cos ⁡ α + f y ( x , y ) ⋅ cos ⁡ β = [ f x ( x , y ) , f y ( x , y ) ] ( cos ⁡ α cos ⁡ β ) = ∇ f ( x , y ) ⋅ l ⃗ o ∂l ∂Z​​=fx​(x,y)⋅cosα+fy​(x,y)⋅cosβ=[fx​(x,y),fy​(x,y)](cosαcosβ​)=∇f(x,y)⋅l o​

首先,由于 x , y x,y x,y轴描述的方向是确定的,因而在某点 ( x , y ) (x,y) (x,y)处的梯度向量也同样是固定的;但 l ⃗ o vec l^{o} l o却不固定。由于是内积结果,我们可以将其展开:
∂ Z ∂ l ⃗ = ∇ f ( x , y ) ⋅ l ⃗ o = ∣ ∣ ∇ f ( x , y ) ∣ ∣ ⋅ ∣ ∣ l ⃗ o ∣ ∣ ⋅ cos ⁡ θ ∂l ∂Z​​=∇f(x,y)⋅l o=∣∣∇f(x,y)∣∣⋅∣∣l o∣∣⋅cosθ​
观察:由于 ∣ ∣ ∇ f ( x , y ) ∣ ∣ = [ f x ( x , y ) ] 2 + [ f y ( x , y ) ] 2 || abla 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 ∣∣l o∣∣=1。因此:影响 ∂ Z ∂ l ⃗ ∂l ∂Z​​大小的因素只有向量 ∇ f ( x , y ) abla f(x,y) ∇f(x,y)与向量 l ⃗ o vec l^{o} l o之间的夹角 cos ⁡ θ cos heta cosθ。

由于 cos ⁡ θ ∈ [ − 1 , 1 ] cos heta in [-1,1] cosθ∈[−1,1],因此当 θ = 0 heta = 0 θ=0时,也就是 l ⃗ o vec l^{o} l o与 ∇ f ( x , y ) abla f(x,y) ∇f(x,y)方向重合时,方向导数取得最大值,最大值即:
∂ Z ∂ l ⃗ = ∣ ∣ ∇ f ( x , y ) ∣ ∣ frac{partial mathcal Z}{partial vec l} = || abla f(x,y)|| ∂l ∂Z​=∣∣∇f(x,y)∣∣
也就是说:当前点 ( x , y ) (x,y) (x,y),选择梯度方向时,它的斜率(变化量)最大。

相关参考:
【多元微分专题】第六期:方向导数和梯度的直观理解

注:本文转载自blog.csdn.net的静静的喝酒的文章"https://blog.csdn.net/qq_34758157/article/details/132145309"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top