[zt]矩阵求导公式

简介:

今天推导公式,发现居然有对矩阵的求导,狂汗--完全不会。不过还好网上有人总结了。吼吼,赶紧搬过来收藏备份。

基本公式:
Y = A * X --> DY/DX = A'
Y = X * A --> DY/DX = A
Y = A' * X * B --> DY/DX = A * B'
Y = A' * X' * B --> DY/DX = B * A'

1. 矩阵Y对标量x求导:

相当于每个元素求导数后转置一下,注意M×N矩阵求导后变成N×M了

Y = [y(ij)] --> dY/dx = [dy(ji)/dx]

2. 标量y对列向量X求导:

注意与上面不同,这次括号内是求偏导,不转置,对N×1向量求导后还是N×1向量

y = f(x1,x2,..,xn) --> dy/dX = (Dy/Dx1,Dy/Dx2,..,Dy/Dxn)'

3. 行向量Y'对列向量X求导:

注意1×M向量对N×1向量求导后是N×M矩阵。

将Y的每一列对X求偏导,将各列构成一个矩阵。

重要结论:

dX'/dX = I

d(AX)'/dX = A'

4. 列向量Y对行向量X’求导:

转化为行向量Y’对列向量X的导数,然后转置。

注意M×1向量对1×N向量求导结果为M×N矩阵。

dY/dX' = (dY'/dX)'

5. 向量积对列向量X求导运算法则:

注意与标量求导有点不同。

d(UV')/dX = (dU/dX)V' + U(dV'/dX)

d(U'V)/dX = (dU'/dX)V + (dV'/dX)U'

重要结论:

d(X'A)/dX = (dX'/dX)A + (dA/dX)X' = IA + 0X' = A

d(AX)/dX' = (d(X'A')/dX)' = (A')' = A

d(X'AX)/dX = (dX'/dX)AX + (d(AX)'/dX)X = AX + A'X

6. 矩阵Y对列向量X求导:

将Y对X的每一个分量求偏导,构成一个超向量。

注意该向量的每一个元素都是一个矩阵。

7. 矩阵积对列向量求导法则:

d(uV)/dX = (du/dX)V + u(dV/dX)

d(UV)/dX = (dU/dX)V + U(dV/dX)

重要结论:

d(X'A)/dX = (dX'/dX)A + X'(dA/dX) = IA + X'0 = A

8. 标量y对矩阵X的导数:

类似标量y对列向量X的导数,

把y对每个X的元素求偏导,不用转置。

dy/dX = [ Dy/Dx(ij) ]

重要结论:

y = U'XV = ΣΣu(i)x(ij)v(j) 于是 dy/dX = [u(i)v(j)] = UV'

y = U'X'XU 则 dy/dX = 2XUU'

y = (XU-V)'(XU-V) 则 dy/dX = d(U'X'XU - 2V'XU + V'V)/dX = 2XUU' - 2VU' + 0 = 2(XU-V)U'

9. 矩阵Y对矩阵X的导数:

将Y的每个元素对X求导,然后排在一起形成超级矩阵。

10.乘积的导数

d(f*g)/dx=(df'/dx)g+(dg/dx)f'

结论

d(x'Ax)=(d(x'')/dx)Ax+(d(Ax)/dx)(x'')=Ax+A'x   (注意:''是表示两次转置)

比较详细点的如下:

 

 矩阵求导公式【转】


矩阵求导公式【转】

矩阵求导公式【转】

矩阵求导公式【转】

矩阵求导公式【转】

 http://lzh21cen.blog.163.com/blog/static/145880136201051113615571/

http://hi.baidu.com/wangwen926/blog/item/eb189bf6b0fb702b720eec94.html

其他参考:

Contents

  • Notation
  • Derivatives of Linear Products
  • Derivatives of Quadratic Products

Notation

  • d/dx (y) is a vector whose (i) element is dy(i)/dx
  • d/dx (y) is a vector whose (i) element is dy/dx(i)
  • d/dx (yT) is a matrix whose (i,j) element is dy(j)/dx(i)
  • d/dx (Y) is a matrix whose (i,j) element is dy(i,j)/dx
  • d/dX (y) is a matrix whose (i,j) element is dy/dx(i,j)

Note that the Hermitian transpose is not used because complex conjugates are not analytic.

In the expressions below matrices and vectors ABC do not depend on X.

Derivatives of Linear Products

  • d/dx (AYB) =A * d/dx (Y) * B
    • d/dx (Ay) =A * d/dx (y)
  • d/dx (xTA) =A
    • d/dx (xT) =I
    • d/dx (xTa) = d/dx (aTx) = a
  • d/dX (aTXb) = abT
    • d/dX (aTXa) = d/dX (aTXTa) = aaT
  • d/dX (aTXTb) = baT
  • d/dx (YZ) =Y * d/dx (Z) + d/dx (Y) * Z

Derivatives of Quadratic Products

  • d/dx (Ax+b)TC(Dx+e) = ATC(Dx+e) + DTCT(Ax+b)
    • d/dx (xTCx) = (C+CT)x
      • [C: symmetric]: d/dx (xTCx) = 2Cx
      • d/dx (xTx) = 2x
    • d/dx (Ax+b)T (Dx+e) = AT (Dx+e) + DT (Ax+b)
      • d/dx (Ax+b)T (Ax+b) = 2AT (Ax+b)
    • [C: symmetric]: d/dx (Ax+b)TC(Ax+b) = 2ATC(Ax+b)
  • d/dX (aTXTXb) = X(abT + baT)
    • d/dX (aTXTXa) = 2XaaT
  • d/dX (aTXTCXb) = CTXabT + CXbaT
    • d/dX (aTXTCXa) = (C + CT)XaaT
    • [C:Symmetric] d/dX (aTXTCXa) = 2CXaaT
  • d/dX ((Xa+b)TC(Xa+b)) = (C+CT)(Xa+b)aT

Derivatives of Cubic Products

  • d/dx (xTAxxT) = (A+AT)xxT+xTAxI

Derivatives of Inverses

  • d/dx (Y-1) = -Y-1d/dx (Y)Y-1

Derivative of Trace

Note: matrix dimensions must result in an n*n argument for tr().

  • d/dX (tr(X)) = I
  • d/dX (tr(Xk)) =k(Xk-1)T
  • d/dX (tr(AXk)) = SUMr=0:k-1(XrAXk-r-1)T
  • d/dX (tr(AX-1B)) = -(X-1BAX-1)T
    • d/dX (tr(AX-1)) =d/dX (tr(X-1A)) = -X-TATX-T
  • d/dX (tr(ATXBT)) = d/dX (tr(BXTA)) = AB
    • d/dX (tr(XAT)) = d/dX (tr(ATX)) =d/dX (tr(XTA)) = d/dX (tr(AXT)= A
  • d/dX (tr(AXBXT)) = ATXBT + AXB
    • d/dX (tr(XAXT)) = X(A+AT)
    • d/dX (tr(XTAX)) = XT(A+AT)
    • d/dX (tr(AXTX)) = (A+AT)X
  • d/dX (tr(AXBX)) = ATXTBT + BTXTAT
  • [C:symmetric] d/dX (tr((XTCX)-1A) = d/dX (tr(A (XTCX)-1) = -(CX(XTCX)-1)(A+AT)(XTCX)-1
  • [B,C:symmetric] d/dX (tr((XTCX)-1(XTBX)) = d/dX (tr( (XTBX)(XTCX)-1) = -2(CX(XTCX)-1)XTBX(XTCX)-1 + 2BX(XTCX)-1

Derivative of Determinant

Note: matrix dimensions must result in an n*n argument for det().

  • d/dX (det(X)) = d/dX (det(XT)) = det(X)*X-T
    • d/dX (det(AXB)) = det(AXB)*X-T
    • d/dX (ln(det(AXB))) = X-T
  • d/dX (det(Xk)) = k*det(Xk)*X-T
    • d/dX (ln(det(Xk))) = kX-T
  • [Real] d/dX (det(XTCX)) = det(XTCX)*(C+CT)X(XTCX)-1
    • [CReal,Symmetric] d/dX (det(XTCX)) = 2det(XTCX)* CX(XTCX)-1
  • [CReal,Symmetricc] d/dX (ln(det(XTCX))) = 2CX(XTCX)-1

Jacobian

If y is a function of x, then dyT/dx is the Jacobian matrix of y with respect to x.

Its determinant, |dyT/dx|, is the Jacobian of y with respect to x and represents the ratio of the hyper-volumes dy and dx. The Jacobian occurs when changing variables in an integration: Integral(f(y)dy)=Integral(f(y(x)) |dyT/dx| dx).

Hessian matrix

If f is a function of x then the symmetric matrix d2f/dx2 = d/dxT(df/dx) is the Hessian matrix of f(x). A value of x for which df/dx = 0 corresponds to a minimum, maximum or saddle point according to whether the Hessian is positive definite, negative definite or indefinite.

  • d2/dx2 (aTx) = 0
  • d2/dx2 (Ax+b)TC(Dx+e) = ATCD + DTCTA
    • d2/dx2 (xTCx) = C+CT
      • d2/dx2 (xTx) = 2I
    • d2/dx2 (Ax+b)T (Dx+e) = ATD + DTA
      • d2/dx2 (Ax+b)T (Ax+b) = 2ATA
    • [C: symmetric]: d2/dx2 (Ax+b)TC(Ax+b) = 2ATCA  
http://www.psi.toronto.edu/matrix/calculus.html

http://www4.ncsu.edu/~pfackler/MatCalc.pdf

本文转自博客园Grandyang的博客,原文链接:[zt]矩阵求导公式

,如需转载请自行联系原博主。

相关文章
|
存储 C语言
关于如何解决C语言中缓冲区溢出问题
关于如何解决C语言中缓冲区溢出问题
503 0
clion中cpp文件显示This file does not belong to any project ,code insight features might not work【解决方案】
clion中cpp文件显示This file does not belong to any project ,code insight features might not work【解决方案】
clion中cpp文件显示This file does not belong to any project ,code insight features might not work【解决方案】
|
11月前
|
人工智能 自然语言处理 搜索推荐
《AI加持,让鸿蒙元宇宙交互自然度飙升》
在鸿蒙元宇宙中,人工智能通过多模态感知、个性化自适应、智能虚拟角色互动、实时场景优化及内容生成与推荐等技术,大幅提升用户与虚拟环境的交互自然度。它不仅使设备能精准捕捉用户的视觉、听觉、触觉信息,还通过学习用户行为提供个性化的体验,让虚拟角色更智能地回应情感需求,优化虚拟场景并推荐个性化内容,为用户带来沉浸式、贴心的虚拟世界体验。
210 10
|
11月前
|
机器学习/深度学习 人工智能 云计算
与阿里合作项目荣获2024年度教育部产学合作协同育人项目优秀案例
该项目强调利用阿里云计算有限公司的低代码开发平台和算力资源,开发创新性的教学案例,以支持机器学习和深度学习等前沿技术课程的教学和实验。项目部分成果纳入了即将出版的《深度学习实战案例》教材中,该教材由人民邮电出版社出版。
556 10
|
数据采集 测试技术 API
python爬虫之app爬取-微信朋友圈
搭建appium环境,appium基本使用,API操作等等
595 0
|
Java
Java访问外网图片地址时,如何添加代理?
【10月更文挑战第14天】Java访问外网图片地址时,如何添加代理?
344 2
|
机器学习/深度学习 算法 计算机视觉
线性回归 正则项(惩罚项)原理、正则项的分类与Python代码的实现
线性回归 正则项(惩罚项)原理、正则项的分类与Python代码的实现
|
存储 安全 编译器
【C++】类的六大默认成员函数及其特性(万字详解)
【C++】类的六大默认成员函数及其特性(万字详解)
217 3
|
人工智能 程序员 开发者
《深入浅出DPDK》—第2章2.5节Cache预取
以上章节讲到了多种和Cache相关的技术,但是事实上,Cache对于绝大多数程序员来说都是透明不可见的。程序员在编写程序时不需要关心是否有Cache的存在,有几级Cache,每级Cache的大小是多少;不需要关心Cache采取何种策略将指令和数据从内存中加载到Cache中;也不需要关心Cache何时将处理完毕的数据写回到内存中。
5066 0
|
程序员 编译器 C语言
【C语言】动态内存管理(malloc,free,calloc,realloc)-- 详解
【C语言】动态内存管理(malloc,free,calloc,realloc)-- 详解