前面我们回顾了一些线性代数的基本理论,包括最小二乘、范数、矩阵正交化、PCA、SVD等。在正式进入最优化理论的学习之前,我们还需要补充一些向量微积分的知识。也可以看作多元微积分回顾
向量微分
- 在一元微积分中,可微函数f:R→R对x的导函数dxdf:R→R定义为
dxdf(x)=h→0limhf(x+h)−f(x).
而本节我们主要会讨论以下两种函数的微分:
- 多元函数f:Rn→R,比如f(x)=∥x∥p;
- 向量值函数f:Rn→Rm,比如f(x)=Ax。
- 一元微积分中我们计算复合函数的导数使用的是链式法则,即:
dxdh(x)=dgdf(g(x))⋅dxdg(x)
或者其简化形式:
h′(x)=f′(g(x))⋅g′(x).
- 将其推广至多元复合函数:设f:Rn→R和g:R→Rn为可微函数,定义函数h:R→R为:h(x)=f(g(x)),则h可微,且其导数为
dxdh(x)=i=1∑n∂gi∂f(g(x))⋅dxdgi(x).
直观理解就是先列出函数f到x的各条复合路径,对每条路径使用链式法则,再进行相加。
梯度(Gradient)
- 下面我们对多元函数的梯度进行定义:对于可微函数f:Rn→R,其梯度(函数)∇f:Rn→Rn定义为
∇f(x)=∂x1∂f(x)∂x2∂f(x)⋮∂xn∂f(x)
由此可知梯度就是向量微分的转置。
- 梯度具有以下两条性质:
- 梯度方向是函数变化最快的方向,且在此方向上函数变化速率为∥∇f(x)∥2;
简单证明
设单位向量u表示函数f变化的方向,那么f在x上沿u的方向导数可表示为u⊤∇f(x)。【即方向向量与梯度向量的内积】
于是由柯西-施瓦茨不等式,
u⊤∇f(x)≤∥u∥2∥∇f(x)∥2=∥∇f(x)∥2.而取到等号时,u与∇f(x)恰好同向,故u=∥∇f(x)∥2∇f(x),即沿梯度方向函数变化最快。
- 设x∈Rn,f(x)=α,则函数在x处的梯度∇f(x)与过x的α等值切面相垂直。
解释:α等值面的定义为
Lα(f)={x∈Rn∣f(x)=α}
而过x的α等值切面即为包含x的Lα(f)在x处的切超平面。
- 一些常见函数梯度的计算:
- f1(x)=∥x∥22⟹∇f1(x)=2x;
- f2(x)=a⊤x⟹∇f2(x)=a;
- f3(x)=x⊤Ax⟹∇f2(x)=(A+A⊤)x。
雅可比矩阵(Jacobian)
- 下面我们将上述多元函数微分推广到向量值函数f:Rn→Rm上。
- 首先定义向量值函数的雅可比矩阵:f的雅可比矩阵Df:Rn→Rm×n定义为
Df(x)=∇f1(x)⊤⋮∇fm(x)⊤=∂x1∂f1(x)⋮∂x1∂fm(x)⋯⋱⋯∂xn∂f1(x)⋮∂xn∂fm(x).
例:f(x)=Ax时,Df(x)=A。
特别地,当m=1时,得到的雅可比矩阵是1×n行向量,即为上述定义梯度的转置。
- 类似多元函数,向量值函数的雅可比矩阵也有链式法则:设f:Rp→Rm和g:Rn→Rp为可微函数。定义h:Rn→Rm为h(x)=f(g(x))(x∈Rn)。则h可微,且有
Dh(x)=[Df(g(x))][Dg(x)].
其中Df(g(x))表示先计算Df算子,再将其作用于g(x)上。
简单证明
基于偏导数与多元复合函数链式法则的推导如下:
[Dh(x)]k,i=∂xi∂fk(x)=j=1∑p∂gj∂fk(g(x))⋅∂xi∂gj(x)=j=1∑p[Df(g(x))]k,j⋅[Dg(x)]j,i={[Df(g(x))][Dg(x)]}k,i.
- 推论:当m=1时,可以得到梯度的链式法则
∇h(x)=[Dg(x)]⊤∇f(g(x)).
- 使用雅可比矩阵和梯度的链式法则可以求解许多复合函数的求导问题,比如神经网络的反向传播【会在之后详细阐述】。
黑塞矩阵(Hessian)
上面我们已经解决了向量值函数一阶导数的表示方法,下面我们继续考虑二阶导数。
- 对于向量值函数f:Rn→Rm,要表示其所有二阶导数需要m×n×n矩阵,但我们只需要考虑m=1的情形,因为f的每个分量对应的二阶导数都是n×n矩阵。【不失一般性】
- 于是我们定义二阶可微多元函数f:Rn→R的二阶导数矩阵,即黑塞矩阵∇2f(x):Rn→Rn×n为
∇2f(x)=D(∇f)(x)=∂x12∂2f(x)⋮∂x1∂xn∂2f(x)⋯⋱⋯∂xn∂x1∂2f(x)⋮∂xn2∂2f(x).
例:f(x)=x⊤Ax时,∇2f(x)=A+A⊤。
- 对于黑塞矩阵,有以下定理(也称为克莱罗定理):当多元函数f:Rn→R有连续二阶偏导数,那么其对应的黑塞矩阵是对称矩阵。
- 后续我们讨论的绝大多数多元函数(向量值函数)都满足这一定理。
方向导数
- 这里再补充方向导数的定义:令f:Rn→R为可微函数,并固定单位向量u∈Rn(即∥u∥2=1)。则f沿方向u的方向导数函数Df(⋅)[u]:Rn→R的表达式为
Df(x)[u]=h→0limhf(x+h⋅u)−f(x).
而方向导数与梯度有着密切的联系,二者关系式为
Df(x)[u]=u⊤[∇f(x)].
特别地,Df(x)[ei]=∂xi∂f(x)。
泰勒定理
下面我们将标量函数的泰勒定理推广到多元函数与向量值函数。
- 先给出标量函数的泰勒近似公式:当函数f:R→R是k阶可微函数,那么f在点x0∈R上的k阶泰勒近似可表示为
fk(x;x0)=f(x0)+1!1dxdf(x0)⋅(x−x0)+⋯+k!1dxkdkf(x0)⋅(x−x0)k=i=0∑ki!1dxidif(x0)⋅(x−x0)i.
而泰勒定理则给出了k阶泰勒近似的误差估计,即:
f(x)=fk(x;x0)+o(∣x−x0∣k)
其中o(∣x−x0∣k)表示∣x−x0∣k的高阶无穷小量。
- 下面我们给出多元函数的泰勒近似:设f:Rn→R,并固定x0∈Rn。
- 若f连续可微,则其在x0附近的一阶泰勒近似函数f^1(⋅;x0):Rn→R定义为
f^1(x;x0)=f(x0)+[∇f(x0)]⊤(x−x0).
由此可知一阶泰勒近似函数即为过(x0,f(x0))且与梯度向量垂直的切超平面。
- 若f二阶连续可微,则其在x0附近的二阶泰勒近似函数f^2(⋅;x0):Rn→R定义为
f^2(x;x0)=f(x0)+[∇f(x0)]⊤(x−x0)+21(x−x0)⊤[∇2f(x0)](x−x0).
当然我们也可以给出更高阶的泰勒近似,但这就需要定义高阶矩阵(即张量),这超出了本课程设计范围,故作略。【关于张量的使用可参见PyTorch教程】
- 类似地,我们也可以给出多元函数的泰勒定理:
f(x)=f^k(x;x0)+o(∥x−x0∥2k).
当然这里余项换为其他Lp范数也未尝不可,但使用L2范数最方便。
- 另外,有时我们也可以通过泰勒近似得到多元函数的梯度和黑塞矩阵。【先计算f(x+δ)的泰勒近似,再与前两阶项进行匹配】
- 最后我们给出向量值函数的一阶泰勒近似和泰勒定理:设f:Rn→Rm,并固定x0∈Rn。若f连续可微,则其在x0附近的一阶泰勒近似函数f1^:Rn→Rm定义为
f1^(x;x0)=f(x0)+[Df(x0)](x−x0).
且对于任意x∈Rn有
f(x)=f1^(x;x0)+o(∥x−x0∥2).
注:上面所有x0和x−x0均可替换为x+δ和δ。
矩阵微分
- 以上我们讨论了设计向量(标量)输入/输出的函数微分,下面我们将其推广到矩阵输入函数f:Rm×n→R,即f(X)(X∈Rm×n)。典型的矩阵输入函数包括矩阵范数、行列式和迹。
- 首先定义其梯度:设f:Rm×n→R为可微函数,则f的梯度∇f:Rm×n→Rm×n定义为
∇f(X)=∂X11∂f(X)⋮∂Xm1∂f(X)⋯⋱⋯∂X1n∂f(X)⋮∂Xmn∂f(X).
- 然后是链式法则:设F:Rp×q→Rr×s和G:Rm×n→Rp×q为可微函数,H:Rm×n→Rr×s定义为H(X)=F(G(X)),其中X∈Rm×n。则H可微,并且对所有i,j,k,l,有
∂Xkl∂Hij(X)=a∑b∑∂Gab∂Fij(G(X))∂Xkl∂Gab(X).
特别地,当r=s=1时,有
∂Xkl∂H(X)=a∑b∑[∇f(G(X))]ab∂Xkl∂Gab(X).
- 最后给出一阶泰勒近似:设f:Rm×n→R并固定X0∈Rm×n。若f连续可微,则其在X0处的一阶泰勒近似f^1(⋅;X0):Rm×n→R定义为
f^1(X;X0)=f(X0)+tr([∇f(X0)]⊤(X−X0)).
优化定理
在本讲最后,介绍一个优化理论中的一个重要定理:
设f:Rn→R为可微函数,Ω⊆Rn为一开集,那么对于优化问题
x∈Ωminf(x)
设其最优解为x∗,那么其满足∇f(x∗)=0。(这也是优化问题最优解的必要条件)