机器学习中常用的矩阵求导

问题引入

首先以一个网上很多博文引用的例子来开篇,例子见下图
机器学习中常用的矩阵求导

问题初试

在了解向量和向量求导的时候,我看过以下一些公式:
机器学习中常用的矩阵求导
机器学习中常用的矩阵求导
首先Ax是个m维的列向量,它对x求偏导是个列向量对列向量求偏导的格式,所以可以套用上述公式(10),那么得到的是:
Axx=(a11x1+a12x2+ +a1nxn)x(a21x1+a22x2+ +a2nxn)x (am1x1+am2x2+ +amnxn)xm×1Axx=((a11x1+a12x2+ +a1nxn)x(a21x1+a22x2+ +a2nxn)x (am1x1+am2x2+ +amnxn)x)m×1Axx=((a11x1+a12x2+ +a1nxn)x(a21x1+a22x2+ +a2nxn)x (am1x1+am2x2+ +amnxn)x)m×1∂Ax∂x=⎛⎝⎜⎜⎜⎜⎜∂(a11x1+a12x2+⋯ +a1nxn)∂x∂(a21x1+a22x2+⋯ +a2nxn)∂x⋯ ∂(am1x1+am2x2+⋯ +amnxn)∂x⎞⎠⎟⎟⎟⎟⎟m×1∂Ax∂x=(∂(a11x1+a12x2+⋯ +a1nxn)∂x∂(a21x1+a22x2+⋯ +a2nxn)∂x⋯ ∂(am1x1+am2x2+⋯ +amnxn)∂x)m×1 \frac{\partial Ax}{\partial x}=\left(\begin{matrix}\frac{\partial (a_{11}x_{1}+a_{12}x_2+ \cdots\ +a_{1n}x_n)}{\partial x}\\\frac{\partial (a_{21}x_{1}+a_{22}x_2+ \cdots\ +a_{2n}x_n)}{\partial x}\\\cdots\ \\\frac{\partial (a_{m1}x_{1}+a_{m2}x_2+ \cdots\ +a_{mn}x_n)}{\partial x}\\\end{matrix}\right)_{m\times1}xAx=x1(a11x1+a12x2+ +a1nxn)x1(am1x1+am2x2+ +amnxn)xn(a11x1+a12x2+ +a1nxn)xn(am1x1+am2x2+ +amnxn)(mn)
这样最后得到的化简结果是一个m*n维的列向量和网上得到的答案AT不一致,那么我这个答案有没有错呢?讲道理按照公式来推应该也没有问题,然后看到了这篇文章:知乎链接。所以我按照公式推其实也没错,只是表现的形式不一样。(应该是把?)
那么怎么去得到AT这个答案呢?于是我就上网找资料以及向同学请教,找到了一个可能的答案:是因为布局方式的问题

布局方式

布局方式分分子布局和分母布局。
分子布局: 分子为 y 或者分母为 xT (即,分子为列向量或者分母为行向量)
分母布局: 分子为 yT 或者分母为 x (即,分子为行向量或者分母为列向量)

按照不同的布局方式,有几种情形,比如在分子布局方式下计算:标量/向量,向量/标量,向量/向量,标量/矩阵,矩阵/标量。

分子布局下

标量/向量(分母是向量,且是分子布局,则把分母的向量按照行向量铺开):
机器学习中常用的矩阵求导
向量/标量:(分子是向量,且是分子布局,则把分子按照列向量铺开)
机器学习中常用的矩阵求导
向量/向量:(分子分母都是向量,且是分子布局,则分子向量按照列向量铺开,分母向量按照行向量铺开):
机器学习中常用的矩阵求导
标量/矩阵(分子布局下,X矩阵是转置后铺开的):
机器学习中常用的矩阵求导

分母布局下

标量/向量(分母是向量,且是分母布局,则把分母的向量按照列向量铺开):
机器学习中常用的矩阵求导
向量/标量:(分子是向量,且是分母布局,则把分子按照行向量铺开):
机器学习中常用的矩阵求导
向量/向量:(分子分母都是向量,且是分母布局,则分子向量按照行向量铺开,分母向量按照列向量铺开):
机器学习中常用的矩阵求导
标量/矩阵(分母布局下,X矩阵无需转置,就是原矩阵):
机器学习中常用的矩阵求导

问题解决

那么回到我们刚开始引入的例子来:
机器学习中常用的矩阵求导
这里它这个答案得到AT应该是因为它采用的是分母布局。
那么下面我分别按照分母布局和分子布局来计算一遍它的答案。

分子布局下将分子看成列向量展开,分母看成行向量展开:

机器学习中常用的矩阵求导

分母布局下将分子看成行向量展开,分母看成列向量展开:

机器学习中常用的矩阵求导

以上博文信息是自己的一点点学习总结,实属抛砖引玉,有不对的地方麻烦各位不吝赐教。

参考博文:
https://blog.****.net/uncle_gy/article/details/78879131
https://blog.****.net/nomadlx53/article/details/50849941
https://blog.****.net/shouhuxianjian/article/details/46669365

总结:记住标量对向量的求

问题引入

首先以一个网上很多博文引用的例子来开篇,例子见下图
机器学习中常用的矩阵求导

问题初试

在了解向量和向量求导的时候,我看过以下一些公式:
机器学习中常用的矩阵求导
机器学习中常用的矩阵求导
首先Ax是个m维的列向量,它对x求偏导是个列向量对列向量求偏导的格式,所以可以套用上述公式(10),那么得到的是:
Axx=(a11x1+a12x2+ +a1nxn)x(a21x1+a22x2+ +a2nxn)x (am1x1+am2x2+ +amnxn)xm×1Axx=((a11x1+a12x2+ +a1nxn)x(a21x1+a22x2+ +a2nxn)x (am1x1+am2x2+ +amnxn)x)m×1Axx=((a11x1+a12x2+ +a1nxn)x(a21x1+a22x2+ +a2nxn)x (am1x1+am2x2+ +amnxn)x)m×1∂Ax∂x=⎛⎝⎜⎜⎜⎜⎜∂(a11x1+a12x2+⋯ +a1nxn)∂x∂(a21x1+a22x2+⋯ +a2nxn)∂x⋯ ∂(am1x1+am2x2+⋯ +amnxn)∂x⎞⎠⎟⎟⎟⎟⎟m×1∂Ax∂x=(∂(a11x1+a12x2+⋯ +a1nxn)∂x∂(a21x1+a22x2+⋯ +a2nxn)∂x⋯ ∂(am1x1+am2x2+⋯ +amnxn)∂x)m×1 \frac{\partial Ax}{\partial x}=\left(\begin{matrix}\frac{\partial (a_{11}x_{1}+a_{12}x_2+ \cdots\ +a_{1n}x_n)}{\partial x}\\\frac{\partial (a_{21}x_{1}+a_{22}x_2+ \cdots\ +a_{2n}x_n)}{\partial x}\\\cdots\ \\\frac{\partial (a_{m1}x_{1}+a_{m2}x_2+ \cdots\ +a_{mn}x_n)}{\partial x}\\\end{matrix}\right)_{m\times1}xAx=x1(a11x1+a12x2+ +a1nxn)x1(am1x1+am2x2+ +amnxn)xn(a11x1+a12x2+ +a1nxn)xn(am1x1+am2x2+ +amnxn)(mn)
这样最后得到的化简结果是一个m*n维的列向量和网上得到的答案AT不一致,那么我这个答案有没有错呢?讲道理按照公式来推应该也没有问题,然后看到了这篇文章:知乎链接。所以我按照公式推其实也没错,只是表现的形式不一样。(应该是把?)
那么怎么去得到AT这个答案呢?于是我就上网找资料以及向同学请教,找到了一个可能的答案:是因为布局方式的问题

布局方式

布局方式分分子布局和分母布局。
分子布局: 分子为 y 或者分母为 xT (即,分子为列向量或者分母为行向量)
分母布局: 分子为 yT 或者分母为 x (即,分子为行向量或者分母为列向量)

按照不同的布局方式,有几种情形,比如在分子布局方式下计算:标量/向量,向量/标量,向量/向量,标量/矩阵,矩阵/标量。

分子布局下

标量/向量(分母是向量,且是分子布局,则把分母的向量按照行向量铺开):
机器学习中常用的矩阵求导
向量/标量:(分子是向量,且是分子布局,则把分子按照列向量铺开)
机器学习中常用的矩阵求导
向量/向量:(分子分母都是向量,且是分子布局,则分子向量按照列向量铺开,分母向量按照行向量铺开):
机器学习中常用的矩阵求导
标量/矩阵(分子布局下,X矩阵是转置后铺开的):
机器学习中常用的矩阵求导

分母布局下

标量/向量(分母是向量,且是分母布局,则把分母的向量按照列向量铺开):
机器学习中常用的矩阵求导
向量/标量:(分子是向量,且是分母布局,则把分子按照行向量铺开):
机器学习中常用的矩阵求导
向量/向量:(分子分母都是向量,且是分母布局,则分子向量按照行向量铺开,分母向量按照列向量铺开):
机器学习中常用的矩阵求导
标量/矩阵(分母布局下,X矩阵无需转置,就是原矩阵):
机器学习中常用的矩阵求导

问题解决

那么回到我们刚开始引入的例子来:
机器学习中常用的矩阵求导
这里它这个答案得到AT应该是因为它采用的是分母布局。
那么下面我分别按照分母布局和分子布局来计算一遍它的答案。

分子布局下将分子看成列向量展开,分母看成行向量展开:

机器学习中常用的矩阵求导

分母布局下将分子看成行向量展开,分母看成列向量展开:

机器学习中常用的矩阵求导

以上博文信息是自己的一点点学习总结,实属抛砖引玉,有不对的地方麻烦各位不吝赐教。

参考博文:
https://blog.****.net/uncle_gy/article/details/78879131
https://blog.****.net/nomadlx53/article/details/50849941
https://blog.****.net/shouhuxianjian/article/details/46669365

总结:记住标量对向量的求