矩阵求导基础总结
在最小二乘问题中,经常会遇到含有 XTX^TXT 的表达式,例如:
XTCX^T CXTC
CTXC^T XCTX
XTMXX^T M XXTMX
∥AX−B∥2\|AX-B\|^2∥AX−B∥2
需要注意的是,严格来说,通常不是单独对 XTX^TXT 求导,而是对包含 XTX^TXT 的标量函数进行求导。
设:
X=[x1x2⋮xn]X=\begin{bmatrix}x_1\\x_2\\\vdots\\x_n\end{bmatrix}X= x1x2⋮xn
如果 f(X)f(X)f(X) 是一个标量函数,那么它对 XXX 的导数通常写成梯度形式:
∂f∂X=[∂f∂x1∂f∂x2⋮∂f∂xn]\frac{\partial f}{\partial X}=\begin{bmatrix}\frac{\partial f}{\partial x_1}\\\frac{\partial f}{\partial x_2}\\\vdots\\\frac{\partial f}{\partial x_n}\end{bmatrix}∂X∂f= ∂x1∂f∂x2∂f⋮∂xn∂f
也就是说,对 XXX 求导,本质上就是分别对 XXX 中的每一个分量 xix_ixi 求偏导。
1. 线性项 XTCX^T CXTC 的求导
设:
X=[x1x2⋮xn],C=[c1c2⋮cn]X=\begin{bmatrix}x_1\\x_2\\\vdots\\x_n\end{bmatrix},\quad C=\begin{bmatrix}c_1\\c_2\\\vdots\\c_n\end{bmatrix}X= x1x2⋮xn ,C= c1c2⋮cn
则:
XTC=[x1x2⋯xn][c1c2⋮cn]X^T C=\begin{bmatrix}x_1 & x_2 & \cdots & x_n\end{bmatrix}\begin{bmatrix}c_1\\c_2\\\vdots\\c_n\end{bmatrix}XTC=[x1x2⋯xn] c1c2⋮cn
展开可得:
XTC=x1c1+x2c2+⋯+xncnX^T C=x_1c_1+x_2c_2+\cdots+x_nc_nXTC=x1c1+x2c2+⋯+xncn
分别对每个变量求偏导:
∂(XTC)∂x1=c1\frac{\partial (X^T C)}{\partial x_1}=c_1∂x1∂(XTC)=c1
∂(XTC)∂x2=c2\frac{\partial (X^T C)}{\partial x_2}=c_2∂x2∂(XTC)=c2
⋮\vdots⋮
∂(XTC)∂xn=cn\frac{\partial (X^T C)}{\partial x_n}=c_n∂xn∂(XTC)=cn
因此:
∂(XTC)∂X=[c1c2⋮cn]=C\frac{\partial (X^T C)}{\partial X}=\begin{bmatrix}c_1\\c_2\\\vdots\\c_n\end{bmatrix}=C∂X∂(XTC)= c1c2⋮cn =C
所以有结论:
∂(XTC)∂X=C\boxed{\frac{\partial (X^T C)}{\partial X}=C}∂X∂(XTC)=C
由于 CTXC^T XCTX 与 XTCX^T CXTC 都是标量,并且二者相等:
CTX=XTCC^T X=X^T CCTX=XTC
因此:
∂(CTX)∂X=C\boxed{\frac{\partial (C^T X)}{\partial X}=C}∂X∂(CTX)=C
2. 二次型 XTMXX^T M XXTMX 的求导
设:
f(X)=XTMXf(X)=X^T M Xf(X)=XTMX
其中:
X∈Rn×1X\in \mathbb{R}^{n\times 1}X∈Rn×1
M∈Rn×nM\in \mathbb{R}^{n\times n}M∈Rn×n
二次型求导的常用结论是:
∂(XTMX)∂X=(M+MT)X\boxed{\frac{\partial (X^T M X)}{\partial X}=(M+M^T)X}∂X∂(XTMX)=(M+MT)X
如果 MMM 是对称矩阵,即:
MT=MM^T=MMT=M
那么:
∂(XTMX)∂X=2MX\boxed{\frac{\partial (X^T M X)}{\partial X}=2MX}∂X∂(XTMX)=2MX
下面简单推导这个公式。
将二次型展开:
XTMX=∑i=1n∑j=1nxiMijxjX^T M X=\sum_{i=1}^{n}\sum_{j=1}^{n}x_iM_{ij}x_jXTMX=i=1∑nj=1∑nxiMijxj
对某一个变量 xkx_kxk 求偏导。由于 xkx_kxk 既可能出现在前面的 xix_ixi 位置,也可能出现在后面的 xjx_jxj 位置,因此会产生两部分。
当 i=ki=ki=k 时,有:
∑j=1nMkjxj\sum_{j=1}^{n}M_{kj}x_jj=1∑nMkjxj
当 j=kj=kj=k 时,有:
∑i=1nxiMik\sum_{i=1}^{n}x_iM_{ik}i=1∑nxiMik
由于 MikM_{ik}Mik 是标量,所以可以写成:
∑i=1nMikxi\sum_{i=1}^{n}M_{ik}x_ii=1∑nMikxi
因此:
∂(XTMX)∂xk=∑j=1nMkjxj+∑i=1nMikxi\frac{\partial (X^T M X)}{\partial x_k}=\sum_{j=1}^{n}M_{kj}x_j+\sum_{i=1}^{n}M_{ik}x_i∂xk∂(XTMX)=j=1∑nMkjxj+i=1∑nMikxi
第一项对应矩阵形式中的第 kkk 个分量:
∑j=1nMkjxj=(MX)k\sum_{j=1}^{n}M_{kj}x_j=(MX)_kj=1∑nMkjxj=(MX)k
第二项对应矩阵形式中的第 kkk 个分量:
∑i=1nMikxi=(MTX)k\sum_{i=1}^{n}M_{ik}x_i=(M^T X)_ki=1∑nMikxi=(MTX)k
所以整体写成矩阵形式为:
∂(XTMX)∂X=MX+MTX\frac{\partial (X^T M X)}{\partial X}=MX+M^T X∂X∂(XTMX)=MX+MTX
即:
∂(XTMX)∂X=(M+MT)X\frac{\partial (X^T M X)}{\partial X}=(M+M^T)X∂X∂(XTMX)=(M+MT)X
如果 MMM 是对称矩阵:
MT=MM^T=MMT=M
则有:
∂(XTMX)∂X=2MX\frac{\partial (X^T M X)}{\partial X}=2MX∂X∂(XTMX)=2MX
3. 最小二乘中的矩阵求导
最小二乘问题通常写成:
X=argminX∥AX−B∥2X=\arg\min_X \|AX-B\|^2X=argXmin∥AX−B∥2
定义目标函数:
J(X)=∥AX−B∥2J(X)=\|AX-B\|^2J(X)=∥AX−B∥2
根据二范数定义:
J(X)=(AX−B)T(AX−B)J(X)=(AX-B)^T(AX-B)J(X)=(AX−B)T(AX−B)
展开:
J(X)=XTATAX−XTATB−BTAX+BTBJ(X)=X^T A^T A X-X^T A^T B-B^T A X+B^T BJ(X)=XTATAX−XTATB−BTAX+BTB
因为 XTATBX^T A^T BXTATB 是标量,BTAXB^T A XBTAX 也是标量,并且二者相等:
XTATB=BTAXX^T A^T B=B^T A XXTATB=BTAX
所以:
J(X)=XTATAX−2XTATB+BTBJ(X)=X^T A^T A X-2X^T A^T B+B^T BJ(X)=XTATAX−2XTATB+BTB
4. 对每一项分别求导
第一项为:
XTATAXX^T A^T A XXTATAX
令:
M=ATAM=A^T AM=ATA
则:
XTATAX=XTMXX^T A^T A X=X^T M XXTATAX=XTMX
由于:
(ATA)T=ATA(A^T A)^T=A^T A(ATA)T=ATA
所以 ATAA^T AATA 是对称矩阵。
因此:
∂(XTATAX)∂X=2ATAX\frac{\partial (X^T A^T A X)}{\partial X}=2A^T A X∂X∂(XTATAX)=2ATAX
第二项为:
−2XTATB-2X^T A^T B−2XTATB
令:
C=ATBC=A^T BC=ATB
则:
−2XTATB=−2XTC-2X^T A^T B=-2X^T C−2XTATB=−2XTC
所以:
∂(−2XTATB)∂X=−2ATB\frac{\partial (-2X^T A^T B)}{\partial X}=-2A^T B∂X∂(−2XTATB)=−2ATB
第三项为:
BTBB^T BBTB
由于该项不含 XXX,所以:
∂(BTB)∂X=0\frac{\partial (B^T B)}{\partial X}=0∂X∂(BTB)=0
因此目标函数的导数为:
∂J∂X=2ATAX−2ATB\frac{\partial J}{\partial X}=2A^T A X-2A^T B∂X∂J=2ATAX−2ATB
令导数为零:
2ATAX−2ATB=02A^T A X-2A^T B=02ATAX−2ATB=0
两边同时除以 222,得到:
ATAX−ATB=0A^T A X-A^T B=0ATAX−ATB=0
即:
ATAX=ATB\boxed{A^T A X=A^T B}ATAX=ATB
这就是最小二乘问题对应的正规方程。
当 ATAA^T AATA 可逆时,有:
X=(ATA)−1ATB\boxed{X=(A^T A)^{-1}A^T B}X=(ATA)−1ATB
5. 最小二乘求导的直接记忆公式
对于目标函数:
J(X)=∥AX−B∥2J(X)=\|AX-B\|^2J(X)=∥AX−B∥2
可以直接使用如下结论:
∂∂X∥AX−B∥2=2AT(AX−B)\boxed{\frac{\partial}{\partial X}\|AX-B\|^2=2A^T(AX-B)}∂X∂∥AX−B∥2=2AT(AX−B)
令导数为零:
2AT(AX−B)=02A^T(AX-B)=02AT(AX−B)=0
得到:
AT(AX−B)=0A^T(AX-B)=0AT(AX−B)=0
展开:
ATAX−ATB=0A^T A X-A^T B=0ATAX−ATB=0
因此:
ATAX=ATB\boxed{A^T A X=A^T B}ATAX=ATB
6. 常用矩阵求导公式总结
线性项:
∂(XTC)∂X=C\boxed{\frac{\partial (X^T C)}{\partial X}=C}∂X∂(XTC)=C
∂(CTX)∂X=C\boxed{\frac{\partial (C^T X)}{\partial X}=C}∂X∂(CTX)=C
二次型:
∂(XTMX)∂X=(M+MT)X\boxed{\frac{\partial (X^T M X)}{\partial X}=(M+M^T)X}∂X∂(XTMX)=(M+MT)X
如果 MMM 是对称矩阵:
∂(XTMX)∂X=2MX\boxed{\frac{\partial (X^T M X)}{\partial X}=2MX}∂X∂(XTMX)=2MX
最小二乘残差形式:
∂∂X∥AX−B∥2=2AT(AX−B)\boxed{\frac{\partial}{\partial X}\|AX-B\|^2=2A^T(AX-B)}∂X∂∥AX−B∥2=2AT(AX−B)
正规方程:
ATAX=ATB\boxed{A^T A X=A^T B}ATAX=ATB
最小二乘解:
X=(ATA)−1ATB\boxed{X=(A^T A)^{-1}A^T B}X=(ATA)−1ATB
7. 一句话总结
最小二乘问题的核心是最小化残差平方和:
J(X)=∥AX−B∥2J(X)=\|AX-B\|^2J(X)=∥AX−B∥2
对参数 XXX 求导:
∂J∂X=2AT(AX−B)\frac{\partial J}{\partial X}=2A^T(AX-B)∂X∂J=2AT(AX−B)
令导数为零:
2AT(AX−B)=02A^T(AX-B)=02AT(AX−B)=0
即可得到正规方程:
ATAX=ATBA^T A X=A^T BATAX=ATB
如果 ATAA^T AATA 可逆,则最小二乘解为:
X=(ATA)−1ATBX=(A^T A)^{-1}A^T BX=(ATA)−1ATB