矩阵,向量求导-求导布局,表格查找

矩阵,向量求导(Matrix calculus)

Not to be confused with geometric calculus or vector calculus.

0.约定

  • 标量用 x , y x,y x,y小写字母表示。
  • 向量用 x , y \mathbf{x},\mathbf{y} x,y小写粗体字母表示。(默认为列向量 x [ n ∗ 1 ] \mathbf{x}_{[n*1]} x[n1] n n n维; y [ m ∗ 1 ] \mathbf{y}_{[m*1]} y[m1] m m m维)。
  • 矩阵用 X , Y , A \mathbf{X},\mathbf{Y},\mathbf{A} XY,A大写粗体字母表示。可能表示 m ∗ n m*n mn维,也可能是 n ∗ m n*m nm维,也可能是 p ∗ q p*q pq维度。

1.目标

  • 理清标量,向量和矩阵之间的求导关系。

    image-20200519180458629

2.完整的求导表格

完整表格

表格中的向量均表示列向量!
image-20200519180949046

1.布局说明

前提说明:若 x x x为向量,则默认 x x x为列向量, x T x^T xT为行向量。

分子布局(Numerator-layout)
  • 分子布局: 分子列向量 y y y,分母为行向量 x T x^T xT (即,分子为列向量或者分母为行向量)。
分母布局(Denominator-layout)
  • 分母布局: 分子为行向量 y T y^T yT,分母为 列向量 x x x (即,分子为行向量或者分母为列向量)。
注意:可以各选择一种布局来求导,但是对于某一种求导类型,不能同时使用分子布局和分母布局求导

2.举个例子

分子布局例子

image-20200519193243133

image-20200519193305752

说明:上述公式依次表示在分子布局下, 标 量 向 量 , 向 量 标 量 , 向 量 向 量 , 标 量 矩 阵 , 矩 阵 标 量 \frac{标量}{向量},\frac{向量}{标量},\frac{向量}{向量},\frac{标量}{矩阵},\frac{矩阵}{标量} ,

  • 其中 y \mathbf{y} y是列向量( n ∗ 1 n*1 n1), x \mathbf{x} x是列向量( m ∗ 1 m*1 m1), X \mathbf{X} X是矩阵( p ∗ q p*q pq), Y Y Y是矩阵( m ∗ n m*n mn)。
  1. 标量/向量(分母是向量,且是分子布局,则把分母的向量按照行向量铺开)
  2. 向量/标量:(分子是向量,且是分子布局,则把分子按照列向量铺开)
  3. 向量/向量:(分子分母都是向量,且是分子布局,则分子向量按照列向量铺开,分母向量按照行向量铺开)【雅克比式】
  4. 标量/矩阵(分子布局下, X \mathbf{X} X矩阵是转置后铺开的)
  5. 矩阵/标量(分子布局下, Y \mathbf{Y} Y矩阵是原型铺开)
分母布局例子

image-20200519193415990

说明:上述公式依次表示在分母布局下, 标 量 向 量 , 向 量 标 量 , 向 量 向 量 , 标 量 矩 阵 \frac{标量}{向量},\frac{向量}{标量},\frac{向量}{向量},\frac{标量}{矩阵}

  • 其中 y \mathbf{y} y是列向量( n ∗ 1 n*1 n1), x \mathbf{x} x是列向量( m ∗ 1 m*1 m1), X \mathbf{X} X是矩阵( p ∗ q p*q pq
  • 分母中没有 矩 阵 标 量 \frac{矩阵}{标量}
  1. 标量/向量(分母是向量,且是分母布局,则把分母的向量按照列向量铺开)
  2. 向量/标量:(分子是向量,且是分母布局,则把分子按照行向量铺开)
  3. 向量/向量:(分子分母都是向量,且是分母布局,则分子向量按照行向量铺开,分母向量按照列向量铺开)【梯度矩阵】
  4. 标量/矩阵(分母布局下,X矩阵无需转置,就是原始矩阵)

3.表格细化

  • 实际操作时可以参考以下。
1.Vector-by-vector

image-20200519195134113

2.Scalar-by-vector

image-20200519200905677

image-20200519201007632

3.Vector-by-scalar

image-20200519195249500

4.Scalar-by-matrix
  • 直接维基https://en.wikipedia.org/wiki/Matrix_calculus
5.Matrix-by-scalar
  • 直接维基https://en.wikipedia.org/wiki/Matrix_calculus
6.Scalar-by-scalar
  • 直接维基https://en.wikipedia.org/wiki/Matrix_calculus

3.实际操作

  • 参考自:https://blog.csdn.net/nomadlx53/article/details/50849941

举一个线性模型的例子

∂ ( y − X w ) T ( y − X w ) ∂ w \frac{\partial(y-Xw)^{T}(y-Xw)}{\partial w} w(yXw)T(yXw)

w , y w,y w,y均为列向量, w w w ( n ∗ 1 ) (n*1) (n1), y y y ( m ∗ 1 ) (m*1) (m1) X X X为矩阵,为 ( m ∗ n ) (m*n) (mn).

  • 分析:该式属于 标 量 向 量 \frac{标量}{向量} ,目标是得出结果为列向量,所以更加上述的总表,整体采用分母布局。

  • 展开
    ∂ ∂ w ( y T − w T X T ) ( y − X w ) = ∂ ∂ w ( y T y − y T X w − w T X T y + w T X T X w ) = ∂ ∂ w ( y T y ) − ∂ ∂ w ( y T X w ) − ∂ ∂ w ( w T X T y ) + ∂ ∂ w ( w T X T X w ) \frac{\partial}{\partial w}(y^T-w^TX^T)(y-Xw)=\frac{\partial}{\partial w}(y^Ty-y^TXw-w^TX^Ty+w^TX^TXw)\\=\frac{\partial}{\partial w}(y^Ty)-\frac{\partial}{\partial w}(y^TXw)-\frac{\partial}{\partial w}(w^TX^Ty)+\frac{\partial}{\partial w}(w^TX^TXw) w(yTwTXT)(yXw)=w(yTyyTXwwTXTy+wTXTXw)=w(yTy)w(yTXw)w(wTXTy)+w(wTXTXw)

    1. ∂ ∂ w ( y T y ) \frac{\partial}{\partial w}(y^Ty) w(yTy)
      • 查上述的Scalar-by-vector identities,在表格中匹配形式到第1行的位置,因为分母为列向量,因此为分母布局,对应的求导结果就是 0 0 0
    2. ∂ ∂ w ( y T X w ) \frac{\partial}{\partial w}(y^TXw) w(yTXw)
      • 查上述的Scalar-by-vector identities表格,在表格中匹配形式到第11行的位置,对应的求导结果是 X T y X^Ty XTy
    3. ∂ ∂ w ( w T X T y ) \frac{\partial}{\partial w}(w^TX^Ty) w(wTXTy)
      • 查上述的Scalar-by-vector identities表格,在表格中匹配形式到第10行的位置,对应的求导结果是 X T y X^Ty XTy
    4. ∂ ∂ w ( w T X T X w ) \frac{\partial}{\partial w}(w^TX^TXw) w(wTXTXw)
      • 查上述的Scalar-by-vector identities表格,在表格中匹配形式到第13行的位置,对应的结果为 2 X T X w 2X^TXw 2XTXw
  • 合并:
    ∂ ( y − X w ) T ( y − X w ) ∂ w = 0 − X T y − X T y + 2 X T X w = − 2 X T ( y − X w ) = 2 X T ( X w − y ) \frac{\partial(y-Xw)^{T}(y-Xw)}{\partial w}=0-X^Ty-X^Ty+2X^TXw=-2X^T(y-Xw)=2X^T(Xw-y) w(yXw)T(yXw)=0XTyXTy+2XTXw=2XT(yXw)=2XT(Xwy)

4.习惯上使用混合布局

  • 向量均以列向量表示。

  • 标 量 向 量 , 标 量 矩 阵 \frac{标量}{向量},\frac{标量}{矩阵} ,使用分母布局,保证求导完之后结果是列向量。

  • 向 量 标 量 , 矩 阵 标 量 \frac{向量}{标量},\frac{矩阵}{标量} ,使用分子布局,保证求导完之后结果是列向量。

  • 向 量 向 量 \frac{向量}{向量} 使用雅克比式(Jaocibian)。

  • 总结

    • 矢量(向量或矩阵)在分子上,标量在分母上,采用分子布局
    • 矢量(向量或矩阵)在分母上,标量在分子上,采用分母布局
    • 向量在分子上,也在分母上使用雅克比式(Jaocibian)。

    image-20200519204515758

    说明, y \mathbf{y} y是(m*1)的列向量, x \mathbf{x} x是(n*1)的列向量, y x \frac{\mathbf{y}}{\mathbf{x}} xy的结果是(m*n)大小的矩阵。

  • 详细参见:https://www.cnblogs.com/pinard/p/10750718.html

    image-20200519204911807

矩阵向量求导的链式法则

1. 一般步骤

  1. 按照标量的链式法则写出链式关系。(预想布局方式(采用一种))
  2. 对于前后导数相乘的行列上的不匹配,进行调整。(不是分子上加转置,就是分母上加转置),矩阵前后可以相乘。
  3. 对于求导的每一项,简单的可以直接写出,不能直接写出的,进行查表。

2.深入了解和推导

  • 如果想深入了解和推导每一步的过程:

    参见:https://www.cnblogs.com/pinard/p/10750718.html【关于求导的合辑】,这个博主是个大佬!

总结

1.个人操作

  1. 首先掌握布局方式
  2. 能根据表(不一定都记住),写出求导结果
  3. 链式法则,可能会修改前后关系,调整符号表示
  4. 想一步步推导出来,参见刘建平大佬https://www.cnblogs.com/pinard/p/10750718.html

2.其他

  • 网上关于这方面的教材有:
    1. 张贤达《矩阵分析与应用》
    2. 《matrix vector derivatives for machine learning》
    3. 《The Matrix Cookbook》
    4. https://www.zhihu.com/question/25399811【知乎上关于矩阵求导教材的讨论】
    5. http://psi.toronto.edu/
  • 知乎:https://pan.百度.com/s/1jGFBSNk#list/path=%2F【来自知乎的一个分享,把百度换成baidu即可】

参考:

https://en.wikipedia.org/wiki/Matrix_calculus

https://www.cnblogs.com/pinard/p/10750718.html【合辑】

https://blog.csdn.net/lcczzu/article/details/89160371

https://www.pianshen.com/article/5516168061/

https://blog.csdn.net/nomadlx53/article/details/50849941

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值