想做深度学习,这些数学知识点必须掌握。6000字学习地图助你快速上手
- 2020 年 10 月 31 日
- AI
了解机器学习算法背后的数学是一种超能力。如果您曾经为现实生活中的问题构建过模型,那么您可能会发现,要想超越基准性能,熟悉细节可能会大有帮助。当您想突破现有技术的界限时,尤其如此。
然而,这些知识大多隐藏在高等数学之后。理解像随机梯度下降这样的方法似乎很困难,因为它是建立在多变量微积分和概率论之上的。
但是,有了适当的基础,大多数想法可以被视为很自然。如果您是初学者,并且可能没接受正规的高等数学教育,为自己创建课程是非常困难的。在本文中,我的目标是提出一个路线图,使您从零开始,深入了解神经网络的工作原理。
为了简单,本次学习目标不涵盖所有内容。相反,我们将专注于我们的学习方向。这样,如果有需要,你可以毫无困难地学习其他主题内容。
我建议你把这篇文章作为学习的参考,而不是一口气读完。深入了解一个概念,然后检查路线图并继续。我坚信这是最好的学习方式:我会给你指路,但你必须自己走。
基础
大多数机器学习都建立在三个基础上:线性代数,微积分和概率论。由于概率论基于前两个,所以我们应该从线性代数和微积分开始。它们可以像标准课程中那样独立研究。
微积分
微积分是研究函数的微分和积分的学科。本质上,神经网络是一个可微函数,所以微积分将是训练神经网络的基本工具。
为了熟悉这些概念,你应该使事情变得简单,一开始去学习单变量函数。根据定义,函数的导数定义为
给定h的比率是点(x,f(x))和(x + h,f(x + h))之间线的斜率。
在极限情况下,这实质上是切线在点x处的斜率。下图说明了该概念
函数的倒数可视化
微分可用于优化函数:导数在局部极大值或极小值处为零。(然而,反过来就不是这样了;见f(x)= x在0处的位置)导数为零的点称为临界点。一个临界点是极小值还是极大值,可以通过看二阶导数来确定:
关于微分有几个基本的规则,但最重要的可能是所谓的链式法则:
它告诉我们如何计算复合函数的导数。
积分通常被称为微分的逆。因为
它适用于任何可积分函数f(x)。函数的积分也可以视为曲线下的有向面积。例如,
因为当函数为负数时,该区域也有一个负号。
-π和π之间正弦曲线下的有向面积
积分本身在理解期望值概念方面起着作用。例如,像熵和相对熵这样的量是用积分来定义的。
进一步的研究
我推荐麻省理工学院的单变量微积分课程(总的来说,麻省理工学院的在线课程一直是很好地学习资源)如果你是一个喜欢读书的人,这里有很多教科书可供选择。GilbertStrang所著的《微积分》也是很好的免费学习资源。
线性代数
正如我提到的,神经网络本质上是函数,是使用微积分工具进行训练的。但是,它们是用线性代数概念(如矩阵乘法)描述。线性代数是一门涉及机器学习许多重要方面的广泛学科,因此这将是一个重要的领域。
向量空间
为了对线性代数有一个很好的了解,我建议从向量空间开始。最好先讨论一种特殊情况。您可以将平面中的每个点视为一个元组
这些本质上是从零指向(x 1,x 2)的向量。您可以将这些向量相加并将它们与标量相乘:这是一个向量空间的原型。一般来说,如果可以将向量相加,并将一个向量与一个实数相乘,那么一个向量V的集合就是一个实数上的向量空间,这样可以保持以下性质:
别慌!我知道这看起来很可怕(至少在我还是一名数学专业的大一学生时是这样),但事实并非如此。这些保证了向量可以相加和缩放就像你期望的那样。当考虑向量空间时,如果你在心里把它们建模成这样会很有帮助。
赋范空间
如果你觉得你对向量空间有了很好的理解,下一步就是理解如何测量一个向量的大小。默认情况下,向量空间本身并没有为此提供任何工具。那么该怎么办呢?你们可能已经知道了,我们有
这是一种范数的特殊情况。一般来说,如果有一个函数,向量空间V就是赋范的
称之为范数
同样,这可能很可怕,但这是一个简单而基本的概念。有很多范数,但最重要的是p-norm家族。
(p = 2时,我们得到上述特殊情况)和上确范数(supremum norm)
有时,例如对于p = 2,范数来自所谓的内积,即双线性函数
比如:
具有内积的向量空间称为内积空间。经典的欧几里得乘积就是一个例子
每一个内积都可以变成一个范数
当两个向量的内积为0时,我们说这两个向量是正交的。(试着在平面上举出一些具体的例子来更深入地理解这个概念。)
基底和正交/标准正交基底
虽然向量空间是无限的(在我们的例子中),但是您可以找到一个有限的向量集合,它可以用来表示空间中的所有向量。例如,
其中
这是基和标准正交基的一种特殊情况。
一般来说,基是向量的最小集合
使它们的线性组合成向量空间:
对于任何向量空间,基总是存在的。(它可能不是一个有限集,但我们现在不应该关心它。)毫无疑问,在讨论线性空间时,基可以极大地简化问题。
当一组基中的向量互相正交时,我们称它为正交基。如果每个基向量的范数是1对于一个正交基,我们说它是标准正交的。
线性变换
与向量空间相关的关键对象之一是线性变换。如果您以前见过神经网络,就会知道其中一个基本构建块是表单的层
其中A是矩阵,b和x是向量,而σ是S型函数。(或者,实际上是任何激活函数。)那么,Ax部分是线性变换。一般来说,函数
是向量空间V和W之间的线性变换,如果
对于V中的所有x y都成立,而且都是实数。
举个具体的例子,在平面中绕原点旋转是线性变换。
毫无疑问,关于线性变换最关键的事实是它们可以用矩阵来表示,就像你将在接下来的学习中看到的那样。
矩阵及其运算
如果线性变换清楚了,你就可以转向学习矩阵。(线性代数课程通常从矩阵开始,但我推荐这种方式,原因将在后面解释。)
矩阵最重要的运算是矩阵积。一般来说,如果A和B是定义的矩阵
然后可以得到
这似乎很难理解,但实际上非常简单。看下图,演示如何计算产品第二行第一列中的元素。
之所以定义矩阵乘法,是因为矩阵表示向量空间之间的线性变换。矩阵乘法是线性变换的组成。
行列式
在我看来,行列式是线性代数中最具挑战性的概念之一。根据您的学习资源,它通常是由递归定义或遍历所有排列的求和定义的。如果没有丰富的数学经验,他们都不易理解。
要理解这个概念,请观看下面的视频。相信我,这是魔法。
总而言之,矩阵的行列式描述了对象的体积在相应的线性变换下如何缩放。如果变换改变方向,则行列式的符号为负。
你最终将需要了解如何计算行列式。
特征值,特征向量和矩阵分解
标准的第一线性代数过程通常以特征值/特征向量和一些特殊的矩阵分解(例如奇异值分解)结尾。
假设我们有一个矩阵A。如果存在向量x(称为特征向量),则数字λ是A的特征值
成立。换句话说,由A表示的线性变换是对向量x进行的一个基于模型的缩放,这个概念在线性代数中起着至关重要的作用。(实际上在广泛使用线性代数的每个领域都是如此。)
现在,您已经准备好熟悉一些矩阵分解。如果你想一下,从计算的角度看,哪种类型的矩阵是最好的?对角矩阵!如果一个线性变换有一个对角矩阵,那么计算它在任意向量上的值是很简单的。
大多数特殊形式旨在将矩阵A分解为矩阵的乘积,其中最好至少有一个对角线。最著名的奇异值分解(Singular Value Decomposition,简称SVD)指出存在特殊矩阵U,V和对角矩阵Σ
成立。(U和V是所谓的unit矩阵,这里我没有定义,只要知道它是一个特殊的矩阵族就足够了)
奇异值分解也被用于主成分分析,这是最简单也是最著名的降维方法之一。
进一步的研究
线性代数可以用很多方法来教。我在这里列出的路径是受到Sheldon Axler的线性代数教科书的启发。对于在线课程,我推荐麻省理工学院开放课程的线性代数课程,这是一个很好的资源。
多变量微积分
这是线性代数和微积分结合在一起的部分,为训练神经网络的主要工具——梯度下降打下基础。从数学上讲,神经网络只是一个多变量的函数。(尽管变量的数量可以达到数百万。)
与单变量微积分相似,这里的两个主要主题是微分和积分。假设我们有一个函数
将向量映射为实数。在二维空间中(即n= 2时),你可以把它想象成一个曲面。(因为人类看不到高于三维的东西,所以很难想象有两个以上真实变量的函数。)
二元函数的图像
多变量微分
在单变量中,导数是切线的斜率。如何定义切线呢?表面上的点有多条切线,而不是一条。但是,有两条特殊的切线:一条平行于x-z平面,另一条平行于y-z平面。它们的斜率由偏导数决定,由
也就是说,对只保留一个变量的函数求导。(形式定义对于≥3个变量是一样的,只是更复杂的符号)
这些特殊方向的切线横跨切线平面。
切面
梯度
还有另一个特殊的方向:梯度,它是定义的向量
梯度总是指向增幅最大的方向!所以,如果你在这个方向上迈出一小步,你的高度将会是你所能选择的所有其他方向中最大的。这就是梯度下降法的基本思想,它是一种函数最大化的算法。它的步骤如下。
1.计算当前位置x₀处的梯度。
2.在梯度方向上走一小步,即可到达点x₁。(步长称为学习率。)
3.返回到步骤1。重复该过程,直到收敛为止。
当然,这一基本算法也存在一些缺陷,多年来,该算法进行了多次改进。现代基于梯度下降的优化器使用了许多技巧,如自适应步长、动量和其他方法,这些我们不打算在这里详述。
在实际应用中,梯度的计算比较困难。函数通常由其他函数的组合来描述,例如,熟悉的线性层
式中,A为矩阵,b和x为向量,而σ是S型函数。(当然,也可以有其他激活,但为了简单起见,我们将坚持使用此方法。)如何计算这个梯度?在这一点上,甚至不清楚如何定义矢量-矢量函数的梯度,所以让我们来讨论!一个函数
总是可以像矢量标量函数这样写
g的梯度是由第k行是第k个分量的梯度的矩阵定义的。也就是说,
这个矩阵叫做g的总导数。
在我们的例子中
事情变得有点复杂,因为它是由两个函数组成:
以及:
通过将单变量S形分量应用来定义。将函数l进一步分解为从n维向量空间映射到实数空间的m个函数:
接着
如果你计算总导数,你会发现
这是多元函数的链式法则的全面性。没有它,就没有简单的方法来计算神经网络的梯度,而神经网络最终是由许多函数组成的。
高阶导数
与单变量情况类似,梯度和导数在确定空间中给定的点是局部极小点还是极大点时发挥作用。(或没有)。给出一个具体的例子,训练一个神经网络等价于最小化参数训练数据上的损失函数。这都是关于找到最优参数配置w的最小值:
接下来
分别为神经网络和损失函数。
对于具有n个变量的一般可微向量标量函数,有n个二次导数,形成海森矩阵
在多个变量中,海森的行列式充当二阶导数的角色。类似地,它可以用来判断临界点(即所有导数均为零)是最小值,最大值还是鞍点。
进一步研究
关于多变量演算,有很多很棒的在线课程。我有两个具体建议:
可汗学院多元微积分,
MIT多变量演算。
现在我们准备接受最后一个主题:概率论!
概率论
概率论是对机会的数学严谨研究,是所有科学领域的基础。
先不谈确切的定义,让我们思考一下概率代表什么。假设我投掷一枚硬币,有50%的概率(或0。5的概率)是正面。重复这个实验10次之后,我得到了多少次正面?
如果你回答了5,你就错了。正面是0.5的概率不能保证每一秒都是正面。相反,它的意思是如果你重复n次这个实验。n是一个很大的数,正面的数目会非常接近n/2。
除了基础知识之外,您还需要了解一些高级知识,首先是期望值和熵。
期望值
假设你和你的朋友玩游戏。你掷一个经典的六面骰子,如果结果是1或2,你赢300美元。否则,你损失200。如果你玩这个游戏的时间够长,你每轮的平均收入是多少?你应该玩这个游戏吗?
赢100美元的概率是1/3,输200美元的概率是2/3。也就是说,如果X是编码掷骰子结果的随机变量,那么
这就是期望值,也就是从长远来看,你每局获得的平均金额。因为数值为负,你会输钱,所以你永远不要玩这个游戏。
一般来说,期望值定义为
对于离散随机变量和
对于实值连续随机变量。
在机器学习中,训练神经网络的损失函数在某种程度上都是期望值。
大数定律
人们常常错误地把某些现象归因于大数定律。例如,那些连输的赌徒相信他们很快就会赢,根据大数定律。这是完全错误的。让我们看看这到底是什么!
假设
为表示同一实验独立重复的随机变量。(比如,掷骰子或掷硬币。)
本质上,大数定律说明了这一点
从长远来看,这就是结果的平均值,等于期望值。
一种解释是,如果随机事件重复了足够多次,则单个结果可能无关紧要。因此,如果您在娱乐场中玩的游戏的预期价值为负值(就像他们一样),那么偶尔赢球也没关系。大数定律意味着您会赔钱。
为了取得一些进步,LLN对于随机梯度下降必不可少。
信息论
来玩个游戏。我想过一个介于1到1024之间的数字,您必须猜出来。您可以提出问题,但您的目标是使用尽可能少的问题。你需要多少?
如果玩得很聪明,您将对问题进行二进制搜索。首先,您可能会问:数字是1到512之间吗?这样,您将搜索空间减少了一半。使用此策略,您可以找出答案
但如果取数时不使用均匀分布呢?例如,我可以使用泊松分布。
泊松分布的概率质量函数
在这里,你可能会需要较少的问题,因为你知道分布倾向于集中在特定的点。(这取决于参数)
在极端情况下,当分布集中在一个数字上时,你不需要任何问题来猜对它。一般来说,问题的数量取决于分布所携带的信息。均匀分布包含的信息量最小,而奇异分布是纯信息。
熵是一种量化的方法。它的定义是
对于离散随机变量和
连续的,实值的。(对数的底通常是2 e或10,但这并不重要)
如果您以前使用过分类模型,您可能会遇到交叉熵损失,定义为
其中P是基准真相(集中到单个类的分布),而另一版本代表类预测。这衡量了多少“信息”的预测已经比较基准真相。当预测匹配时,交叉熵损失为零。
另一个常用的量是相对熵,由
P和Q是两个概率分布。这本质上是交叉熵减去熵,熵可以被认为是对两个分布的不同程度的量化。这是有用的,例如,当训练生成的对抗网络。最小化相对熵保证两个分布是相似的。
进一步的研究
在这里,我向您推荐两本书:
-
模式识别和机器学习,
-
Trevor Hastie, Robert Tibshirani和JeromeFriedman的《统计学习的要素》。
这是两本基础教科书,它们教你的远不止概率论。它们都超越了基础知识,但是相应的章节提供了一个很好的介绍。
超越数学基础
至此,我们复习了理解神经网络的必要数学知识。现在,您已经为有趣的部分做好了准备:机器学习!
要真正理解神经网络是如何工作的,你还需要学习一些优化和数理统计。这些主题建立在我们设置的基础之上。我不会深入讨论细节,因为这超出了本文的范围,但我准备了一个学习路线图来指导你。
2020-10-29
2020-10-23
2020-10-12
AI研习社是AI学术青年和开发者社区,为大家提供一个顶会资讯、论文解读、数据竞赛、求职内推等的技术交流阵地,欢迎登陆www.yanxishe.com加入我们吧~
投稿、转载、媒介合作联系微信号 | bajiaojiao-sz
商务合作联系微信号 | LJ18825253481