在各类机器学习和深度学习算法的推导过程中,尤其是通过损失函数求解参数最优解过程中,经常用到向量矩阵的求导。从本质上讲,向量矩阵求导就是将多元标量函数求导按照一定的布局排列为向量或矩阵。

按照求导中自变量和因变量的关系,标量、向量、矩阵可排列组合为9种组合(见下表)。本文仅涉及标量与向量和矩阵,向量与向量的五种求导。而矩阵和向量间的混合求导不做涉及。

自变量/因变量 标量y 向量? 矩阵?
标量? ∂?/∂? ∂?/∂? ∂?/∂?
向量? ∂?/∂? ∂?/∂? ∂?/∂?
矩阵? ∂?/∂? ∂?/∂? ∂?/∂?

一、求导布局

对向量矩阵求导结果进行布局的统一。常见有的分子布局和分母布局两种,两者之间互为转置:

分子布局:求导结果维度主要参考分子。

分母布局:求导结果维度主要参考分母。

若分母或分子维度无法确定,则取分子或分母分布的转置,如列向量与标量求导,结果按分母布局,应为行向量

向量和向量导数的布局定义:m维列向量?对n维列向量?求导,分子布局,则矩阵的第一个维度以分子为准(m×nm\times nm×n),常称为雅可比矩阵;分母布局,则矩阵的第一个维度以分母为准(n×mn\times mn×m),常称为梯度矩阵。

混合布局:一种默认的分子或分布布局。标量对向量或矩阵求导,按照分母布局;向量或矩阵对标量求导,按照分子布局;向量对向量求导,以雅可比矩阵(即分子布局)为主。

在看推导过程中经常出现AAA或ATA^TAT的表达,只是布局方式不一样。

二、定义法直接求解

即展开成多元函数对某个变量的求导,然后写成向量的形式。

三、标量对向量求导的基本法则

(1)常量对向量的求导结果为0。
(2)线性法则:如果?,?都是实值函数,c1c_1c1​,c2c_2c2​为常数,则:

(3)乘法法则,如果?,?都是实值函数(注意,这点必须满足),则:

(4)除法法则,如果?,?都是实值函数,且?(?)≠0,则:

四、微分法求导

微分法特别适用于矩阵?经加减乘法、逆、行列式、逐元素函数等运算构成的标量函数?的求导。其基本步骤为:

(1)使用相应的运算法则对?求微分;

(2)微分等式两边取迹tr,并对等式右边项进行变换,使??位于迹内最右侧

(3)对??左侧项取转置,即为所求导数

4.1 矩阵迹的基本属性

1)∑i∑jAijBij=tr(ATB)\sum\limits_i\sum\limits_j\boldsymbol A_{ij}\boldsymbol B_{ij}=tr(\boldsymbol {A^TB})i∑​j∑​Aij​Bij​=tr(ATB)

2)标量的迹等于其子集tr(x)=xtr(x)=xtr(x)=x

3)矩阵转置迹不变tr(A)=tr(AT)tr(\boldsymbol A)=tr(\boldsymbol A^T)tr(A)=tr(AT)

4)转置同维矩阵(A,BT)(\boldsymbol A,\boldsymbol B^T)(A,BT)的交换率:tr(AB)=tr(BA)tr(\boldsymbol A\boldsymbol B)=tr(\boldsymbol B\boldsymbol A)tr(AB)=tr(BA)

5)同维矩阵的加减法:tr(A±B)=tr(A)±tr(B)tr(\boldsymbol A\pm\boldsymbol B)=tr(\boldsymbol A)\pm tr(\boldsymbol B)tr(A±B)=tr(A)±tr(B)

6)同维三个矩阵的乘法和迹交换:tr((A⊙B)TC)tr((\boldsymbol A\odot\boldsymbol B)^T\boldsymbol C)tr((A⊙B)TC)=tr(AT(B⊙C))tr(\boldsymbol A^T(\boldsymbol B\odot\boldsymbol C))tr(AT(B⊙C))

式中⊙\odot⊙为哈达马乘积,即逐元素乘积。

7)迹函数求导:∂tr(AB)∂A=BT\frac{\partial tr(\boldsymbol{AB})}{\partial \boldsymbol A}=\boldsymbol B^T∂A∂tr(AB)​=BT,∂tr(AB)∂B=AT\frac{\partial tr(\boldsymbol{AB})}{\partial \boldsymbol B}=\boldsymbol A^T∂B∂tr(AB)​=AT
可由d(tr(AB))=tr(dAB)=tr(AdB)+tr(BdA)d(tr(\boldsymbol{AB}))=tr(d\boldsymbol{AB})=tr(\boldsymbol Ad\boldsymbol B)+tr(\boldsymbol Bd\boldsymbol A)d(tr(AB))=tr(dAB)=tr(AdB)+tr(BdA)推导得到

4.2 向量矩阵微分的写法

向量微分:
矩阵微分:

可见,标量函数对向量或矩阵的求导可转换为:微分取迹后迹内自变量前系数项的转置

4.3 矩阵微分的性质

微分加减法:d(X±Y)=dX±dYd(\boldsymbol X\pm\boldsymbol Y)=d\boldsymbol X\pm d\boldsymbol Yd(X±Y)=dX±dY

微分乘法:d(XY)=XdY+YdXd(\boldsymbol{XY})=\boldsymbol Xd\boldsymbol Y+\boldsymbol Yd\boldsymbol Xd(XY)=XdY+YdX

微分转置:d(XT)=(dX)Td(\boldsymbol X^T)=(d\boldsymbol X)^Td(XT)=(dX)T

微分的迹:d(trX)=tr(dX)d(tr\boldsymbol X)=tr(d\boldsymbol X)d(trX)=tr(dX)

微分哈达马乘积:d(X⊙Y)=X⊙dY+Y⊙dXd(\boldsymbol X\odot\boldsymbol Y)=\boldsymbol X\odot d\boldsymbol Y+\boldsymbol Y \odot d\boldsymbol Xd(X⊙Y)=X⊙dY+Y⊙dX

逐元素求导:dσ(X)=σ′(X)dXd\sigma(\boldsymbol X)=\sigma'(\boldsymbol X)d\boldsymbol Xdσ(X)=σ′(X)dX

逆矩阵微分:dX−1=−X−1dXX−1d\boldsymbol X^{-1}=-\boldsymbol X^{-1}\boldsymbol dX\boldsymbol X^{-1}dX−1=−X−1dXX−1

行列式微分:d∣X∣=∣X∣tr(X−1dX)d|\boldsymbol X|=|\boldsymbol X|tr(\boldsymbol X^{-1}d\boldsymbol X)d∣X∣=∣X∣tr(X−1dX)

五、链式求导法则

链式求导法则可用于向量对向量、标量对向量的求导等场景

5.1 向量对向量求导的链式法则

对于向量间关系,?→?→?,其链式求导表达式可以表示为:

∂?/∂?=∂?/∂?*∂?/∂?

5.2 标量对多个向量恩链式法则

对于向量到标量的关系,y1\boldsymbol y_1y1​→y2\boldsymbol y_2y2​→…→yn\boldsymbol y_nyn​→?,则其链式求导表达式可以表示为:

5.3 标量对多个矩阵的链式求导法则

对于矩阵到标量的关系,X→Y→…z,其链式求导表达式可以表示为:

∂z∂Xij=∑k,l∂z∂Ykl∂Ykl∂Xij=tr((∂z∂Y)T∂Y∂Xij)\frac{\partial z}{\partial \boldsymbol X_{ij}}=\sum\limits_{k,l}\frac{\partial z}{\partial \boldsymbol Y_{kl}}\frac{\partial \boldsymbol Y_{kl}}{\partial \boldsymbol X_{ij}}=tr((\frac{\partial z}{\partial \boldsymbol Y})^T\frac{\partial \boldsymbol Y}{\partial \boldsymbol X_{ij}})∂Xij​∂z​=k,l∑​∂Ykl​∂z​∂Xij​∂Ykl​​=tr((∂Y∂z​)T∂Xij​∂Y​)

若矩阵间为线性关系,则改链式求导表达式可进一步表示。

参考资料

刘建平 向量矩阵求导 系列文章

矩阵理论(三)向量矩阵的求导相关推荐

  1. 机器学习中的矩阵向量求导(五) 矩阵对矩阵的求导

    在矩阵向量求导前4篇文章中,我们主要讨论了标量对向量矩阵的求导,以及向量对向量的求导.本文我们就讨论下之前没有涉及到的矩阵对矩阵的求导,还有矩阵对向量,向量对矩阵求导这几种形式的求导方法. 本文所有求 ...

  2. 机器学习 标量、向量、矩阵的求导 PyTorch自动求导

    1 说明 本文是学习Dive into Deep Learning中相应内容做出的总结和一些实现代码,原文链接:矩阵计算. 2 求导 学习PyTorch的自动求导之前首先需要知道求导的过程. 注意:可 ...

  3. 笔记:矩阵行列式求导以及矩阵的逆的求导

    笔记:矩阵行列式求导以及矩阵的逆的求导 一.结论 二.矩阵的行列式求导 三.矩阵的逆的导数 一.结论 设A=(aij(t))n×nA=(a_{ij}(t))_{n\times n}A=(aij​(t) ...

  4. 矩阵乘以其矩阵转置求导-数学

    20210703 矩阵论 https://zhuanlan.zhihu.com/p/288541909?utm_source=wechat_session 矩阵运算法则 20210529 https: ...

  5. 标量、矢量、矩阵的求导归纳

    本文对标量.矢量.矩阵的求导概念和公式做简单归纳梳理,目的是帮助理解和记忆,不涉及具体推导过程.

  6. 向量和矩阵的求导公式

    ∇(wTx)=w\nabla(w^{T}x)=w ∇(wTx)=w ∇(xTAx)=(A+AT)x\nabla(x^{T}Ax)=(A+A^{T})x ∇(xTAx)=(A+AT)x ∇2(xTAx) ...

  7. 矩阵和矩阵转置求导公式

    ##推导公式时用到的矩阵求导 1.Y=A∗XY = A*XY=A∗X -->>dYdX=AT\frac{dY}{dX} = A^TdXdY​=AT 2.Y=X∗AY = X*AY=X∗A ...

  8. 神经网络反向传播的矩阵复合求导计算

    以前一直以为矩阵的复合求导和可微函数的链式求导是一样的,但是在推导神经网络梯度公式的时候往往会出现一些符号次序不对的问题,我这里借用吴恩达编程作业中给出的浅层神经网络的案例来计算反向传播的梯度.关于矩 ...

  9. 标量/向量/矩阵求导方法

    这篇博客源于在看论文时遇到了一个误差向量欧氏距离的求导,如下: 在看了一堆资料后得出以下结论: 这个结论是怎么来的呢?这就涉及标量/向量/矩阵的求导了.由于标量.向量都可以看做特殊的矩阵,因此就统称为 ...

  10. 机器学习中的矩阵向量求导(三) 矩阵向量求导之微分法

    在机器学习中的矩阵向量求导(二) 矩阵向量求导之定义法中,我们讨论了定义法求解矩阵向量求导的方法,但是这个方法对于比较复杂的求导式子,中间运算会很复杂,同时排列求导出的结果也很麻烦.因此我们需要其他的 ...

最新文章

  1. Oracle数据库导入导出命令!
  2. 【阿里云API】 阿里云API调用的若干说明
  3. 李永乐线性代数手写笔记-二次型
  4. Java虚拟机学习(1):体系结构 内存模型
  5. 个人工作室的网站开发规范V1.0
  6. 多少人受够了机器学习的锤,却连个决策树都说不出!
  7. 巧妙利用Mac标记,分类同类文件的技巧
  8. html科学计算器,html+css+js实现科学计算器
  9. 360桌面隐藏应用 android代码,360手机桌面上的隐藏应用怎么设置?
  10. envi 监督分类超详细过程
  11. Python金融大数据分析——第11章 统计学(2)投资组合优化 笔记
  12. es---elasticsearch-篇二:idea操作es,常用查询DSL
  13. 模型动态测试工具 TPT 18更多新特性——HiL测试、需求管理
  14. Unity 3D 中关于材质(Material)的具体说明
  15. Spring Boot Web应用程序中注册 Servlet 的方法实例
  16. java lisp,摸索JVM上的LISP[Java编程]
  17. matlab制作圆摆线动画
  18. 类与队列的简单实战爬虫
  19. 搭建DNS服务器做域名解析
  20. Android隐藏导航栏按键,Android如何控制导航栏单个按键的显隐状态

热门文章

  1. applet java_在浏览器中运行java applet
  2. CImage类进行图像处理1(基础篇)
  3. 编译原理(九)——递归下降法
  4. 测试电池损耗的软件运行原理,鲁大师电池损耗检测准确?鲁大师电池损耗检测原理解析...
  5. ISO9001\ISO14001\OHSAS18001三体系快速认证申报须知
  6. 数字孪生技术在智慧工厂中的应用,你知道多少?
  7. 怎么将几张pdf合并成一张_怎么把多个PDF合并成一个PDF?分享合并PDF文件最简单的方法...
  8. 绕过tp路由器管理密码_TP-LINK 无线路由器设置详解
  9. 东航建设漏洞管理平台的探索实践
  10. 一个简单的软件测试流程(附带流程详解)流程图