问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

导数,偏导数,方向导数,梯度的理解---微积分数学基础

创作时间:
作者:
@小白创作中心

导数,偏导数,方向导数,梯度的理解---微积分数学基础

引用
CSDN
1.
https://blog.csdn.net/CSDN_SUSAN/article/details/90166474

本文详细介绍了导数、偏导数、方向导数和梯度的基本概念及其相互关系。从数学基础出发,逐步深入解释了这些概念的本质和应用,特别是与机器学习中的梯度下降法的联系。内容结构清晰,从定义到本质,再到实际应用,层层递进,适合对微积分和机器学习感兴趣的读者。

0 概述

我们在ML week 1课程中了解到了单变量线性回归,这里使用了梯度下降法来不断更新θ 0 , θ 1 \theta_{0,} \theta_{1}θ0, θ1 以求得Cost Function的最优解,从而确定h θ ( x i ) h_{\theta}\left(x_{i}\right)hθ (xi )。

那这里就产生了一个疑问:为什么使用梯度下降法求解?为什么使用梯度下降法,就能够得到最优解(全局或者局部)?

下边我们将从导数,偏导数,方向导数最后引出梯度,进而讲解为什么梯度下降法能够做到求解最优解。

1. 导数的概念

1.1 导数的定义

增量定义:若f ( x ) f(x)f(x)在点x 0 x_{0}x0 的某个邻域内有定义,则当自变量x xx在x 0 x_{0}x0 处取得增量Δ x \Delta xΔx(点x 0 + Δ x x_{0}+\Delta xx0 +Δx仍然在邻域内),相应的y yy取得增量Δ y = f ( x 0 + Δ x ) − f ( x 0 ) \Delta y=f\left(x_{0}+\Delta x\right)-f\left(x_{0}\right)Δy=f(x0 +Δx)−f(x0 ),如果Δ y \Delta yΔy与Δ x \Delta xΔx在Δ x → 0 \Delta x \rightarrow 0Δx→0时极限存在,则称y = f ( x ) y=f(x)y=f(x)在x 0 x_{0}x0 处可导,这个极限就是y = f ( x ) y=f(x)y=f(x)在x 0 x_{0}x0 的导数,记为f ′ ( x 0 ) f^{\prime}\left(x_{0}\right)f′(x0 )。

f ′ ( x 0 ) = lim ⁡ Δ x → 0 Δ y Δ x = lim ⁡ Δ x → 0 f ( x 0 + Δ x ) − f ( x 0 ) Δ x f^{\prime}\left(x_{0}\right)=\lim {\Delta x \rightarrow 0} \frac{\Delta y}{\Delta x}=\lim {\Delta x \rightarrow 0} \frac{f\left(x{0}+\Delta x\right)-f\left(x{0}\right)}{\Delta x}f′(x0 )=limΔx→0 ΔxΔy =limΔx→0 Δxf(x0 +Δx)−f(x0 )

极限定义:在定义域内,当变量x xx趋近于x 0 x_{0}x0 时,f ( x ) − f ( x 0 ) x − x 0 \frac{f(x)-f\left(x_{0}\right)}{x-x_{0}}x−x0 f(x)−f(x0 ) 有极限,则有

f ′ ( x 0 ) = lim ⁡ x → x 0 f ( x ) − f ( x 0 ) x − x 0 f^{\prime}\left(x_{0}\right)=\lim {x \rightarrow x{0}} \frac{f(x)-f\left(x_{0}\right)}{x-x_{0}}f′(x0 )=limx→x0 x−x0 f(x)−f(x0 )

1.2 导数的本质

对于一元函数而言,导数的几何意义是f ( x ) f(x)f(x)在点x 0 x_{0}x0 切线的斜率。物理角度上来看,路程对时间的导数叫速度,速度对时间的导数叫加速度。

我们可以理解为这是一种线性近似,当一个函数为曲线时,我们对某一点的斜率,就是通过导数这种线性近似求得的。

但是对于多元函数而言,由于其几何图形为一个曲面,这时候导数作为切线斜率的解释似乎不成立了,因此引入了偏导数的概念。

2. 偏导数的概念

2.1 偏导数定义

对于多元函数,求导数其实也是要求一个切线的斜率,但是由于曲面上的点的切线有无数条,那么取那条切线的斜率呢,这时候就引入了偏导数的概念。

偏导数其实就是选取比较特殊的切线,求其斜率而得,以二元函数z = f ( x , y ) z=f(x, y)z=f(x,y)为例,分为对x xx的偏导数和对y yy的偏导数。

如图所示:

对x xx的偏导数:过点( x 0 , y 0 , z 0 ) \left(x_{0}, y_{0},z_{0}\right)(x0 ,y0 ,z0 )垂直于y yy轴的曲线,在该点切线的斜率。

此时,该曲线可表示为

z = f ( x , y ) z=f(x, y)z=f(x,y)

x = t x=tx=t

y = a + 0 × t y=a+0 \times ty=a+0×t

因此,我们求对x xx的偏导数,认为y yy是常量是完全正确的。

用导数定义来表示x xx的偏导数,

f x ( x 0 , y 0 ) = lim ⁡ Δ x → 0 f ( x 0 + Δ x , y 0 ) − f ( x 0 , y 0 ) Δ x f_{x}\left(x_{0}, y_{0}\right)=\lim {\Delta x \rightarrow 0} \frac{f\left(x{0}+\Delta x, y_{0}\right)-f\left(x_{0}, y_{0}\right)}{\Delta x}fx (x0 ,y0 )=limΔx→0 Δxf(x0 +Δx,y0 )−f(x0 ,y0 )

对y yy的偏导数:过点( x 0 , y 0 , z 0 ) \left(x_{0}, y_{0},z_{0}\right)(x0 ,y0 ,z0 )垂直于x xx轴的曲线,在该点切线的斜率。

同上理解。

f y ( x 0 , y 0 ) = lim ⁡ Δ y → 0 f ( x 0 , y 0 + Δ y ) − f ( x 0 , y 0 ) Δ y f_{y}\left(x_{0}, y_{0}\right)=\lim {\Delta y \rightarrow 0} \frac{f\left(x{0}, y_{0}+\Delta y\right)-f\left(x_{0}, y_{0}\right)}{\Delta y}fy (x0 ,y0 )=limΔy→0 Δyf(x0 ,y0 +Δy)−f(x0 ,y0 )

2.2 偏导数的本质

偏导数几何意义也是切线斜率, 但是由于曲面上一点的切线有无数条(实际上是个切面),偏导数选取的是垂直于各坐标轴的几条特殊切线的斜率。

偏导数物理意义表示函数沿着某个坐标轴方向上的变化率。

但是如果我们想求任意一条曲线切线斜率怎么办呢?这时候就引入了方向导数,可以求出曲面上某一点沿着任意方向的切线斜率。

3. 方向导数

以z = f ( x , y ) z=f(x, y)z=f(x,y)为例,过曲面上任意一点( x 0 , y 0 , z 0 ) \left(x_{0}, y_{0},z_{0}\right)(x0 ,y0 ,z0 )的所有切线,组成一个切面。偏导数仅仅选择了垂直于x xx和y yy轴方向的两条切线,计算斜率,方向导数则要求任意切向的斜率。

如下图所示

3.1 方向导数定义

x xx和y yy平面上的一个方向向量,决定了一条过点( x 0 , y 0 , z 0 ) \left(x_{0}, y_{0},z_{0}\right)(x0 ,y0 ,z0 )的唯一曲线,此时曲线函数可表示为:

z = f ( x , y ) z=f(x, y)z=f(x,y)

x = x 0 + t cos ⁡ α t ≥ 0 x=x_{0}+t \cos \alpha \quad t \geq 0x=x0 +tcosαt≥0

y = y 0 + t cos ⁡ β t ≥ 0 y=y_{0}+t \cos \beta \quad t \geq 0y=y0 +tcosβt≥0

u = i ⃗ cos ⁡ α + j ⃗ cos ⁡ β = i ⃗ cos ⁡ α + j ⃗ sin ⁡ α u=\vec{i} \cos \alpha+\vec{j} \cos \beta=\vec{i} \cos \alpha+\vec{j} \sin \alphau=icosα+j cosβ=icosα+j sinα

其中α \alphaα和β \betaβ分别为该方向向量与x xx轴和y yy轴的夹角。

则该曲线的记为方向u的导数,定义:

D u f ( x , y ) D_{u} f(x, y)Du f(x,y)=lim ⁡ t → 0 f ( x 0 + t cos ⁡ α , y 0 + t sin ⁡ α ) − f ( x 0 , y 0 ) t \lim {t \rightarrow 0} \frac{f\left(x{0}+t \cos \alpha, y_{0}+t \sin \alpha\right)-f\left(x_{0}, y_{0}\right)}{t}limt→0 tf(x0 +tcosα,y0 +tsinα)−f(x0 ,y0 )

通过偏微分简化计算可得(这一步的数学证明,请自行搜索),

D u f ( x , y ) = f x ( x , y ) cos ⁡ α + f y ( x , y ) sin ⁡ α D_{u} f(x, y)=f_{x}(x, y) \cos \alpha+f_{y}(x, y) \sin \alphaDu f(x,y)=fx (x,y)cosα+fy (x,y)sinα

3.2 方向导数的最大值

设偏导向量:

A ⃗ = ( f x ( x , y ) , f y ( x , y ) ) \vec{A}=\left(f_{x}(x, y), f_{y}(x, y)\right)A=(fx (x,y),fy (x,y))

方向向量:

u ⃗ = ( cos ⁡ α , sin ⁡ α ) \vec{u}=(\cos \alpha, \sin \alpha)u=(cosα,sinα)

D u f ( x , y ) = A ⃗ ∗ u ⃗ D_{u} f(x, y)=\vec{A} * \vec{u}Du f(x,y)=A∗u=∣ A ⃗ ∣ ∗ ∣ u ⃗ ∣ ∗ cos ⁡ ( θ ) |\vec{A}| *|\vec{u}| * \cos (\theta)∣A∣∗∣u∣∗cos(θ)

其中θ \thetaθ是偏导向量和方向向量之间的夹角。显而易见,当θ \thetaθ=0时,D u f ( x , y ) D_{u} f(x, y)Du f(x,y)取得最大值。

换句话说,当方向u ⃗ \vec{u}u和偏导向量同向时,方向导数取得正最大值,反向时,取得负最大值。

记住这个结论,接下来我们看梯度定义。

4. 梯度

4.1 梯度定义

对于函数z = f ( x , y ) z=f(x, y)z=f(x,y),在平面区域D内具有一阶连续偏导数,则对于每一点( x 0 , y 0 ) ∈ D \left(x_{0}, y_{0}\right) \in D(x0 ,y0 )∈D都可以定义出一个向量:

f x ( x 0 , y 0 ) i ⃗ + f y ( x 0 , y 0 ) j ⃗ f_{x}\left(x_{0}, y_{0}\right) \vec{i}+f_{y}\left(x_{0}, y_{0}\right) \vec{j}fx (x0 ,y0 )i+fy (x0 ,y0 )j

这个向量称为函数f ( x , y ) f(x, y)f(x,y)在( x 0 , y 0 ) \left(x_{0}, y_{0}\right)(x0 ,y0 )的梯度,记作grad ⁡ f ( x 0 , y 0 ) \operatorname{grad} f\left(x_{0}, y_{0}\right)gradf(x0 ,y0 )或者∇ f ( x 0 , y 0 ) \nabla f\left(x_{0}, y_{0}\right)∇f(x0 ,y0 )。其中∇ = ∂ ∂ x i ⃗ + ∂ ∂ y j ⃗ \nabla=\frac{\partial}{\partial x} \vec{i}+\frac{\partial}{\partial y} \vec{j}∇=∂x∂ i+∂y∂ j 称为向量微分算子或者Nabla算子。

4.2 梯度生而最快

到这里,发现梯度就定义为偏导向量的方向。而方向导数一节已经证明,沿着偏导向量方向的方向导数D u f ( x , y ) D_{u} f(x, y)Du f(x,y)能够取得最大值。

因此在不断的迭代计算中,每一次沿着负梯度方向进行更新参数,就能够达到最低点。

5. 总结

通过导数,偏导数,方向导数的逐步讲解,最后给出梯度的定义,发现梯度天生定义就是变化最快的方向。

这是未来使用梯度下降法求解优化问题的数学基础。

参考:

https://www.zhihu.com/question/36301367 马同学和忆臻 的回答

https://github.com/halfrost/Halfrost-Field

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号