雅可比矩阵机器学习_深度学习中的Matrix Calculus (一)

2023-10-26

绝大多数网络上对深度学习公式的推导教程notation混乱,而专门介绍Matrix Calculus的材料可能又过于繁杂。其实在深度学习中用到的矩阵微积分并不艰深,看完之后你就可以愉快的进行各种推导了。本文仅作为优秀资源的搬运总结,有余力的同学可以阅读The Matrix Calculus You Need For Deep Learning。

链式法则(Chain Rule)

首先我们介绍单变量链式法则,在本科的微积分课程中大家应该都得到了很好的训练。

例如要计算

的导数,我们可以分解成

,然后分别计算

,然后再相乘得到

。但是考虑下面的例子

,我们是否也能利用链式法则呢?这里我们需要对链式法则做一点改变,也就是下面要介绍的全微分链式法则(total-derivative chain rule)。

2. 全微分链式法则(total-derivative chain rule)

在这个例子中,令

。我们把这个简单的式子写成f(x,u)是为了强调这是关于x和u两个变量的函数,但其实u也是x的函数,所以我们不能只考虑y对u的偏导,还需要考虑u对x的偏导:

总结来说,全微分链式法则有如下的表达:

,这里所有的u都是中间变量。

有同学会疑惑为什么要弄的这么复杂,尤其是在上一个例子中一眼就可以看出结果。但是实际上我们用到了微分的线性性,所以直接将两个微分相加。然而这里我们需要统一地运用链式法则,只有这样才能让机器能够计算更加复杂的函数的微分。

3. 向量的链式法则

看完了单变量,我们再将链式法则拓展到向量中。首先我们需要明确一下notation。

3.1 梯度(gradient) / 雅可比矩阵(Jacobian)

梯度大家应该都熟悉了,就是用向量将一个标量函数对各自变量的偏导数表示出来。

而如果函数不再是标量函数,而是向量函数(把向量映射到向量),那么我们需要把各个返回值的gradient都表示出来,这就是雅可比矩阵:

划重点:本文中用的雅可比矩阵的numerator layout,在这种形式下,每个因变量的梯度都作为矩阵的行。如果一个向量函数有n个自变量,m个因变量,那么J是一个m*n的矩阵。牢牢记住你的layout方式对后续的推导非常重要,很多别的文章采用的是denominator layout,也就是这里J的转置。

3.2 向量链式法则

首先我们来看一个例子:

。这里我们需要两个中间变量

。对每个因变量运用全微分链式法则我们得到:

然我们看看第二个等号右边这个复杂的向量,它其实可以写成两部分:

也就是f对g的雅可比矩阵,乘以g对x的雅可比矩阵(在这里是梯度)。看到这里大家应该就明白为什么说layout和全微分的链式法则重要了。更一般地:向量链式法则

时间原因不能把后面的码上来,下篇会介绍各种常用的算子(Operator),以及深度学习中的例子。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

雅可比矩阵机器学习_深度学习中的Matrix Calculus (一) 的相关文章

  • Swagger在线文档

    Swagger 什么 Swagger 定义 Swagger 是是一款让你更好的书写API文档的框架 用于生成 描述 调用和可视化 RESTful 风格的 Web 服务 总体目标是使客户端和文件系统作为服务器以同样的速度来更新文件的方法 参数
  • 如何才能成为优秀的架构师?

    我们知识星球开通快一周了 已有很有小伙伴加入 我们开通知识星球的目的 就是助力大家提高技术 阻力个人成长 今天是优惠最后一天 明天星球将提价为99元 欢迎大家加入 具体见文末 什么是知识星球 星球是一个分享知识和经验的平台 有许多技术大佬纷
  • OpenCV 陷波滤波器消除周期性噪音 C++

    观察下面图像 有明显的近似水平线的噪音模式 我们希望他在频率域内的成分沿垂直轴集中 下图是该图像的谱 将垂直轴的分量去掉 构建的陷波器如下 原图与结果图对比 滤掉的空间噪音模式 代码实现 include opencv2 opencv hpp
  • KATEX简易语法:

    呼唤 Mardown中使用KATEX的语法 请使用 包围 Notion中用 math 来呼唤使用 数学符号 123 123 123 123 x
  • 在cmd中输入URL地址,提示“找不到应用程序”解决方案

    有好几次都遇到了这种情况 在cmd中输入一个URL地址 再按Enter键 就提示 http 找不到应用程序 我开始还以为什么文件损坏了呢 吓得我一跳 后来我总算发现问题的原因了 其实是由于我之前装了一个浏览器 并将其设置为默认的 后来这个浏
  • Delphi_SysUtils中文翻译

    系统实用例程 Delphi Kylix 跨平台运行时库 System Utilities Copyright c 1995 2002 Borland Softwrare Corporation SysUtils单元 1 常量 Const 1
  • pdf格式文件下载不预览,云存储的跨域解决

    需求背景 后端接口中返回的是pdf文件路径比如 pdf文件路径 https wangzhendongsky oss cn beijing aliyuncs com wzd test pdf 前端适配是这样的 a href https wan
  • Java: Java学习笔记之 String的常见用法

    String的常见用法 String的常见用法 1 创建String 2 字符串比较 3 字符串查找 4 字符串替换 5 字符串拆分 6 字符串截取 7 转换功能的方法 8 其他操作方法 9 StringBuffer 和 StringBui
  • Mybatis基础全集适合新手(面试大全)

    Mybatis 简介及搭建 一 MyBatis简介 1 MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis 2010年6月这个项目由Apache Software Foundation迁移到了Google Cod
  • 保姆级--Ubuntu 安装Django并简单应用第一个项目

    一 虚拟机创建Ubuntu 准备 一台正常的电脑 已经安装的Oracle VM VirtualBox虚拟机软件 版本随意 已经下载好的Ubuntu系统镜像 这里演示最新版 按需下载 创建虚拟机 打开虚拟机软件Oracle VM Virtua
  • Ubuntu 18.04问题收集

    1 网络不通 1 时间溢出会导致网络不通 相关链接 https blog csdn net knico article details 82018715 2 Ubuntu关机慢 1 网上找了一下 说是安装了mysql 关机要10分钟 相关链
  • 用java实现杨辉三角

    杨辉三角 将第一行中间的数记为1 两边的数记为0 则第二行的数为其左上角的数加上右上角的数的和 如上图 代码如下 import java util Scanner public class demo1 杨辉三角 public static
  • vue中axios学习

    文章目录 axios实现get和post axios结合vue axios实现get和post then中的回调函数分别在请求 成功或失败 后触发
  • android 中 Drawable 和 ConstantState 的一些认识

    Drawable Drawable就是一个可绘制的对象 或者叫做可渲染的对象 里面保存的是可以绘制的数据 其可能是一张位图 BitmapDrawable 也可能是一个图形 ShapeDrawable 还可能只是一个颜色 ColorDrawa
  • 解决移进/规约冲突

    How to resolve shift reduce conflicts 如何解决移进规约冲突 比如下面的文法就有冲突 expr expr expr expr expr expr 对于输入 1 2 解析完1后 可以继续移进 或者根据规则
  • 数组(1)

    https note youdao com s coQY0U5bhttps note youdao com s coQY0U5b
  • UnityShader学习教程之<关于颜色的详解,与shader后期调色的实现>

    今天讲解shader中的颜色color 颜色是由rgb混合而成的 color float4 r g b a 这是颜色的公式 我们想要自己调色 只需要改变这些颜色的值 就可以实现颜色有自己控制了 首先我们可以输出我们的顶点颜色 看看当前的界面
  • JDK8新特性(一):Lambda表达式

    1 首先来个Demo public class LambdaDemo public static void main String args 开启一个线程 new Thread new Runnable Override public vo

随机推荐