必备的数学知识

矩阵微分与求导

前言

深度学习向来被很多人认为是“黑盒”,因为似乎很多人都不清楚深度学习的运作方式,本系列《深度学习中的数学》的连载文章主要目的就是向大家揭开深度学习背后工作的机理。

在正式开始之前,我想说一些题外话。我们经常能听到关于神经网络不具备解释性的言论,而我个人对此的观点是神经网络是具有解释性的,只是很多人在用神经网络的时候,仅仅停留在调包的层面上,那又怎么可能知道神经网络是如何运作的呢?这个问题需要从参数的梯度来窥探究竟的,如果你能手撕一遍神经网络参数的梯度推导公式,再辅以深度学习计算框架,如tensorflow或pytorch的自动求导的验证,那么原本所谓的黑盒在那时候的你看来就是个彻底的白盒了。

本系列的内容编排大致如下:

  • 一些重要的数学预备知识:矩阵微分的数学准备 + 矩阵微分的应用demo,分为上下两个部分

  • DNN的前向传播算法与反向梯度推导

  • CNN的前向传播算法与反向梯度推导

  • RNN的前向传播算法与反向梯度推导 + RNN会引起梯度消失的原因分析

  • LSTM前向传播算法与反向梯度推导 + LSTM能解决梯度消失的原因分析

  • 借助tensorflow的自动求导工具,验证上述所有导数推导结论的正确性

注意:

  • 本系列默认读者已具备梯度,导数,梯度下降等基础的数学概念

  • 本系列默认读者已具备基本的线性代数知识

1.1

数学符号

1.2

矩阵导数的定义和布局

根据求导的自变量和因变量是标量,向量还是矩阵,我们有9种可能的矩阵求导定义,形式上如下所示:

-----------简单难度-----------

总结一点就是,求导结果与因变量同形,这就是所谓的分母布局

总结一点就是,求导结果与自变量同形,这就是所谓的分子布局

感觉出一些东西了吗,所谓矩阵求导,不过是逐元素进行标量层面的求导然后排列成向量/矩阵罢了。

--------------难度稍大一点----------

1.3

矩阵求导的优势

之所以要搞矩阵微分,当然不是吃饱了撑着,而是为了在分析大量的神经网络参数的时候不容易出错。

由此可见,对于第一个例子,或许我们通过定义法尚且能又快又准地写出求导结果,但对于第二例子,按照定义出发,从标量对标量求导的角度出发,计算出y后再对x求导就显得有点繁琐了,而且还容易出错。但如果从矩阵求导的角度入手,因为是在向量/矩阵的维度上看待求导操作,所以求导的结果可以很容易写成向量和矩阵的组合,这样又高效,形式又简洁。

1.4

矩阵微分与矩阵求导

上面这个式子左边看着挺恶心的,但右边的数学含义是非常明显的,就是两个矩阵对应元素相乘然后相加,跟向量的内积类似,这个叫矩阵的内积

1.5

矩阵微分性质归纳

上篇小结

至此,我们已了解了为什么要学矩阵求导,以及各种常见情况下(向量对矩阵,矩阵对向量,以及矩阵对矩阵的导数没提)的导数定义。此外,我们学习到矩阵微分和矩阵导数的关系,以及一些常见的矩阵微分性质。在下篇中,我们将介绍矩阵导数中的链式法则以及专门针对标量对矩阵/向量求导的核心方法-迹技巧。最后,我们将用一个2层多分类的神经网络作为例子,演习一下如何用矩阵求导来得到神经网络中的参数的梯度。

深度学习

TO BE CONTINUED

数学

文章作者: 中国电信研究院 | 刘心唯

文章内容系作者个人观点,不代表融智未来公众号的观点或立场。

你们点点“分享”,给我充点儿电吧~

eta 深度学习 参数_深度学习中的参数梯度推导(一)相关推荐

  1. python hist 参数_关于python中plthist参数的使用详解

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  2. golang 函数传多个参数_关于Golang中方法参数的传递

    结构体声明 为了说明函数以及方法调用的过程,这里先定义一个struct,在下面的描述中会使用到它. type Person struct { Name string Age uint16 } 普通函数 ...

  3. 深度学习深度前馈网络_深度学习前馈网络中的讲义第4部分

    深度学习深度前馈网络 FAU深度学习讲义 (FAU Lecture Notes in Deep Learning) These are the lecture notes for FAU's YouT ...

  4. iou画 yolov3_专栏 | 【从零开始学习YOLOv3】4. YOLOv3中的参数进化

    原标题:专栏 | [从零开始学习YOLOv3]4. YOLOv3中的参数进化 前言:YOLOv3代码中也提供了参数进化(搜索),可以为对应的数据集进化一套合适的超参数.本文建档分析一下有关这部分的操作 ...

  5. 正则表达式学习日记_《学习正则表达式》笔记_Mr_Ouyang

    正则表达式学习日记_<学习正则表达式>笔记_Mr_Ouyang 所属分类: 正则表达式学习日记  书名:     学习正则表达式 作者:     Michael Fitzgerald 译者 ...

  6. finereport报表设计中模板数据集的sql语句中if的用法_报表工具中动态参数的灵活运用...

    报表开发过程中,有的时候我们会觉得普通参数很难满足一些业务需求,比如第二个数据集要引用第一个数据集的结果进行计算,动态控制 SQL 的过滤条件,动态列等,如果您遇到了这种情况,可以尝试使用动态参数即 ...

  7. 深度学习深度前馈网络_深度学习前馈网络中的讲义第1部分

    深度学习深度前馈网络 FAU深度学习讲义 (FAU Lecture Notes in Deep Learning) These are the lecture notes for FAU's YouT ...

  8. 深度学习 图像分类_深度学习时代您应该阅读的10篇文章了解图像分类

    深度学习 图像分类 前言 (Foreword) Computer vision is a subject to convert images and videos into machine-under ...

  9. 小样本点云深度学习库_小样本学习综述报告

    文章内容整理:Enneng Yang, Xiaoqing Cao 本文仅作为学习交流使用,如有问题,请联系ennengyang@qq.com. 1.小样本问题的研究意义✚●○ 深度学习已经在各个领域取 ...

最新文章

  1. CYQ.Data 数据框架系列索引
  2. 【控制】《多智能体系统一致性协同演化控制理论与技术》纪良浩老师-第12章-离散时间多智能体系统牵制一致性
  3. C++一学就废?试试这个项目包
  4. vue 获取当前发布的版本_Vue 3.0重磅发布!
  5. eovs实训报告总结心得_实训总结与心得体会3篇_心得体会
  6. 恶意软件伪装“正规军”,撕开Booster Cleaner“画皮”下的真相
  7. 蚂蚁金服OceanBase性价比是传统数据库的十倍
  8. Ural_1003 Parity(并查集)
  9. session 跟 cookie 关系
  10. python_9(模块补充)
  11. [转]vb高效编程(优化)
  12. 【感悟】人生本如梦,学会看淡一切。
  13. VUE父组件与子组件的数据传递
  14. android camera拍照录像切换功能
  15. js的validate插件异步效验
  16. (转)16天记住英语7000个单词,300个句子
  17. Jenkins自动化构建vue项目然后发布到远程服务器
  18. 智慧农贸收银系统有什么功能
  19. Java Swing 经典小游戏《飞机大战》———— (一)获取素材,创建窗口,添加滚动背景,双缓冲
  20. 异常-异常场景的测试

热门文章

  1. ffmpeg命令行map参数的使用
  2. 基于机器学习的捡球机器人设计与实现(探索)第5篇——训练并使用Haar分类器(2019-03-02)
  3. 第二章 数据结构(一)
  4. linux 读取飞信信息,Linux下飞信
  5. rsync 更改配置后, 无需手动重启
  6. 4-uboot编译流程
  7. Exchange2013DAG配置-零错误
  8. 五、jvm垃圾回收3(几种垃圾收集器)
  9. 适用于芯片验证工程师的atom插件列表
  10. MairaDB 函数(二)