矩阵微分

在实际计算过程中,按照定义求解矩阵梯度往往不现实。如果还要计算Hessian 矩阵就更复杂了。那么有没有简单的办法呢?有。矩阵微分为标量函数,向量函 数和矩阵函数的梯度矩阵与Hessian矩阵的计算提供了便捷的算法。

矩阵微分是实函数微分对矩阵函数的推广。在微积分中,函数ϕ(x) 的导 数ϕ(x) 定义为:

ϕ(x)=limΔx0ϕ(x+Δx)ϕ(x)Δx

式 (1) 又可以写为:

ϕ(x+Δx)=ϕ(x)+Δxϕ(x)+rx(Δ)

式 (2) 中 rx(Δx)ϕ(x)的留数,有limΔx0rx(Δx)Δx=0ϕ(x+Δx)ϕ(x)由两部分构成:与导数成正比的分量Δxϕ(x) 和 误差分量。如果误差分量可以忽略不计则函数ϕ(x+Δx)=ϕ(x)+Δxϕ(x)

把上述定义推广到向量,即可得到向量函数的微分。令cu是两个(n×1)向量,其中cm×1 向量函数f(x) 的向量变元,而uRn中的一个点,并且u2<r 。若存在一个 m×n的矩阵A,它与c有关,但与 u无关,并且使得:

f(c+u)=f(c)+A(c)u+rc(u)

对所有具有u2<rn×1实向量 u恒成立,以及:

limu0rc(u)u2=0

则称函数f在向量点c是可微分的。称m×n矩阵 A(c)是函数fc的一阶导数,并称 m×1向量

df(c;u)=A(c)u

fc的一阶微分向量。

现在考虑另外一个向量点c+tej,其中ej 是一个仅第j个元素为1,其他元素为0的n×1的基本向量。t 是非零标量。换句话说cc+tej只 第j个元素不同。当t足够小时,极限:

Djfi(c)=limt0fi(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)cTf2(c)cTfm(c)cT]=[D1f1(c)D2f1(c)Dnf1(c)D1f2(c)D2f2(c)Dnf2(c)D1fm(c)D2fm(c)Dnfm(c)]

矩阵微分有很多性质和单变量函数微分性质类似,此处不再一一列举。只待用到 的时候再去查阅工具书。