求导

对与矩阵 XX, AA, UU, VV

dXTX=IdXXT=IdXTAX=AdAXXT=AdAXX=ATdXAX=ATdXTXX=2XdXTAXX=(A+AT)XdXTAXXXT=ddX(dXTAXdX)=AT+AUXT=(UTX)TUTVX=UTXV+VTXUTUVTX=UXVT+UVTX[(XUV)T(XUV)]X=2(XUV)UTUTXVX=UVTUTXTXUX=2XUUT\frac{dX^T}{X}=I\\\\ \frac{dX}{X^T}=I\\\\ \frac{dX^TA}{X}=A\\\\ \frac{dAX}{X^T}=A\\\\ \frac{dAX}{X}=A^T\\\\ \frac{dXA}{X}=A^T\\\\ \frac{dX^TX}{X}=2X\\\\ \frac{dX^TAX}{X}=(A+A^T)X\\\\ \frac{dX^TAX}{XX^T}=\frac{d}{dX}(\frac{dX^TAX}{dX})=A^T+A\\\\ \frac{\partial U}{\partial X^T}=(\frac{\partial U^T}{\partial X})^T\\\\ \frac{\partial U^TV}{\partial X}=\frac{\partial U^T}{\partial X}V+\frac{\partial V^T}{\partial X}U^T\\\\ \frac{\partial UV^T}{\partial X}=\frac{\partial U}{\partial X}V^T+U\frac{\partial V^T}{\partial X}\\\\ \frac{\partial [(XU-V)^T(XU-V)]}{\partial X}=2(XU-V)U^T\\\frac{\partial U^TXV}{\partial X}=UV^T\\\\ \frac{\partial U^TX^TXU}{\partial X}=2XUU^T

对于一个 n 维的方程组 f(x1,x2,,xn)f(x_1,x_2,,x_n),求解它的最小值需要

fx1=0fx2=0fxn=0\frac{\partial f}{\partial x_1}=0\\\\ \frac{\partial f}{\partial x_2}=0\\\\ \\\\ \frac{\partial f}{\partial x_n}=0

所以可以定义一个矩阵方程,并且 yRn×1y\in R^{n\times1}

f(y)y=[x1x2yn]f(y)\\\\ y=\begin{bmatrix}x_1\\x_2\\\\y_n\end{bmatrix}

则求导为

fy=[fx1fxn]\frac{\partial f}{\partial y}=\begin{bmatrix}\frac{\partial f}{\partial x_1}\\\\ \\\\ \frac{\partial f}{\partial x_n}\end{bmatrix}

最终的结果的行数与分母一致,所以这种布局表达形式被称作 分母布局(Denominator Layout)

fy=[fx1fxn]\frac{\partial f}{\partial y}=\begin{bmatrix}\frac{\partial f}{\partial x_1}&&\frac{\partial f}{\partial x_n}\end{bmatrix}

最终的结果的行数与分子一致,所以这种布局表达形式被称作 分子布局(Numerator Layout)

上述所说的求导是函数是一个 1×11\times1 的形式的,对于 m×1m\times 1 的函数来说,求导的结果为

f(y)=[f1f2fm]y=[x1x2yn]f(y)=\begin{bmatrix}f_1\\f_2\\\\f_m\end{bmatrix}\\y=\begin{bmatrix}x_1\\x_2\\\\y_n\end{bmatrix}

fy=[f1x1fmx1fmxnfmxn]\frac{\partial f}{\partial y}=\begin{bmatrix}\frac{\partial f_1}{\partial x_1}&&\frac{\partial f_m}{\partial x_1}\\&&\\\frac{\partial f_m}{\partial x_n}&&\frac{\partial f_m}{\partial x_n}\end{bmatrix}

最终的结果是一个 n×mn\times m 的矩阵,行数与分母一致,所以这种布局表达形式被称作 分母布局(Denominator Layout)

fy=[f1x1f1xnfmx1fmxn]\frac{\partial f}{\partial y}=\begin{bmatrix}\frac{\partial f_1}{\partial x_1}&&\frac{\partial f_1}{\partial x_n}\\&&\\\frac{\partial f_m}{\partial x_1}&&\frac{\partial f_m}{\partial x_n}\end{bmatrix}

最终的结果是一个 m×nm\times n 的矩阵,行数与分子一致,所以这种布局表达形式被称作 分子布局(Numerator Layout)

不同的布局形式导致结果互为转置,计算中应当保持一种矩阵运算的形式

对于上述中求解最小/大值需要求导为 0,但是有些情况不能够实现,所以使用梯度下降法

定义梯度

y=fy\triangledown y = \frac{\partial f}{\partial y}

定义一个初始的 y=yy=y^*,不断迭代,直到最终值满意

y=yαyy^*=y^*-\alpha \triangledown y

其中 α\alpha 是学习率,也就是不断接近目标值的步长,而且可以是矩阵,对于不同的数据可以有不同的步长

矩阵的链式求导

函数f(y(u))fu=yufy函数f(y(u))\\\\ \frac{\partial f}{\partial u}=\frac{\partial y}{\partial u}\frac{\partial f}{\partial y}

迹运算

矩阵迹运算

tr ABC=trCAB=trBCAtr A=trATtr aA=a trAtr~ABC=trCAB=trBCA\\\\ tr~A=trA^T\\\\ tr~aA=a~trA

矩阵的迹对矩阵求偏导

AtrAB=BTATf(A)=(Af(A))TAtrABATC=CAB+CTABTAA=A(A1)TAtrATB=BAtrATBA=(B+BT)AAtrABAT=A(B+BT)\nabla_AtrAB=B^T\\\\ \nabla_{A^T}f(A)=(\nabla_{A}f(A))^T\\\\ \nabla_AtrABA^TC=CAB+C^TAB^T\\\\ \nabla_A|A|=|A|(A^{-1})^T\\\\ \nabla_AtrA^TB=B\\\\ \nabla_AtrA^TBA=(B+B^T)A\\\\ \nabla_AtrABA^T=A(B+B^T)