矩阵微分
在实际计算过程中,按照定义求解矩阵梯度往往不现实。如果还要计算Hessian 矩阵就更复杂了。那么有没有简单的办法呢?有。矩阵微分为标量函数,向量函 数和矩阵函数的梯度矩阵与Hessian矩阵的计算提供了便捷的算法。
矩阵微分是实函数微分对矩阵函数的推广。在微积分中,函数ϕ(x) 的导 数ϕ′(x) 定义为:
ϕ′(x)=limΔx→0ϕ(x+Δx)−ϕ(x)Δx式 (1) 又可以写为:
ϕ(x+Δx)=ϕ(x)+Δxϕ′(x)+rx(Δ)式 (2) 中 rx(Δx)是ϕ(x)的留数,有limΔx→0rx(Δx)Δx=0 。 ϕ(x+Δx)−ϕ(x)由两部分构成:与导数成正比的分量Δxϕ′(x) 和 误差分量。如果误差分量可以忽略不计则函数ϕ(x+Δx)=ϕ(x)+Δxϕ′(x)
把上述定义推广到向量,即可得到向量函数的微分。令c 和 u是两个(n×1)向量,其中c是 m×1 向量函数f(x) 的向量变元,而u是 Rn中的一个点,并且‖u‖2<r 。若存在一个 m×n的矩阵A,它与c有关,但与 u无关,并且使得:
f(c+u)=f(c)+A(c)u+rc(u)对所有具有‖u‖2<r的n×1实向量 u恒成立,以及:
limu→0rc(u)‖u‖2=0则称函数f在向量点c是可微分的。称m×n矩阵 A(c)是函数f 在c的一阶导数,并称 m×1向量
df(c;u)=A(c)u是f在c的一阶微分向量。
现在考虑另外一个向量点c+tej,其中ej 是一个仅第j个元素为1,其他元素为0的n×1的基本向量。t 是非零标量。换句话说c与c+tej只 第j个元素不同。当t足够小时,极限:
Djfi(c)=limt→0fi(c+tej)−fi(c)t称为向量函数f 的第i个元素相对于向量变元c 的第j个元素的偏导。
根据以上定义,n个偏导的排列[D1fi(c),D2fi(c),…,Dnfi(c)]。 定义了向量函数f(c)的第i个元素 fi(c) 相对于1×n行向量 cT的偏导向量,即有:
∂fi(c)∂cT=[D1fi(c),D2fi(c),…,Dnfi(c)]于是,列向量f(c)=[f1(c),f2(c),…,fm(c)]T相对于行向量cT=[c1,c2,…,cn] 的偏导数矩阵为m×n矩阵。定义为:
D[f(c)]=[∂f1(c)∂cT∂f2(c)∂cT⋮∂fm(c)∂cT]=[D1f1(c)D2f1(c)…Dnf1(c)D1f2(c)D2f2(c)…Dnf2(c)⋮D1fm(c)D2fm(c)…Dnfm(c)]矩阵微分有很多性质和单变量函数微分性质类似,此处不再一一列举。只待用到 的时候再去查阅工具书。