标量、向量、矩阵之间求导笔记

2019.12.06--------------------------------------------------------------------------------------------------------------

今天,碰到了下面有关向量对于向量的导数,不太明白为什么最后得到的是A的转置。
d A x d x = A T \frac{ \mathrm{d}Ax}{\mathrm{d}x} = A^T dxdAx=AT
上式中, A m × n A_{m\times n} Am×n x n × 1 x_{n\times 1} xn×1无关, x x x为一个列向量,则 A x Ax Ax也为一个列向量。(一般所说的向量都写成列向量形式)按照矩阵微分中的规定,求的是行向量对于列向量的导数,得到的结果是一个矩阵。下面根据雅克比矩阵的定义,来看行向量对于列向量的导数。
f ( x ) = [ f 1 ( x ) , f 2 ( x ) , . . . , f m ( x ) ] T , x = [ x 1 , x 2 , . . . , x n ] T f(x) = [f_1(x) , f_2(x) , ... , f_m(x)]^T, x = [x_1,x_2,...,x_n]^T f(x)=[f1(x),f2(x),...,fm(x)]T,x=[x1,x2,...,xn]T
d f T d x = d [ f 1 , f 2 , . . . , f m ] 1 × m d [ x 1 x 2 . . . x n ] n × 1 = [ d f 1 d x 1 d f 2 d x 1 … d f m d x 1 d f 1 d x 2 d f 2 d x 2 … d f m d x 2 ⋮ ⋮ ⋱ ⋮ d f 1 d x n d f 2 d x n … d f m d x n ] n × m = J \frac{\mathrm{d}f^T}{\mathrm{d}x} = \frac{\mathrm{d} [f_1 , f_2 , ... , f_m]_{1\times m}}{\mathrm{d} \begin{bmatrix}x_1 \\ x_2 \\ ... \\ x_n \end{bmatrix}_{n\times 1} } =\begin{bmatrix} \frac{\mathrm{d}f_1}{\mathrm{d}x_1} & \frac{\mathrm{d}f_2}{\mathrm{d}x_1} & \dots & \frac{\mathrm{d}f_m}{\mathrm{d}x_1} \\ \frac{\mathrm{d}f_1}{\mathrm{d}x_2} & \frac{\mathrm{d}f_2}{\mathrm{d}x_2} &\dots& \frac{\mathrm{d}f_m}{\mathrm{d}x_2} \\ \vdots& \vdots & \ddots &\vdots\\ \frac{\mathrm{d}f_1}{\mathrm{d}x_n} & \frac{\mathrm{d}f_2}{\mathrm{d}x_n} & \dots & \frac{\mathrm{d}f_m}{\mathrm{d}x_n} \end{bmatrix} _{n\times m} = J dxdfT=dx1x2...xnn×1d[f1,f2,...,fm]1×m=dx1df1dx2df1dxndf1dx1df2dx2df2dxndf2dx1dfmdx2dfmdxndfmn×m=J
可以看出,分母有几行, J J J就有几行;分子有几列, J J J就有几列。列向量对列向量求导是这么定义的:先对分子转置,再对最后结果进行转置。
d f d x = ( d f T d x ) T = J T \frac{\mathrm{d}f}{\mathrm{d}x} =\Big( \frac{\mathrm{d}f^T}{\mathrm{d}x} \Big) ^T = J^T dxdf=(dxdfT)T=JT
现在,再来看最上面的公式
d A x d x = ( d ( A x ) T d x ) T = ( d x T d x A T ) T = ( I A T ) T = A ? ? \frac{ \mathrm{d}Ax}{\mathrm{d}x} = \Big(\frac{ \mathrm{d}(Ax)^T}{\mathrm{d}x} \Big)^T= \Big(\frac{ \mathrm{d}x^T}{\mathrm{d}x} A^T \Big)^T = \Big(I A^T \Big)^T = A ?? dxdAx=(dxd(Ax)T)T=(dxdxTAT)T=(IAT)T=A
嗯…,上面的结果似乎与预期不符合。在对分子转置应该不包括常量,可以在转置之前先把常量提出来,下面的结果就是符合预期的结果了。
d A x d x = ( A d ( x ) T d x ) T = ( A I ) T = A T \frac{ \mathrm{d}Ax}{\mathrm{d}x} = \Big(\frac{ A \mathrm{d}(x)^T}{\mathrm{d}x} \Big)^T= \Big(A I\Big)^T = A^T dxdAx=(dxAd(x)T)T=(AI)T=AT
还有下面这样的形式,感觉可以把分母的转置传递给分子。(根据结论,猜的,不过分母是行向量这种情况有点奇葩,应该也不会这么去定义吧。)
d A x d x T = A d ( x ) T d x = A I = A \frac{ \mathrm{d}Ax}{\mathrm{d}x^T} = \frac{ A \mathrm{d}(x)^T}{\mathrm{d}x}= A I = A dxTdAx=dxAd(x)T=AI=A
总结:个人认为,向量对于向量的导数其实主要还是看计算规则,统一了规则后,就能放心地使用公式了。(可能会有格式各样的规定,所以在推导的过程中选择一个规则,不能弄混了)

猜你喜欢

转载自blog.csdn.net/XindaBlack/article/details/103427426