前言
之前没有接触过矩阵积分,在学习cs229的过程中遇到了,好在课程给了相关的参考文献。这篇Linear Algebra Review and Reference对复习线性代数的知识很有帮助,遂决定将其中第四部分矩阵积分的内容翻译过来。前三部分在大学本科阶段的线性代数都会涉及,在此不做翻译。
4. 矩阵积分
标准的线性代数课程都会包含前面章节的话题,但其中有一项看起来不会被经常提及(但我们接下来会经常用到),那就是对积分在向量方面的扩展。尽管我们实际用的积分相对比较琐碎,符号常常使事情看起来比实际困难得多。这部分我们给出一些关于矩阵积分基本的定义和例子。
4.1 梯度
设f:Rm×n→R是一个函数,输入是一个m×n的矩阵A,返回值是一个实数。则f的梯度是对矩阵的每一个位置求偏导数,定义如下:
∇Af(A)∈Rm×n=∂A11∂f(A)∂A21∂f(A)⋮∂Am1∂f(A)∂A12∂f(A)∂A22∂f(A)⋮∂Am2∂f(A)⋯⋯⋱⋯∂A1n∂f(A)∂A2n∂f(A)⋮∂Amn∂f(A)
即,对一个m×n矩阵来说
(∇Af(A))ij=∂Aij∂f(A)
注意,∇Af(A)的大小总是和A一样。特别地,对A是向量的情况,x∈Rn,
∇xf(x)=∂x1∂f(x)∂x2∂f(x)⋮∂xn∂f(x)
只有当函数值为实数时函数的梯度才有定义(例如,f:Rn×n→Rn的梯度就无定义,译者注),即,函数一定要返回一个标量,记住这一点十分重要。例如,我们不能对Ax,A∈Rn×n的每一个x求梯度,因为它是一个向量。
根据偏导数的性质,可以得出下面的式子:
- ∇x(f(x)+g(x))=∇xf(x)+∇xg(x)
- 对每一个t∈R, ∇x(tf(x))=t∇xf(x)
理论上,梯度是偏导数在多变量函数的自然延伸。然而,使用梯度有时候会因为符号而变得棘手。例如,A∈Rm×n是一个固定系数的矩阵,x∈Rn是一个固定系数的向量。令f:Rm→R是由f(z)=zTz定义的函数,这样的话∇zf(z)=2z。但是现在,请看以下式子:
∇f(Ax)
我们该如何解释该式子呢?至少有两种可能的解释:
- 第一种解释。因为∇zf(z)=2z,我们把∇f(Ax)解释成求Ax处的梯度,因此,
∇f(Ax)=2(Ax)=2Ax∈Rm
- 第二种解释。我们把f(Ax)看成x的函数,即,令g(x)=f(Ax)。因此,
∇f(Ax)=∇xg(x)∈Rn
这两种不同的解释的结果是完全不同的。第一个结果是一个m维度的向量,第二个结果是一个n维的向量。如何解决这个问题呢?
关键是要明确我们所求的微分变量。第一个例子里,我们对函数f的每一个参数z求微分,然后带入参数Ax。第二个例子里,我们对复合函数g(x)=f(Ax)的每一个x求微分。我们定义,第一个例子为∇zf(Ax),第二个例子为∇xf(Ax)。你会在作业中发现,清楚的定义是极其重要的。
4.2 海森矩阵
设函数f:Rn→R,x的海森矩阵写作∇x2f(x)或简记为H,是一个n×n的偏导数矩阵。
∇x2f(x)∈Rn×n=∂x12∂2f(x)∂x2∂x1∂2f(x)⋮∂xn∂x1∂2f(x)∂x1∂x2∂2f(x)∂x22∂2f(x)⋮∂xn∂x2∂2f(x)⋯⋯⋱⋯∂x1∂xn∂2f(x)∂x2∂xn∂2f(x)⋮∂xn2∂2f(x)
也记作
(∇x2f(x))ij=∂xi∂xj∂2f(x)
注意Hessian是对称的
∂xi∂xj∂2f(x)=∂xj∂xi∂2f(x)
和梯度的定义类似,Hessian也只有当f(x)的返回值是实数时有定义。
可以很自然联想到,梯度类似函数的一阶导数,Hessian类似二阶导数(我们使用的符号也暗示了这种关系)。这个直觉总体上是正确的,但是也有少部分事项需要注意。
首先,返回值是实数的、只有一个变量的函数,f:R→R,基本的定义是二阶导数是一阶导数的导数,即
dx2d2f=dxddxdf(x)
译者注:原文是∂x2∂2f(x)=∂x∂∂x∂f(x),但这里的函数只有一个变量,而偏导符号用于两个变量及以上,因此更改为求导符而不是求偏导符
然而,对于参数是向量的函数来说,函数的梯度是一个向量,我们无法对这个向量再求梯度,例如
∇x∇xf(x)=∇x∂x1∂f(x)∂x2∂f(x)⋮∂xn∂f(x)
这个式子是没有定义的。因此,不能说Hessian是梯度的梯度。但也几乎是正确的,比如下面的情形:如果我们取向量第i项的梯度(∇xf(x))i=∂xi∂f(x),然后对每一项取梯度,得到
∇x∂xi∂f(x)=∂xi∂x1∂2f(x)∂xi∂x2∂2f(x)⋮∂xi∂xn∂2f(x)
这正是Hessian的第i列(或行)。因此
∇x2f(x)=[∇x(∇xf(x))1∇x(∇xf(x))2⋯(∇xf(x))n]
粗略一点来说∇x2f(x)=∇x(∇xf(x))T。只要我们知道它的意思是将(∇xf(x))T的每一项分别求梯度,而不是对整个向量求梯度即可。
最后,虽然可求出矩阵A∈Rn的梯度,但在本课程里,我们仅考虑向量x∈Rn的Hessian矩阵。仅仅是为了方便(事实上,没有计算需要我们去求矩阵的Hessian矩阵),因为矩阵的Hessian矩阵需要表示出所有项的偏导数∂Aij∂Akl∂2Aij,一个矩阵是难以将这些表示出来的。
4.3 线性函数或二次函数的梯度和Hessian
现在,让我们试着定义一些简单函数的梯度或Hessian矩阵。应当指出,这里给出的梯度是CS229课程所给出梯度的特例。
对于x∈Rn,令f(x)=bTx,其中b∈Rn是已知的向量。则
f(x)=i=1∑nbixi
所以
∂xk∂f(x)=∂xk∂i=1∑nbixi=bk
显然,∇xbTx=b,与线性函数类比,dxdax=a
现在考虑二次函数f(x)=xTAx,对A∈Sn(对称阵),有
f(x)=i=1∑nj=1∑nAijxixj
为了求偏导数,我们分开考虑包含xk和xk2的情况:
∂xk∂f(x)=∂xk∂i=1∑nj=1∑nAijxixj=∂xk∂[i=k∑j=k∑Aijxixj+j=k∑Aikxixk+j=k∑Akjxkxj+Akkxk2]=i=k∑Aikxi+j=k∑Akjxj+2Akkxk=i=1∑nAikxi+j=1∑nAkjxj=2i=1∑nAkixi
最后一个等式是因为A是对称的(因为它是一个二次型)。注意,∇xf(x)的第k项是A的第k行和x的内积。因此,∇xxTAx=2Ax。我们再次和线性函数的二阶导数类比,即dxdax2=2ax
最后,让我们看一下二次函数f(x)=xTAx的Hessian(线性函数bTx的Hessian显然是0矩阵)。即
∂xk∂xℓ∂2f(x)=∂xk∂[∂xℓ∂f(x)]=∂xk∂[2i=1∑nAℓixi]=2Aℓk
因此,应当明确∇x2xTAx=2A,这和我们期望的一样(再次类比线性函数,dx2d2ax2=2a)。
总结如下:
- ∇xbTx=b
- ∇xxTAx=2Ax(若A是对称阵)
- ∇x2xTAx=2A(若A是对称阵)
4.4 最小二乘法
让我们用从上一节中得到的公式来推导最小二乘法。
给定矩阵A∈Rm×n(为了简便假设A满秩)和向量b∈Rm,并且b∈/R(A)。这种情况下我们无法找到一个向量x∈Rn,使得Ax=b。我们希望找到一个向量x,使Ax的值和b越接近越好,用欧几里得范数∥Ax−b∥22来表示这个接近的程度。
而∥x∥22=xTx,于是,有
∥Ax−b∥22=(Ax−b)T(Ax−b)=xTATAx−2bTAx+bTb
求上式的结果对x的梯度,结合我们上一节中的结论,有
∇x(xTATAx−2bTAx+bTb)=∇xxTATAx−∇x2bTAx+∇x bTb=2ATAx−2ATb
令上式的最后一步等于0,解x,得
x=(ATA)−1ATb
这与我们课堂上推导的结果是一致的。
4.5 行列式的梯度
我们可以找到函数相对于矩阵的梯度,现在,考虑这样一种情形,A∈Rn×n,我们希望求出∇A∣A∣。回顾我们对于导数的讨论,并且根据∣A∣的计算公式
∣A∣=i=1∑n(−1)i+jAij∣A∖i,∖j∣(j∈1,2,...,n)
(这里就是行列式的计算方法,还可以用代数余子式来表示,译者注)
我们得出
∂Akl∂∣A∣=∂Akl∂i=1∑n(−1)i+jAij∣A∖i,∖j∣=(−1)k+l∣A∖k,∖l∣=(adj(A))lk
根据伴随矩阵的性质,马上可以得到
∇A∣A∣=(adj(A))T=∣A∣(A−1)T
现在,我们思考这么一个函数,f:S++n→R,f(A)=log∣A∣。注意我们不得不限制f的定义域为正定矩阵,因为这可以保证∣A∣>0,所以log∣A∣为实数。这样我们就可以使用链式法则(没什么花里胡哨的,只是单变量微分的普通链式规则)来表示
∂Aij∂log∣A∣=∂∣A∣∂log∣A∣∂Aij∂∣A∣=∣A∣1∂Aij∂∣A∣
显然,
∇Alog∣A∣=∣A∣1∇A∣A∣=A−1
类比单变量的情况,d/(dx)logx=1/x
4.6 特征值优化
最后,我们使用矩阵积分来解决一种最优化问题,分析这种方式可以直接导出特征值、特征向量。考虑下面的式子,等式约束下的最优化问题(条件极值问题,译者注):
maxx∈RnxTAx其中∥x∥22=1
对一个对称矩阵A∈Rn,一个解决等式约束下最优化问题的标准方式是构造拉格朗日函数,目标函数要包括约束函数。本例中的拉格朗日函数可构造为:
L(x,λ)=xTAx−λxTx
这里,λ叫做拉格朗日乘数,和约束函数相关联。可以确定$ x^* $是这个问题的最优解,在 $ x^* $ 点拉格朗日函数的梯度为0,即
∇xL(x,λ)=∇x(xTAx−λxTx)=2ATx−2λx=0
注意,这其实就是线性方程Ax=λx。这表明,在xTx=1的条件下使xTAx取最大值(或最小值)的点就是A的特征向量