> Images by Author unless otherwise indicated 从头开始理解神经网络的内部运作了解机器学习算法背后的数学是一种超能力。 如果您曾经为现实生活中的问题构建过模型,那么您可能会发现,要想超越基准性能,熟悉细节可能会大有帮助。 当您想突破现有技术的界限时,尤其如此。 但是,这些知识大部分都隐藏在高级数学层的后面。 因为它是建立在多变量演算和概率论基础之上的,所以理解诸如随机梯度下降之类的方法似乎很困难。 但是,有了适当的基础,大多数想法可以被视为很自然。 如果您是初学者,并且不一定要接受高等数学的正规教育,那么为自己创建课程非常困难。 在本文中,我的目标是提出一个路线图,使您从绝对零开始,深入了解神经网络的工作原理。 为了使事情简单,目的不是覆盖所有内容。 相反,我们将专注于获得方向。 这样,您将可以根据需要轻松学习其他主题。 建议不要将本文作为一个整体来阅读,而建议您将本文作为您学习的参考点。 深入介绍所引入的概念,然后检查路线图并继续前进。 我坚信这是最好的学习方式:我会向您展示这条路,但您必须走这条路。 基本面大多数机器学习都建立在三个支柱上:线性代数,微积分和概率论。 由于最后一个基于前两个,所以我们应该从它们开始。 微积分和线性代数可以独立研究,就像标准课程中通常那样。 微积分微积分是对功能的微分和整合的研究。 本质上,神经网络是可微的函数,因此微积分将成为训练神经网络的基本工具,正如我们将看到的。 为了使自己熟悉这些概念,您应该使事情变得简单并首次研究单个变量的功能。 根据定义,函数的导数定义为 给定h的比率是点(x,f(x))和(x + h,f(x + h))之间线的斜率。 在极限情况下,这实质上是切线在点x处的斜率。 下图说明了该概念。 > Visualizing the derivative of a function 可以使用微分来优化函数:导数在局部最大值或最小值处为零。 (但是,从另一个方向看,这是不正确的;请参见f(x)=x³为0。)导数为零的点称为临界点。 临界点是最小值还是最大值可以通过查看二阶导数来确定: 关于区分,有一些基本规则,但最重要的可能是所谓的链式规则: 告诉我们如何计算组合函数的导数。 积分通常被称为差异的逆。 这是真的,因为 它适用于任何可积函数f(x)。 函数的积分也可以视为曲线下的有符号区域。 例如, 因为当函数为负数时,该区域也有一个负号。 > The signed area under a sine curve between -π and π 整合本身在理解期望值的概念中起着作用。 例如,熵和Kullback-Leibler散度之类的量是根据积分定义的。 进一步研究我会推荐麻省理工学院的单变量微积分课程。 (通常,麻省理工学院的在线课程始终是极好的学习资源。)如果您更喜欢一本书,那么就有很多教科书可供选择。 吉尔伯特·斯特朗(Gilbert Strang)所著的《微积分》一书再一次是免费的,它是一本很好的资源,完全免费。 线性代数正如我提到的,神经网络本质上是功能,是使用微积分工具进行训练的。 但是,它们是用线性代数概念(如矩阵乘法)描述的。 线性代数是一门涉及机器学习许多重要方面的广泛学科,因此这将是一个重要的领域。 向量空间为了对线性代数有一个很好的理解,我建议从向量空间开始。 最好先讨论一种特殊情况。 您可以将平面中的每个点视为一个元组 这些本质上是从零指向(x 1,x 2)的向量。 您可以将这些向量相加并与标量相乘: 这是向量空间的原型模型。 通常,如果可以将向量加在一起并将向量与实数相乘,则向量V的集合是实数上的向量空间,这样可以满足以下属性: 不要惊慌! 我知道这看起来很可怕(至少当我是数学专业的新生时,对我来说看起来至少如此),但事实并非如此。 这些只是保证向量可以像您期望的那样相加和缩放。 在考虑向量空间时,如果您在心理上将它们建模为 矢量空间如果您觉得对矢量空间有很好的了解,那么下一步就是了解如何测量矢量的大小。 默认情况下,向量空间本身不提供任何工具。 您将如何在飞机上做到这一点? 您可能已经知道那里,我们有 这是规范的特例。 通常,如果存在函数,则将向量空间V赋范 称之为规范 同样,这可能很可怕,但这是一个简单且必不可少的概念。 那里有很多规范,但是最重要的是p规范族 (p = 2时,我们得到上面提到的特殊情况)和最高范数 有时,例如对于p = 2,范数来自所谓的内积,即双线性函数 这样 具有内积的向量空间称为内积空间。 一个例子是经典的欧几里得积 每个内部产品都可以通过以下方式变成规范 当两个向量的内积为零时,我们说这些向量彼此正交。 (尝试在飞机上提出一些具体示例,以更深入地理解该概念。) 基础和正交/正交基础尽管向量空间是无限的(在我们的示例中),但是您可以找到向量的有限集合,这些集合可用于表示空间中的所有向量。 例如,在飞机上,我们有 当 这是基础和正交基础的特例。 通常,基础是向量的最小集合 使它们的线性组合跨越向量空间: 任何向量空间始终存在一个基础。 (它可能不是有限集,但现在不应该引起我们注意。)毫无疑问,在讨论线性空间时,基础可以大大简化事情。 当基础中的向量彼此正交时,我们称其为正交基础。 如果每个基本向量的范数在正交基础上为1,我们就说它是正交的。 线性变换与向量空间有关的关键对象之一是线性变换。 如果您以前看过神经网络,您就会知道基本的构建基块之一是以下形式的层 其中A是矩阵,b和x是向量,而σ是S型函数。 (或者,实际上是任何激活函数。)那么,Ax部分是线性变换。 一般来说,功能 是向量空间V和W之间的线性变换,如果 对V中的所有x,y和所有实数都成立。 举一个具体的例子,围绕原点的旋转是线性变换。 毫无疑问,关于线性变换的最关键的事实是它们可以用矩阵表示,正如您将在研究中看到的那样。 矩阵及其运算如果线性变换很明确,则可以研究矩阵。 (线性代数课程通常从矩阵开始,但是我会推荐这种方式,其原因将在后面解释。) 矩阵最重要的运算是矩阵乘积。 通常,如果A和B是由 那么他们的产品可以通过 这似乎很难理解,但实际上非常简单。 看下图,演示如何计算产品第二行第一列中的元素。 之所以定义矩阵乘法,是因为矩阵表示向量空间之间的线性变换。 矩阵乘法是线性变换的组成。 如果您想了解更多有关此的内容,Towards Data Science上有一篇很棒的文章,详细解释了事情。 行列式在我看来,行列式是线性代数中要掌握的最具挑战性的概念之一。 根据您的学习资源,它通常由递归定义或迭代所有排列的总和定义。 没有大量的数学经验,它们都不是易处理的。 要了解这一概念,请观看下面的视频。 相信我,这是魔术。 总而言之,矩阵的行列式描述了对象的体积在相应的线性变换下如何缩放。 如果变换改变方向,则行列式的符号为负。 您最终将需要了解如何计算行列式,但是现在我不必担心。 特征值,特征向量和矩阵分解标准的第一线性代数课程通常以特征值/特征向量和一些特殊的矩阵分解(例如奇异值分解)结尾。 假设我们有一个矩阵A。如果存在向量x(称为特征向量),则数字λ是A的特征值 持有。 换句话说,对于矢量x,由A表示的线性变换是对λ的缩放。 这个概念在线性代数中起着至关重要的作用。 (并且实际上在广泛使用线性代数的每个领域中。) 此时,您已经准备好熟悉一些矩阵分解。 如果您仔细考虑一下,从计算的角度来看,哪种类型的矩阵最好? 对角矩阵! 如果线性变换具有对角矩阵,则在任意矢量上计算其值很简单。 大多数特殊形式旨在将矩阵A分解为矩阵的乘积,其中最好至少有一个对角线。 最著名的奇异值分解(Singular Value Decomposition,简称SVD)指出存在特殊矩阵U,V和对角矩阵Σ 持有。 (U和V是所谓的unit矩阵,我在这里没有定义,足以知道它是一个特殊的矩阵族。) SVD还用于执行主成分分析,这是最简单,最著名的降维方法之一。 进一步研究线性代数可以通过许多方法来教授。 我在这里概述的路径是由谢尔顿·阿克斯勒(Sheldon Axler)教科书《线性代数正确完成》启发的。 对于在线讲座,我会推荐麻省理工学院OpenCourseWare的线性代数课程,这是一个很好的资源。 如果一门课程可能太多,那么这里有很多很棒的文章,例如,以下内容。 多变量演算这是线性代数和微积分结合在一起的部分,为训练神经网络的主要工具(梯度下降)奠定了基础。 从数学上讲,神经网络只是多个变量的函数。 (尽管,变量的数量可以是数百万。) 与单变量演算相似,这里的两个主要主题是微分和积分。 假设我们有一个功能 将向量映射到实数。 在二维(即n = 2)中,可以将其图想象为一个曲面。 (由于人类看不到高于三个维度,因此很难形象化具有两个以上真实变量的函数。) > Graph of a function of two variables. 多个变量的微分在单个变量中,导数是切线的斜率。 您如何在这里定义切线? 表面上的一个点有多个切线,而不仅仅是一个。 但是,有两个特殊的切线:一个切线平行于x-z平面,而另一个切线与y-z平面平行。 它们的斜率由偏导数确定,由 也就是说,您采用通过固定除一个变量以外的所有变量而获得的函数的派生形式。 (对于≥3个变量,其正式定义是相同的,只是符号更复杂。) 这些特殊方向的切线横跨切线平面。 > Tangent plane. 渐变色还有另一个特殊的方向:梯度,它是由 渐变始终指向最大增加的方向! 因此,如果您朝这个方向迈出很小的一步,您的海拔高度将是您可以选择的所有其他方向中最大的。 这是梯度下降的基本思想,它是使函数最大化的算法。 其步骤如下。 · 计算当前位置x₀处的梯度。 · 在梯度方向上走一小步,即可到达点x₁。 (步长称为学习率。) · 返回到步骤1。重复该过程,直到收敛为止。 当然,这种基本算法存在一些缺陷,这些缺陷多年来已得到改善。 基于现代梯度下降的优化器采用了许多技巧,例如自适应步长,动量和其他方法,在此不再赘述。 在实践中计算梯度是困难的。 功能通常由其他功能的组成来描述,例如,熟悉的线性层 其中A是矩阵,b和x是向量,而σ是S型函数。 (当然,可以有其他激活,但是为简单起见,我们将坚持使用。)您将如何计算该梯度? 到目前为止,还不清楚如何为诸如此类的矢量函数定义梯度,所以让我们讨论一下! 功能 总是可以像矢量标量函数这样写 g的梯度由矩阵定义,该矩阵的第k行是第k个分量的梯度。 那是, 该矩阵称为g的总导数。 在我们的例子中 事情变得更加复杂,因为它由两个功能组成: 和 通过将单变量S形分量应用来定义。 函数l可以进一步分解为从n维向量空间到实数空间的m个函数的映射: 当 如果计算总导数,则会看到 这是多元函数的链式规则,完全具有通用性。 没有它,就没有简单的方法来计算神经网络的梯度,而神经网络最终是许多功能的组合。 高阶导数与单变量情况类似,梯度和导数在确定空间中的给定点是局部最小值还是最大值方面也起作用。 (或两者都不是。)举一个具体的例子,训练神经网络等效于最小化参数训练数据上的损失函数。 这是关于找到最佳参数配置w的全部目的: 当 分别是神经网络和损失函数。 对于说n个变量的一般可微分矢量标量函数,存在n²个二阶导数,形成黑森州矩阵 在多个变量中,Hessian的行列式充当二阶导数的角色。 类似地,它可以用来判断临界点(即所有导数均为零)是最小值,最大值还是鞍点。 进一步研究关于多变量微积分,有很多很棒的在线课程。 我有两个具体建议: · 可汗学院多元微积分, · MIT多变量演算。 现在我们准备接受最后一个主题:概率论! 概率论概率论是对机会进行数学严格的研究,这是科学所有领域的基础。 抛开确切的定义,让我们考虑一下概率代表什么。 假设我掷硬币,有50%的概率(或0.5的概率)为正面。 重复10次实验后,我得到了多少个头? 如果您回答了5,则您错了。 正面概率为0.5并不能保证每一秒的掷出都是正面。 相反,这意味着如果您重复n次实验(其中n是一个非常大的数字),那么磁头的数量将非常接近n / 2。 为了更好地把握概率,我建议您在下面写我的帖子,以提供简洁但在数学上正确的概念描述。 除了基础知识之外,还有一些您需要了解的高级知识,最重要的是期望值和熵。 期望值假设您和朋友一起玩游戏。 您扔一个经典的六面骰子,如果结果是1或2,您将赢得300美元。 否则,您将输掉200。如果玩此游戏足够长的时间,您每轮的平均收益是多少? 你应该玩这个游戏吗? 好吧,您以1/3的概率赢了100块钱,而以2/3的概率赢了200块钱。 也就是说,如果X是对掷骰子结果进行编码的随机变量,则 这是期望值,也就是说,从长远来看,您每轮将获得的平均金额。 由于这是消极的,所以您会赔钱,所以您永远不要玩此游戏。 一般而言,期望值定义为 对于离散随机变量和 用于实值连续随机变量。 大数定律人们经常错误地将某些现象归因于大数定律。 例如,处于亏损趋势的赌徒认为,由于人数众多的定律,他们应该很快就获胜。 这是完全错误的。 让我们看看这到底是什么! 假设 是代表同一实验的独立重复的随机变量。 (例如,掷骰子或扔硬币。) 本质上,大数定律指出 从长远来看,这就是结果的平均值,等于期望值。 一种解释是,如果随机事件重复了足够多次,则单个结果可能无关紧要。 因此,如果您在娱乐场中玩的游戏的预期价值为负值(就像他们一样),那么偶尔赢球也没关系。 大数定律意味着您会赔钱。 为了取得一些进步,LLN对于随机梯度下降必不可少。 信息论来玩个游戏。 我想过一个介于1到1024之间的数字,您必须猜出来。 您可以提出问题,但您的目标是使用尽可能少的问题。 你需要多少? 如果玩得很聪明,您将对自己的问题进行二进制搜索。 首先,您可能会问:数字是1到512之间吗? 这样,您将搜索空间减少了一半。 使用此策略,您可以找出答案 问题。 但是,如果我在选择数字时不使用统一分布怎么办? 例如,我本可以使用泊松分布。 > Probability mass functions for Poisson distributions. Source: Wikipedia 在这里,您可能会需要较少的问题,因为您知道分布倾向于集中在特定点上。 (取决于参数。) 在极端情况下,当分布集中在一个数字上时,您需要零个问题才能正确猜测。 通常,问题的数量取决于分发所携带的信息。 均匀分布包含的信息量最少,而单一分布的是纯信息。 熵是一种量化的方法。 它的定义是 对于离散随机变量和 对于连续的,实值的。 (对数的底数通常为2,e或10,但这并不重要。) 如果您曾经使用过分类模型,则可能会遇到交叉熵损失,其定义为 其中P是基本事实(分布集中于单个类别),而带阴影的版本表示类别预测。 这衡量了预测与基本事实相比有多少'信息'。 当预测匹配时,交叉熵损失为零。 另一个常用量是Kullback-Leibler散度,定义为 其中P和Q是两个概率分布。 这本质上是交叉熵减去熵,可以认为是量化两个分布的差异。 例如,在训练生成对抗网络时,这很有用。 最小化Kullback-Leibler散度可确保两个分布相似。 进一步研究在这里,我将为您推荐两本书: · 模式识别与机器学习,克里斯托弗·毕晓普(Christopher Bishop) · Trevor Hastie,Robert Tibshirani和Jerome Friedman撰写的《统计学习的要素》。 这是两本基本的教科书,它们教给您的不仅仅是概率论。 它们都超出了基础知识,但是相应的章节提供了出色的介绍。 超越数学基础以此,我们回顾了理解神经网络的必要数学。 现在,您已准备好进行有趣的部分:机器学习! 要真正了解神经网络的工作原理,您仍然必须学习一些优化和数学统计信息。 这些主题建立在我们设定的基础上。 我不会详细介绍,因为这超出了本文的范围,但是我已经准备了一份研究路线图来指导您。 如果您想了解更多有关这些主题的信息,请在下面查看我的一些文章! (本文翻译自Tivadar Danka的文章《The Roadmap of Mathematics for Deep Learning》,参考:https:///the-roadmap-of-mathematics-for-deep-learning-357b3db8569b) |
|