【干货】理解深度学习中的矩阵运算

【导读】本文是作者Nikhil B撰写的“Terence Parr和Jeremy Howard的深度学习的矩阵运算”笔记。我们知道,深度学习是基于线性代数和微积分的,反向传播也离不开求导和矩阵运算。因此了解深度学习内部的数学原理也至关重要,本文从简单函数求导,到多元函数求偏导,再到矩阵的微积分运算,逐层深入,引导我们探索深度学习背后的学习规则和数学基础。

Notes on Matrix Calculus for Deep Learning

基于Parr和Howard的深度学习的矩阵运算论文

论文题目:TheMatrix Calculus You Need For Deep Learning

论文链接:

http://parrt.cs.usfca.edu/doc/matrix-calculus/index.html

深度学习是一个令人兴奋的领域,具有巨大的现实世界影响力。 本文是Terence Parr和Jeremy Howard撰写的基于'深度学习的矩阵运算'的笔记集合。

深度学习是基于线性代数的。它使用许多层的神经网络来解决复杂的问题。模型输入,多层神经元权重,激活函数等都可以定义为向量。操作/转换很自然地需要使用神经网络进行训练,同时应用于所有输入。矢量/矩阵表示和可用于它们的线性代数运算,非常适合神经网络的流水线的数据流模型。当输入、权重和函数被视为向量,值的流动可被视为矩阵上的运算时,数学形式变得非常简单

深度学习也是基于差异化的!在训练阶段计算变化率对于优化损失函数至关重要。从任意一组网络模型权重w开始,目标是得到一个“最优”权重集合,以使给定的损失函数最小。几乎所有的神经网络都使用反向传播方法来找到这样一组权重。这个过程涉及权重值的变化如何影响输出。基于此,我们决定按比例增加或减少权重值。测量输出如何随着权重的变化而变化,与计算输出w.r.t权重w的(部分)导数相同。对于所有的训练样例,对于所有层中的所有权重,重复该过程。

矩阵运算利用数学的两个基本分支 - 线性代数和微积分。绝大多数人将线性代数和微积分分开学。这两个学科在各自的领域本身就都很重要。没有多少本科课程着重于矩阵运算。人们通常依靠直觉来弥补理解上的空白,同时还要考虑反向传播等概念。大多数机器学习算法中的反向传播步骤都是基于计算向量和矩阵中的导数来更新值。大多数机器学习框架本身做了大量的工作,我们永远不会看到实际导数计算的过程。然而,理解框架本身的内部工作是必要的,如果你打算成为一个合格的从业者或想要从头开发ML库,这是非常重要的。

虽然该论文面向DL从业者和编程人员,但它本质上是数学的。注意通过符号来巩固你的理解是非常重要的。特别注意诸如矢量的形状(长或高),标量或矢量,矩阵的尺寸等。矢量用粗体字表示。没有经验的人可能不会注意到粗体f和斜体f字体之间的差异,但这在等式中有很大的差异。向量的形状和方向也是一样的。为了理解术语,我尝试了很多方法才对这些有些理解,顺便说一下我一开始理解的很多术语很多都有问题。

庆幸的是,函数的概念(以及计算它们的衍生物的方法)是从简单到复杂的方式定义的。首先,我们从f(x)表示的简单参数函数开始。函数和参数x是标量(用斜体表示),我们可以使用传统的导数规则来计算f(x)的导数。其次,我们会看到的函数往往有很多变量与之相关联,以f(x,y,z)的形式。为了计算这些函数的导数,我们使用针对特定参数计算的偏导数。处理这些函数要用到多变量微积分知识。

将输入变量x, y, z统一用粗体x的向量描述,我们可以将输入参数向量的标量函数表示为f(x)。该领域的运算是向量运算,其中f(x)的偏导数被表示为向量本身并且适合于各种向量操作。最后,深度学习最有用的是同时表示多个这样的函数。我们使用f(x)来表示一组f(x)形式的函数。微积分领域最常见的是矩阵微积分(matrix calculus)。

回顾一下,f(x)是标量函数(使用简单的导数规则),f(x)是向量变量x(使用向量运算规则)的标量函数,f(x)是许多向量标量值函数,每个函数依赖于输入x的向量(使用矩阵微积分规则)。本文演示了如何计算简单函数的导数,以及多元函数中的偏导数(∂/∂x),矢量演算中的梯度∇f函数和和矩阵演算中的雅可比矩阵J。差不多可以说,∇f(x)函数是矢量形式f的偏导数的集合。f(x)的雅可比矩阵每行基本上是单独的∇f(x)

在计算偏导数的过程中,本文做了一些假设。要记住计算输出函数的偏导数(y = w.x +b)和损失函数是很重要的。第一个假设是向量x的基数等于f中的标量函数的个数。这提供了一个方形雅可比矩阵。如果你想知道为什么他们需要相等,考虑这样一个情况,每个神经元xi的输入都与权重wi相关(这里的标量函数类似于xi*wi),所以我们拥有和x一样多的w

另一个重要的假设是关于元素对角线性质。基本上,该属性表明f(x)中的第i个标量函数是(仅)矢量x中第项的函数。想象常见的神经元模式你发现,这样做更有意义。输入xi的贡献与单个参数wi成比例。假设元素对角线性质使雅可比行列式(由第一个假设制成的方形)变成对角矩阵,所有非对角线项都为零。

论文的接下来的几节将解释计算更复杂函数的导数的过程。函数可以从简单到复杂有几种方式。首先,考虑通过在两个向量(当然具有相同大小)上应用基于元素的二元运算符得到的函数。这些函数的形式为f(x,y) = x + y或max(x, y)。请注意,在这种情况下,(x, y)是向量。接下来,有一些标量扩展函数是通过将矢量乘法/加入标量。该操作涉及将标量“扩展”到与矢量相同的维度,然后执行元素的乘法和加法操作。例如,y = x + b 被扩展到向量b ,并且被元素地添加到x。

第三,考虑将向量中的值转化为单个值的函数。最常见的例子是计算神经网络的损失,通常是形式y = sum(f(x))。这里y是通过将向量 f(x)的元素相加得到的标量值。

本文计算了这三种情况下的衍生方法。有些函数可能很复杂,需要使用导数的链式规则。本文描述了简单标量函数的链式规则,并逐渐将其扩展到所有向量的链式规则。

参考链接:

https://towardsdatascience.com/notes-on-matrix-calculus-for-deep-learning-b9899effa7cf

原文发布于微信公众号 - 专知(Quan_Zhuanzhi)

原文发表时间:2018-02-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能LeadAI

零基础入门深度学习 | 第五章: 循环神经网络

无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习这个超热的技术,会不会感...

5767
来自专栏决胜机器学习

循环神经网络(二) ——GRU、LSTM、BRNN、deep RNN

循环神经网络(二) ——GRU、LSTM、BRNN、deep RNN (原创内容,转载请注明来源,谢谢) 一、概述 本文主要讲述RNN的其他结构,这些结构比RN...

5604
来自专栏AI科技大本营的专栏

入门 | 零基础入门深度学习系列——递归神经网络

为了帮助编程爱好者,从零开始入门,AI100特别精选了韩炳涛所著《零基础入门深度学习》系列文章,以下Enjoy! 作者 | 韩炳涛 无论即将到来的是大数据时代还...

43310
来自专栏专知

网络节点表示学习论文笔记02—CIKM2015GraRep: 基于全局结构信息的图结点表示学习

【导读】这次论文笔记介绍了介绍一种具有代表性的网络节点表示学习(NRL)方法:GraRep。以LINE为代表的一系列NRL算法一些网络上具有很好地学习效果,但它...

7137
来自专栏PaddlePaddle

卷积神经网络的基本结构

深度学习基础理论-CNN篇 卷积神经网络的基本结构 ? 总体来说,卷积神经网络是一种层次模型(hierarchical model),其输入是原始数据(ra...

43413
来自专栏机器学习原理

机器学习(6)——决策树前言:

前言: 通过第前面的学习介绍了机器学习回归模型创建的流程,并且知道了机器学习要做的事情是找到目标函数,优化它,通过每次迭代都使目标函数值最小,最优解就是目标函数...

48710
来自专栏机器学习算法原理与实践

异常点检测算法小结

    异常点检测,有时也叫离群点检测,英文一般叫做Novelty Detection或者Outlier Detection,是比较常见的一类非监督学习算法,这...

2103
来自专栏ATYUN订阅号

利用协方差,Pearson相关系数和Spearman相关系数确定变量间的关系

数据集中的变量之间可能存在复杂且未知的关系。重要的是发现和量化数据集的变量相关的程度。这些知识可以帮你更好地准备数据,以满足机器学习算法的预期,例如线性回归,其...

2033
来自专栏决胜机器学习

机器学习(十六) ——SVM理论基础

机器学习(十六)——SVM理论基础 (原创内容,转载请注明来源,谢谢) 一、概述 支持向量机(supportvector machine,SVM),是一种分类...

3787
来自专栏人工智能LeadAI

零基础入门深度学习 |最终篇:递归神经网络

无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learni...

6265

扫码关注云+社区

领取腾讯云代金券