矩阵、向量都可以表示成张量的形式,向量是矩阵的特殊形式,按实际应用可分为标量对向量求导,标量对矩阵求导、向量对向量求导、矩阵对标量求导、矩阵对向量求导、矩阵对矩阵求导等,在深度学习的反向传播(BP)中所涉及求导不外乎以上几种形式,本篇结合实例分别介绍以上各种求导过程。

一、含标量的求导方式

标量指的是一个实数,可看成一维向量,含标量的求导方式情形分类两类,一类是矩阵、向量对标量求导,另一类是标量对向量、矩阵求导。

1.1、矩阵、向量对标量求导

这种情形下矩阵为函数矩阵,向量为函数向量,与数值型矩阵、向量不同,函数矩阵、函数向量中元素都是函数,例如有n行m列函数矩阵A,其中元素为一元变量x的函数,矩阵对标量x求导形式为:

显然形状与矩阵A一样,也是一个n行m列矩阵,再如y是一个n维列向量y=(y1,y2,y3,...yn)T,y对标量x求导形式为:

以上两个例子可以看出,矩阵、向量对标量求导的结果是与原矩阵、向量形状一样的矩阵或向量,矩阵对标量求导的典型应用是求解线性微分方程。

1.2、标量对矩阵、向量求导:方阵迹的使用

由于向量是特殊的矩阵,这种类型也可以统称为标量对矩阵求导,标量对矩阵求导在人工智能算法中很常见,在深度学习框架中,如pytorch、tensorflow要求损失函数的结果必须是一个实数,即标量,在反向传播时,第一层误差就是标量对向量或矩阵求导,然后再通过链式求导法则将第一层误差传播到其他层级神级元。如有多元函数y=f(x11,x12,...xnm),自变量xij是n行m列的函数矩阵x,则标量y对矩阵x求导为:

自变量x为向量时,求导过程与标量对矩阵一样,如有多元函数y=f(x1,x2,...xn),自变量x为n维列向量即x=(x1,x2,...xn)T,标量y对x的求导结果为:

标量对矩阵或向量求导,其结果是与自变量形状一样的矩阵或向量,该性质与刚才介绍的'矩阵、向量对标量求导'一样,单纯的标量对矩阵或向量求导很简单,实际应用中往往会有下面形式的标量对矩阵求导:

y=XTAX

其中y∈R,为标量,X为n维列向量,A为Rn*n方阵,如果套用定义求导上式就会复杂,针对标量对矩阵或向量求导,最好的解决方案是'迹'的使用,方阵A的迹用tr(A)表示,其数学意义为方阵A的对角线元素之和,对于两个形状一样的矩阵A和B,A、B∈Rn*m,他们内积可表示为<A,B>,<A,B>等于将两个矩阵位置相同的元素相乘之后再整体求和,公式如下:

            (1)

矩阵内积是一个实数,可以证明<A,B>=tr(ATB),即矩阵内积等于其中一个矩阵转置后与另一个矩阵相乘,新的矩阵是一个方阵C∈Rm*m,方阵C的迹等于A、B两个矩阵的内积,这里不提供证明过程,感兴趣的读者可以试一下,方阵C的对角线上的元素恰好是A、B两个矩阵相同位置元素相乘的结果,这与矩阵内积定义的运算结果一致,公式(1)可写成下面的等式:

    (2)

显然一个标量的迹等于标量本身a=tr(a),其他常用迹的性质有:

注意tr(AB)=tr(BA)并不是说迹有交换性,这称为迹的循环置换性,多个矩阵相乘时可想象为一个循环队列,最前面的被挤入队列尾部,其他的顺次向前移动,例如有:tr(ABC)=tr(BCA)=tr(CAB),但是tr(ABC)≠tr(BAC)。

由数学分析知识知,对于一个多元函数y=f(x1,x2,...,xn),其微分形式为:

     (3)

从之前分析可知,标量对矩阵、向量求导与原矩阵、向量形状是一样的,(3)式实质为求两个矩阵的内积,注意x都加粗,表示x是矩阵或向量,结合矩阵内积公式(2):,式(3)可写成:

   (4)

在求标量对矩阵求导时,如果能最终处理成(4)的形式就可以得到具体形式,也就得到了标量对矩阵、向量的求导结果,矩阵的微分运算有以下性质:

上面的公式中X、Y为矩阵,○符号代表两个矩阵逐元素相乘。再来看问题y=XTAX,求过程如下:

得到结果为:

对于标量的表达式是多个矩阵的加、减、乘、除的复合类型时,使用迹可以很快捷的求出导数,强调一点是,使用迹来求导必须是标量对矩阵、向量求导的情形。

二、向量对向量求导

    这种情形在深度学习的反向传播中也很常见,几乎所有的神经网络反向传播中都有向量对向量求导,向量分为行向量与列向量,通过引入分子布局和分母布局抵消这向量求导时的形式上的差异性,将表达式视为分子,视为分母,假设y是m维向量,x是n维向量,那么y中每个元素都是x各个元素的函数,例如有:

所以无论采用哪种布局,求导结果中必须有这些结果才有意义,分子布局会在列方向上先展开y向量:

然后再在行方向上展开x:

分子布局求导结果是一个m*n的矩阵,本质是雅克比矩阵(jaccobi矩阵)。当求导采用分母布局时,在列方向上首先展开x,然后在行方向上展开y:

余下文章链接 矩阵、向量求导

矩阵/向量/标量间相互求导相关推荐

  1. 向量转置的怎么求导_机器学习中的向量求导和矩阵求导

    在机器学习的各种关于向量或者矩阵的求导中,经常会出现各种需要转置或者不需要转置的地方,经常会看得人晕头转向.今天我对机器学习中关于这部分的常识性处理方法进行整理并记录下来方便大家参考. 一些约定 首先 ...

  2. 矩阵求导(标量对矢量求导)

    文章目录 前言 一.标量对向量求导 二.例子 1.y=wT∗xy = w^T*xy=wT∗x 2.y=xT∗wy = x^T * wy=xT∗w 2.y=xT∗An∗n∗xy = x^T * A_{n ...

  3. 线性代数之 矩阵求导(4)矩阵微分,迹与求导

    线性代数之 矩阵求导(4)迹与矩阵求导 前言 矩阵微分定义 矩阵微分计算法则 常矩阵 线性 乘积 转置 迹 通过矩阵微分进行求导 常用的矩阵微分 后记 前言 本次将记录如何进行矩阵求导(标量对矩阵). ...

  4. 向量二范数的求导问题

    现有目标函数: f(x)=12∥Ax−b∥22f(x)=\frac{1}{2} \parallel Ax-b \parallel_2^2 f(x)=21​∥Ax−b∥22​ 其中A∈RN×mA\in ...

  5. 机器之心最干的文章:机器学习中的矩阵、向量求导

    作者:七月 本文的目标读者是想快速掌握矩阵.向量求导法则的学习者,主要面向矩阵.向量求导在机器学习中的应用.因此,本教程而非一份严格的数学教材,而是希望帮助读者尽快熟悉相关的求导方法并在实践中应用.另 ...

  6. 机器学习中的线性代数之矩阵求导

    前面针对机器学习中基础的线性代数知识,我们做了一个常用知识的梳理.接下来针对机器学习公式推导过程中经常用到的矩阵求导,我们做一个详细介绍. 矩阵求导(Matrix Derivative)也称作矩阵微分 ...

  7. 【机器学习】汇总详解:矩阵基本知识以及矩阵求导

    1.矩阵的基本概念 1.1矩阵的迹(matrix trace) 存在方阵A=(aij)n×n,其主对角线上的所有元素的和,称为此方阵的迹,记作tr(A) tr(A)=a11+a22+--+ann tr ...

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

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

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

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

最新文章

  1. 简单实现ConfigurationManager.AppSettings[]效果存储系统变量
  2. [分享] 数学学术资源站点
  3. vs2019中如何创建qt项目_VS2019创建新项目居然没有.NET Core3.0的模板?
  4. 宇宙总统pascal程序
  5. Jenkins安装目录说明
  6. 使用wrapper将java程序注册程windows服务后不生效
  7. C++中size_t的学习
  8. 【软考】数据库系统工程师备考指南(一)
  9. 游戏设计的艺术:一本透镜的书——第十九章 世界包含着各种空间
  10. latex beamer 空一行_Beamer——基于LaTex的Slides制作
  11. pathrewrite不生效_Vue使用Proxy代理后仍无法生效的解决
  12. 践行网安,普惠河南——景安网络重磅网安公益项目加速推进中
  13. 如何正确的下载安装使用别人的laravel项目?
  14. 【计算机原理与接口技术(UNIX)⑱】——并行 I/O 接口 [ 芯片8255A ]
  15. java编程实现求回文数_Java编程之回文数
  16. FilterConfig.RegisterGlobalFilters 全局过滤器的用法
  17. 什么是超视频时代的用户体验法则?
  18. 【JavaScript】原生态兼容IE6的图片轮播
  19. 华三杯H3C 网络知识学习笔记(1)
  20. 英特尔与阿里巴巴共推以数据为中心的计算革新

热门文章

  1. kingbase之时间日期加减
  2. 动态规划算法04-最长递增子序列问题
  3. 安装sql server 2008 报错“检查 Microsoft Visual Studio 2008 的早期版本”失败的问题解
  4. 无法打开模块文件“C:\Users\fkg\AppData\Local\Temp\.NETFramework,Version=v4.5.AssemblyAttributes.vb”系统找不到指定文件
  5. Hibernate安装教程
  6. 拼多多商品详情接口,拼多多详情页接口,宝贝详情页接口,商品属性接口,商品信息查询,商品详细信息接口,h5详情,拼多多APP详情
  7. 2. 匈牙利命名法
  8. js前端判断登录超时即清除登录状态
  9. 程序员IT认证有用吗?软件工程师考证有必要吗?
  10. 小程序中的axio——flyio的使用