机器学习和神经网络 - 页 28

 

第 25 讲 随机梯度下降



25. 随机梯度下降

在本视频中,引入了随机梯度下降 (SGD) 的概念,作为解决通常以有限和问题形式出现的大规模机器学习问题的优化方法。演讲者解释了 SGD 如何选择随机数据点来计算梯度以加快计算速度,以及由于方法的波动性质,它在接近最佳值时的行为与批量梯度下降有何不同。 SGD 的关键特性是随机梯度估计是期望中真实梯度的无偏版本,必须控制随机梯度的方差以减少噪声。小批量的使用被讨论为深度学习 GPU 训练中廉价并行的一种方式,但选择正确的小批量大小仍然是一个悬而未决的问题,它可能会在存在未见数据的情况下影响解决方案的稳健性。优化 SGD 的挑战包括确定小批量大小和计算随机梯度,但研究人员正试图通过开发泛化理论来了解 SGD 在神经网络中的功效。

  • 00:00:00 在本节中,演讲者介绍了随机梯度下降的概念,它是一种古老的优化方法,至今仍用于训练大型机器学习系统。他们解释说,解决优化问题在数据科学中至关重要,而且这些问题通常非常大。演讲者提供了梯度下降在 MATLAB 中的实现,并表明只需更改一行即可驱动所有深度学习工具箱和大规模机器学习。演讲者随后描述了机器学习中的优化问题,其中涉及在写为总和的成本函数上找到 x。这些被称为有限和问题,它们通常使用随机优化方法来解决。

  • 00:05:00 在本节中,演讲者讨论了大规模机器学习,这意味着训练数据点的数量 (n) 和向量的维数 (d) 都可以很大。大 n 可能达到数百万或数十亿,而大 d 可能包含多达十亿个特征。这推动了对大规模机器学习优化方法的大量研究,包括在数据结构中寻找次线性时间算法和处理此类大数据的哈希技巧。演讲者给出了线性代数中最经典的问题,最小二乘回归问题,以及另一种广泛使用的方法 la sol 的例子,它们都是用有限和格式的训练数据损失来写的。最后,演讲者指出,深度神经网络是具有 n 个训练数据点的有限和问题的另一个例子。

  • 00:10:00 在本节中,演讲者讨论了优化程序对于解决机器学习和统计中出现的有限和问题的必要性。这是因为该领域的大多数问题都可以表示为有限和问题,需要专门的优化程序来解决它们。演讲者介绍了梯度下降法,但指出计算大型数据集中单个点的梯度可能需要数小时或数天,这是一个主要缺点。演讲者征求听众的建议来克服这个缺点,提出的一些想法包括使用随机梯度下降和对完整数据集的子集进行采样。

  • 00:15:00 在本节中,演讲者讨论了随机梯度下降的概念,它涉及在每次迭代时随机选择一些数据点并计算单个点的梯度,从而使过程更快。然而,演讲者指出,关键问题是这个想法是否具有数学意义。随机梯度下降法最早由Robbins于1951年在Monroe提出,与梯度下降法相比较。演讲者指出,随机梯度下降对步长更敏感,并展示了一个玩具问题的模拟来说明直线如何波动。尽管存在波动,但该方法似乎仍在朝着最佳方向取得进展。
     
  • 00:20:00 在本节中,演讲者讨论了随机梯度下降 (SGD) 的概念,它计算随机选择的数据点的梯度乘以 alpha 值(步长)以逼近解决方案。该过程对步长参数非常敏感,比梯度下降更敏感。当他改变参数时,演讲者观察解决方案的进展并解释 SGD 的典型行为。他解释了为什么人们喜欢 SGD,因为它在大型数据集中一开始就取得了快速进展,并且可以在避免过度拟合的同时获得快速而肮脏的进展。然而,当它接近解决方案时,它波动更大,并且由于混沌行为很难找到最佳最优解。

  • 00:25:00 在本节中,演讲者讨论了随机梯度方法如何在使用二次函数的简单一维优化问题中发挥作用。目标是最小化这些二次函数,演讲者演示了如何使用各个组件的梯度来做到这一点。他们解释说,该方法在开始时效果很好,因为它使用了完整的梯度,但一旦接近最佳值,任何事情都可能发生,并且变得混乱。演讲者还展示了如何找到封闭形式的解决方案,以及在单个最小值和最大值的特定范围内可以在何处找到真正的最小值。

  • 00:30:00 在本节中,演讲者解释了当标量 X 位于混淆区域之外时随机梯度下降 (SGD) 的行为,这意味着该点距离解所在的位置很远。在这个遥远的区域,某些分量的随机梯度与完整梯度具有完全相同的符号,这是减少损失函数的方向。演讲者用它来解释为什么 SGD 可以在很远的地方取得稳固的进展,以及它如何提供惊人的初始速度,允许在进行批量梯度下降的单次迭代所需的时间内进行数百万次随机步骤。一旦进入混淆区域,随机梯度下降在优化方面的效率就会降低,但在机器学习中,波动可以使方法更稳健,更适合泛化。发言者指出,这是一种在机器学习、理论计算机科学和统计学中普遍存在的想法,在这些领域中,随机化被用来加速昂贵数量的计算。

  • 00:35:00 在本节中,演讲者讨论了随机梯度下降 (SGD) 的关键属性。 SGD 背后的主要思想是使用随机估计的梯度来节省计算量。 SGD 的关键属性是在期望中,随机梯度估计是真实梯度的无偏版本。除了这种无偏性之外,还控制了噪声量或随机性量,从而降低了随机梯度的方差。方差越小,你的随机梯度替代真实梯度的效果越好,收敛速度也越快。

  • 00:40:00 在本节中,演讲者讨论了随机梯度下降法及其在凸和非凸问题上的行为。演讲者还提到了该方法的两种变体,一种没有约束,选择随机向量,另一种有约束,随机选择训练数据点,有或没有替换。演讲者解释说,虽然该方法自 1951 年以来一直存在,并广泛用于深度学习工具包,但理论和实际应用之间仍然存在差距。即使我们知道如何分析的版本是均匀随机版本,工具包也使用无替换版本,这是随机梯度领域的一个主要开放问题。演讲者还提到了 mini-batch 思想,它使用一批点来减少方差,从而减少噪音。

  • 00:45:00 在视频的这一部分,演讲者讨论了小批量的概念,以及人们如何利用它们在深度学习 GPU 风格训练中提供廉价版本的并行性。 mini-batch 越大,并行处理的事情就越多。然而,还有一个难题是,使用非常大的小批量意味着随机梯度开始看起来更像批量梯度下降,它将噪声降低到混淆区域缩小太多的程度。这对机器学习是有害的,因为它可能导致神经网络过度拟合,从而难以预测看不见的数据。因此,选择合适的小批量大小仍然是深度神经网络优化过程中的一个悬而未决的问题。

  • 00:50:00 在本节中,演讲者讨论了与优化随机梯度下降 (SGD) 相关的挑战,包括确定使用哪个小批量以及如何计算随机梯度。引入反向传播算法作为计算单个随机梯度的流行方法,机器学习工具包可能有不同的方法来自动计算梯度。讨论了证明 SGD 功效的理论挑战,包括为什么 SGD 对神经网络如此有效的问题,尽管它被认为是次优的。研究人员目前正试图通过发展泛化理论来理解这个谜团。
 

第 26 讲。深度学习神经网络的结构



26. 深度学习神经网络结构

本视频讨论了用于深度学习的神经网络结构。目标是通过构建具有 m 个特征的特征向量的神经网络,以二进制方式对数据进行分类,创建一个可以将数据分类为两个类别之一的学习函数。非线性对于创建这些函数至关重要,因为线性分类器无法分离非线性数据。该视频还讨论了神经网络中权重和层数的重要性,并提供了 TensorFlow 游乐场等资源供用户练习创建函数。最后,视频讨论了用于证明切蛋糕得到的扁平块数公式的递归,以及它与深度学习中最小化总损失的优化问题的关系。

  • 00:00:00 本节教授介绍深度神经网络的中心结构,即学习训练数据并可以应用于测试数据的学习函数f的构造。目标是通过构建具有 m 个特征的特征向量的神经网络,以二进制方式对数据进行分类。该网络将创建一个学习功能,可以将数据分类为两个类别之一,例如男孩或女孩、猫或狗、卡车或汽车。教授还提到,这种结构已经在吉祥物 mit.edu/learning from data site 上可用了几个月,并将被添加到 Stellar 平台。

  • 00:05:00 在本节中,讲师解释了如何创建 X 的函数 f 以返回二分类的正确答案。讲师指出,该函数对于分类减一应该是负的,对于分类加一应该是正的。然而,讲师承认我们不需要让每个样本都正确,因为可能会出现过拟合,我们发现的规则应该涵盖几乎所有情况,但不是所有“奇怪”的情况。然后讲师推荐访问站点playground.tensorflow.org,一个简单的模型问题可以帮助个人学习深度学习。 playground 提供了四个示例,其中一个涉及找到在某些点上为正而在其他点上为负的函数。

  • 00:10:00 在本节中,演讲者讨论了神经网络中非线性的重要性,并指出如果使用支持向量机等线性分类器,则无法创建一些非线性函数分离数据。然后他展示了一个带有螺旋的二维分类问题的示例,其中系统试图找到一个函数,该函数在一个螺旋上为正,在另一个螺旋上为负,这需要相当多的时间,许多时期。演讲者还解释了什么是 epoch,并提到了在随机梯度下降中有替换的小批量和没有替换的小批量之间的区别。

  • 00:15:00 在本节中,演讲者讨论了一个名为 TensorFlow's playground 的网站,该网站允许用户使用非线性函数创建 X 的函数 f。该网站绘制了函数的零集,它将正集和负集分开,零介于两者之间。该网站允许用户决定层数和每层中的神经元数量,因为这些对于找到学习数据的函数 f 至关重要。演讲者还指出了线性函数在此过程中的重要性,并要求推荐一些好的卷积神经网络网站来进行练习。函数 f 的形式是 X 的向量,有五个分量,第一层有六个神经元,输出层有一个数字。

  • 00:20:00 在本节中,演讲者讨论了深度学习的神经网络结构。他们首先解释了神经网络的基本结构,其中涉及一个权重矩阵来计算输出 Y。然而,当为深度学习添加多层时,这个过程变得更加复杂。每一层都应该了解更多关于数据的信息,第一层学习基本事实,随后的每一层学习更多细节。最后,演讲者讨论了神经网络如何涉及精细映射并在每个组件上应用函数以获得最终输出。

  • 00:25:00 在本节中,演讲者讨论了深度学习中神经网络的结构。他们解释说,神经网络由一个依赖于权重和输入的学习函数组成,该函数是通过函数链或函数组合创建的,每个函数都由一个线性或仿射映射和一个非线性函数组成。这导致了一个连续且分段线性的复杂函数。演讲者指出,这样的函数依赖于要创建的矩阵和向量,并且取决于模型中的权重数量。

  • 00:30:00 在本节中,演讲者讨论了用于深度学习的神经网络结构,特别是线性函数“链”后接 ReLu 函数的概念。他们讨论了是否可以通过这种方式获得任何函数的问题,并得出结论,只有连续的分段线性函数是可能的。演讲者还使用折纸的概念来帮助可视化两个变量的分段线性函数的图形,它由沿直边连接的平面部分组成。提出计算件数的问题是为了帮助可视化。

  • 00:35:00 在这一部分,演讲者讨论了将一个平面折叠n次可以得到多少个平面的问题。这个问题对于理解函数 f 的自由度以及它是否可以通过采取足够多的折叠来逼近任何连续函数至关重要。演讲者指出,答案是肯定的,而且这类功能是通用的。此外,本节还谈到了在更广泛的计算机科学领域,尤其是神经网络中理解这一概念的重要性。

  • 00:40:00 在这一部分中,演讲者讨论了一个数学问题,涉及一张折叠纸中的扁平部分的数量。他们问如果将纸折叠更多次会形成多少片,并尝试创建一个递归公式来解决该问题。演讲者展示他们到目前为止找到的数字,并解释他们需要想出一个公式来计算具有 m 维表面的 n 折叠纸中的平面部分数。然后,他们计划在找到递归公式后将其添加到递归公式中。

  • 00:45:00 在本节中,演讲者使用一个视觉示例来帮助解释通过在高维空间中进行切割而创建的片段数量的公式。使用二项式数,该公式可以应用于任何给定的 M 和 N 维度。讲者举了一个N=3,M=2的例子来说明公式的使用方法。最后,该公式表示为 R 包含 M 维,等于二项式数,0 到 M。

  • 00:50:00 在本节中,演讲者讨论了用于证明切蛋糕产生的扁平块公式的递归。他们解释说,他们正在寻找的数量是之前的扁平件数量加上被切割的件数。递归规则在 Kleinberg 和其他人的论文的第 7.1 节中得到证明。找到这组函数后的下一步是选择 A 和权重。这导致了最小化总损失的问题,可以使用梯度下降和反向传播来解决。
 

第 27 讲。反向传播:求偏导数



27. 反向传播:求偏导数

该视频涵盖了与反向传播和寻找偏导数相关的几个主题。演讲者演示了偏导数链式法则的使用,并强调了矩阵乘法中计算顺序的重要性。反向传播被强调为计算梯度的有效算法,并给出了各种示例来证明其有效性。简要讨论了随机梯度下降的收敛性,以及与在随机梯度下降中使用随机顺序的损失函数样本相关的项目构想。总的来说,该视频全面概述了反向传播及其应用。

  • 00:00:00 在本节中,演讲者讨论了两个有趣的话题。首先,讨论了随机梯度下降的收敛性,重点更多地放在算法的逻辑和假设上,而不是证明本身。其次,演讲者提出了一个与在随机梯度下降中使用随机顺序的损失函数样本相关的项目构想。具体来说,该项目将涉及使用替换和不替换方法计算 100 个随机数列表的平均值,以确定方法的差异。

  • 00:05:00 在本节中,演讲者讨论了反向传播作为计算最速下降算法中梯度的一种方法。反向传播是使神经网络流行的关键计算,涉及使用反向模式下的自动微分快速计算梯度和导数。演讲者还建议探索在替换完成时平均值收敛的例子,以及随机梯度下降的好开始和坏结束,计算中的魔法词是提前停止。

  • 00:10:00 在本节中,演讲者讨论了反向传播及其在求偏导数中的用途。反向传播以前曾以自动微分的名义进行过研究,演讲者称赞开发深度神经网络的领导者实现了它的有效性。演讲者提供了一个简单的函数示例来说明 f(x) 及其导数的计算,并强调使用链式法则求偏导数。该部分还提到了 Christopher Olah 的博客,他对这个主题提供了清晰的解释。

  • 00:15:00 在本节中,演示者讨论了使用链式法则计算偏导数。他们使用双变量函数示例来演示如何计算函数的偏导数,从找到 F 和创建计算图开始。他们解释说,要使用链式法则,需要区分 F 计算中发现的每个因素,并适当地评估它们。该计算图用于演示深度学习的偏导数计算,其中评估了许多变量。

  • 00:20:00 在本节中,演讲者讨论使用正向模式自动微分求偏导数的过程。他们首先计算 F DX 的偏导数,将计算分解为简单的部分,然后用导数代替中间步骤。他们利用 X 的立方关于 X 的导数是 3X 的平方这一事实,当 X 等于 2 时得出的值为 12。然后他们认识到正向方法是浪费的,因为他们必须为 Y 导数做另一个图以及。演讲者还使用乘积法则求乘积的偏导数。该过程需要一些组织,但重点是将计算分解为简单的部分以简化导数。

  • 00:25:00 在本节中,演讲者解释了如何使用乘积法则通过计算图求偏导数。演讲者以寻找乘积的 X 导数为例,并为乘积中的两项命名。然后他计算乘积规则所需的值并使用它们计算导数。然而,他很难找到最终答案,并承认如果他想找到 FD,他将需要重新计算。演讲者建议使用反向模式会更有效,因为它允许同时计算两个偏导数。

  • 00:30:00 在本节中,演讲者讨论了反向传播技术如何通过向后跟踪所有路径来有效地计算梯度。这种技术有助于通过应用于一些已经详细计算出的链式法则找到所有导数。演讲者指出,回顾实际所做的事情后,微积分往往看起来很简单。反向模式 ad 方法用于计算 n 个一阶导数,成本仅为四或五倍,这在演讲者看来是惊人的。演讲者还举例说明了执行计算的顺序如何影响效率,以两个矩阵的乘法为例。

  • 00:35:00 在视频的这一部分,演讲者讨论了矩阵乘法中计算顺序的重要性,因为它会显着影响计算速度。然后他继续举一个反向传播的例子,并演示如何使用链式法则和各种其他导数规则在通过计算图向后移动时找到偏导数。他强调了一个事实,即通过重用链中的各个部分,可以创建更宽的链而无需大量成本,即使函数依赖于数百个变量,也可以加快计算速度。

  • 00:40:00 在视频的这一部分,演讲者解释了如何使用反向传播来寻找偏导数。他们演示了一个示例,其中他们使用链式法则找到关于 X 和 Y 的偏导数,并强调反向传播允许从一个链中找到所有导数,而不是为每个变量单独的链。演讲者指出这个过程可以应用于任何规模的系统,并简要提到了随机梯度下降的收敛性,他们将在以后的讲座中介绍。

  • 00:45:00 在本节中,演讲者讨论了将三个矩阵(A、B 和 C)相乘的两种不同方法,以及这样做所需的运算次数。第一种方法涉及将 A 乘以 BC,这需要 M x N x PQ 操作,其中 P 和 Q 分别是 B 和 C 的行数和列数。第二种方法涉及将 AB 乘以 C,这需要 M x P x Q 操作。演讲者强调,重要的是要注意矩阵相乘时所需的运算次数,尤其是在 C 是列向量的情况下,因为这可能会导致难以处理的非常大的矩阵。
     
  • 00:50:00 在本节中,演讲者讨论了偏导数和反向传播。演讲者演示了反向传播如何是偏导数的正确顺序,因为它允许两个大矩阵相乘并得到一个列向量,这比将一个列向量乘以一个矩阵得到一个新的列向量然后再将其相乘要快得多通过另一个矩阵得到另一个列向量。反向传播简化了过程并允许数量级更快的计算。
 

第 30 讲:完成一级矩阵,循环者!



第 30 讲:完成一级矩阵,循环者!

在第 30 讲中,讲师讨论了完成秩一矩阵和循环矩阵。他们从一个 2x2 行列式开始,并使用它来缩小矩阵中可以填充哪些值以使其排名第一的范围。然后,讲师转向一个 4x4 矩阵的组合问题,并介绍循环矩阵,该矩阵具有只能用四个给定数字创建的循环模式。本讲座还涵盖循环矩阵的循环卷积、特征值和特征向量,这些在信号处理中很重要。

  • 00:00:00 在本节中,讲师给出了先前实验课程中关于将矩阵完成为一阶矩阵的示例问题。问题集中在哪些职位可以填写,哪些职位不能填写以达到一阶矩阵。讲师解释了如何选择非零数,并提出了一个问题,即是否可以将具有五个非零数的矩阵完成为一阶矩阵。

  • 00:05:00 在本节中,讲师讨论了完成秩一矩阵和循环。他们首先检查一个 2x2 行列式,其中任何两个乘以两个的行列式都必须为 1,因此行列式为 0。他们使用这个想法来缩小矩阵中缺失数字的范围,以及如何填充其余数字的价值观。然后,讲师转到一个 4x4 示例并引入一个组合问题,确定哪些 5 个位置有效,哪些无效。最后,他们谈到了循环,它在矩阵中具有循环模式,其中每一行成为前一行向右移动一个元素。他们解释了如何创建循环矩阵及其属性,包括对角化。

  • 00:10:00 在本节中,讲师将讨论完成秩一矩阵和二分图。他们首先在 4x4 矩阵中指定一些数字,然后绘制一个带有行和列的二分图来表示数字之间的联系。讲师解释说,完成矩阵排名第一需要避免指定三个条目的 2x2 正方形。如果给出所有四个条目,将无法创建零行列式并且矩阵将不具有秩一。讲师将二分图转换为矩阵表示,以说明如何确定可以填充哪些条目以创建秩一矩阵。

  • 00:15:00 在本节中,教授讨论了完成一个秩一矩阵,特别是解决了如果没有 2x2 挡道是否总是可以完成它的问题。他通过示例证明,两个两个并不总是问题所在,并且可能会有更长的周期阻碍完成。关键要点是,如果没有循环,矩阵只能完成排名第一,这可以在相应的二分图中识别出来。

  • 00:20:00 在本节中,讲师讨论了完成具有六个边的循环以及它与矩阵中的循环概念的关系。他将绘制的循环图转换为矩阵,并解释了矩阵中的循环如何表明非零值必须满足某些要求。他提出了一个关于完成 2 阶矩阵的问题,并讨论了卷积在机器学习中的重要性。

  • 00:25:00 本节讲师介绍循环矩阵的概念,循环矩阵是一种特殊类型的卷积矩阵,其对角线为常数,绕一圈即可完成。循环矩阵是信号处理的重要组成部分,它们的代数特性使它们成为连接一组权重的有效方法。这是因为这里的关键矩阵是循环移位矩阵,它有助于从 P 和 P² 产生循环矩阵。例如,通过指定循环矩阵的第一列,MATLAB 可以使所有其他列循环移位,这意味着我们只需要四个数字即可定义一个四乘四的循环矩阵。

  • 00:30:00 在这节课中,介绍了循环矩阵的概念。结果表明,每个循环矩阵都是 P 中的多项式,其中 P 表示单次移位。还证明了如果两个矩阵是循环矩阵,将它们相乘会得到另一个循环矩阵。此外,单位矩阵是循环的,如果循环矩阵是平方的,则生成的矩阵也是循环的。循环矩阵相乘的目标是确保多项式次数不超过所需的项数。

  • 00:35:00 在本节中,讲师讨论了秩一矩阵和循环量。将 4x4 循环移位矩阵与三阶相乘时,存在一个问题,即为什么乘积不是六阶。关键是P到第四项真的是P到0项,所以乘积就是循环卷积。讲师随后解释了卷积和循环卷积的区别,并举例说明了两个向量之间的卷积计算。他还提醒观众,非循环卷积不使用圆圈符号,而循环卷积使用。

  • 00:40:00 在本节中,讲师讨论了循环卷积以及它如何用于循环乘以多项式,这对应于循环矩阵的乘法。一个因子的数字之和乘以另一个因子的数字之和,得到卷积中的数字之和。讲师还简要介绍了这些矩阵的特征值和特征向量。全一的向量是一个具有特征值的特征向量,它具有 P 的多项式幂和。讲座最后讨论了该领域更高级的主题。

  • 00:45:00 在这节课中,演讲者解释了矩阵 C 的特征向量与矩阵 P 的特征向量相同。矩阵 P 的特征向量是 1 和 -1,以及 i 和 -i。循环世界对于每个循环都有多个特征值和特征向量,这些是信号处理中的重要规则。
 

第 31 讲。循环矩阵的特征向量:傅立叶矩阵



31. 循环矩阵的特征向量:傅立叶矩阵

在这个关于循环矩阵的特征向量的视频中,演讲者讨论了循环矩阵与图像处理和机器学习的关系,以及它与傅里叶矩阵的联系。演讲者强调了理解与离散傅里叶变换 (DFT) 和傅里叶变换相关的卷积和循环矩阵的重要性。演讲者讨论了循环矩阵的特征向量,特别是傅里叶矩阵,以及它们是如何从同一组八个数构成的,这些数也是特征值。演讲者还谈到了傅立叶矩阵的性质,包括列如何正交但不是正交的,以及由于循环矩阵的对称性,其特征向量如何加起来为零,从而使它们彼此正交。最后,演讲者通过例子演示了 Argan Vector 作为傅立叶矩阵的特征向量的概念。

  • 00:00:00 在本节中,教授介绍了循环矩阵的主题,并提供了项目截止日期和评分的最新信息。他还提到了循环矩阵与离散傅里叶变换的联系,后者是工程和数学中的重要算法。循环矩阵的特殊形式,只需要 n 个条目来定义大小为 n x n 的矩阵,在许多应用中都很有用,包括图像的机器学习。

  • 00:05:00 在本节中,演讲者解释说图像通常由像素描述,并且可以具有包含数百万个分量的特征向量,这使得无法计算梯度下降深度学习所需的权重。但是深度学习中使用的矩阵比较特殊,不依赖于特征个数,类似于具有循环特征的循环矩阵。这些矩阵称为线性移位不变或线性时不变、卷积矩阵、三元组矩阵或常数对角矩阵,用于机器学习和图像处理。从本质上讲,它们通过减少深度网络中每一层所需的权重计算大小来帮助优化深度学习。

  • 00:10:00 在本节中,演讲者讨论了循环矩阵在图像处理和机器学习中的应用。他解释说,为了对具有大量像素的大图像进行操作,我们可以使用最大池化来减小系统的大小。然而,对于卷积运算,我们需要选择权重来突出重点。因此,我们使用滤波器来简化图像,例如低通滤波器。演讲者指出,在处理图像样本时,机器学习中会使用更广泛的神经网络,因为常数对角矩阵使用起来更自然、更高效。

  • 00:15:00 在本节中,演示者讨论循环矩阵的特征值和特征向量,特别是具有循环移位效应的置换矩阵。置换矩阵的奇异值都是一个,特征值可以通过取 P 减去 lambda I 并将行列式设置为零,得到 lambda 的四次方来找到。演示者还强调了理解与 DFT 和傅里叶变换相关的卷积和循环矩阵的重要性。

  • 00:20:00 在本节中,演讲者讨论了循环矩阵的特征向量,特别关注傅立叶矩阵。傅里叶矩阵的特征值是通过将行列式设置为零来找到的,这会导致一的四次方根。还讨论了 8x8 循环矩阵的特征值,即方程 lambda 的 8 次方等于 1 的八个解。这些解决方案以数字一、负一、四次和八次统一根的形式出现,并且很重要,因为它们作为特征向量发挥作用。正交矩阵的特征向量也作为具有正交特征向量的矩阵族被引入。

  • 00:25:00 在本节中,演讲者讨论了具有正交特征向量的不同矩阵族。对称矩阵具有正交特征向量和实特征值,而对角矩阵具有进入单位矩阵的特征向量。正交矩阵具有模为 1 的特征值,并且置换矩阵的特征向量是正交的。反对称矩阵具有只能为复数的特征值,使得它们无法具有实特征值。

  • 00:30:00 在本节中,演讲者讨论了具有正交特征向量的矩阵以及它们与正规矩阵的关系。具有正交特征向量的矩阵具有复杂的特征值,说话者写出包含任何特征值的对角矩阵。然后他建立了一个矩阵方程来展示如何识别正规矩阵,这实际上是非常罕见的。为了识别它们,必须测试矩阵是否等于其共轭转置。

  • 00:35:00 在本节中,演讲者讨论了循环矩阵的特征向量,尤其是傅立叶矩阵。置换 P 是正交的,因此它的特征向量是正交的,但这些循环矩阵也可交换,使它们成为正规矩阵。这意味着一旦我们找到 P 的特征向量,我们就找到了任何循环矩阵的特征向量,它们都是特殊的,因为它们与傅立叶相连。找到各种特征值的特征向量,包括 lambda 为 1、-1、i 和 -i。

  • 00:40:00 在本节中,演讲者讨论了循环矩阵的特征向量,并强调所有特征向量都是由同一组八个数字构成的,这也是特征值。所有大小为 n 的循环矩阵的特征向量矩阵是傅立叶矩阵,它是一个重要的复矩阵,可以进行快速傅立叶变换。矩阵中的所有条目都是单位圆上八个点之一的复数 W 的幂。第一个特征向量是所有的,而其余的是 W 的幂,这样矩阵的大小是 8x8。总的来说,由于循环矩阵具有共同的特征向量矩阵,因此它们具有相似的性质。

  • 00:45:00 在视频的这一部分中,演讲者解释了傅里叶矩阵的属性,傅里叶矩阵是由特征向量组成的循环矩阵,这些特征向量是 1 的八次方根的幂。矩阵的列是正交的,但不是正交的,这意味着它们需要除以八的平方根才能使它们正交。该矩阵为正规矩阵,由于循环矩阵的对称性,其特征向量加起来为零,使得它们相互正交。演讲者使用三乘三矩阵演示了此属性,其中特征向量的总和为零,使它们正交。
     
  • 00:50:00 在本节中,演讲者讨论了摩洛哥坚果向量如何成为傅里叶矩阵的特征向量。他演示了如何将 Argan 向量的分量相加,结果为 1。然后他展示了如何将 Argan 向量乘以 e 的 (2π/3) 次方,所得向量的分量总和为0. 这些演示说明了循环矩阵的特征向量是正交的概念。演讲者最后提到他将在下一课继续讨论傅里叶矩阵的话题,而 1806 的课程只剩下一周半了。
 

第32讲:ImageNet是一个卷积神经网络(CNN),卷积规则



第32讲:ImageNet是一个卷积神经网络(CNN),卷积规则

在深度学习课程的第 32 讲中,讨论了卷积神经网络 (CNN) 在图像分类中的强大功能,并以大型深度 CNN 赢得 ImageNet 竞赛为例,其中包含卷积层、法线层和最大池化层。讲座还重点介绍了连接乘法和卷积的卷积规则,以及二维卷积的示例、克罗内克积在二维傅立叶变换和信号处理中的应用,以及周期性和非周期性的区别关于卷积的案例。讲师还讨论了循环矩阵的特征向量和特征值以及克罗内克求和运算。

  • 00:00:00 在视频的这一部分中,讨论了卷积神经网络 (CNN) 在深度学习和图像分类方面的重要性。提到了 Hinton 和 Skipper 的一篇论文,其中训练了一个大型深度 CNN 来对 ImageNet 中的 120 万张高分辨率图像进行分类。比赛以 15% 的前 5 名测试错误率获胜,而第二名的错误率为 26%。 CNN 具有卷积层、普通层和最大池化层,一半样本在一个 GPU 上运行,另一半在另一个 GPU 上运行。 Dropout 也用于全连接层以减少过拟合。这证明了 CNN 在处理图像分类的巨大计算问题方面的能力。

  • 00:05:00 在视频的这一部分,演讲者讨论了卷积规则,这是卷积神经网络 (CNN) 的一个重要方面。他解释说,卷积是由多项式相乘产生的,以及卷积中内容 C*D 中的系数公式如何可以用不同的方式写成,以了解卷积是如何运行的。然后他继续给出两个函数的卷积示例,并解释说这个概念与 CNN 中两个向量的卷积有关。了解卷积对于理解 CNN 的内部工作原理至关重要,CNN 是一种具有 6000 万个参数并用于图像识别任务的神经网络。

  • 00:10:00 在本节中,讲师解释了函数的卷积规则以及它如何连接到两个函数的傅里叶变换。他提到如果 F 是 2 pi 周期的并且 G 是 2 pi 周期的,那么人们可能想要进行周期性卷积并得到一个周期也为 2 pi 的答案。他谈到了使卷积循环如何影响乘法,以及使用 W 代替 X 来表示循环 X。

  • 00:15:00 在视频的这一部分,讲师讨论了周期性和非周期性情况在卷积方面的区别。在周期性情况下,因子 W 被定义为具有 W 到 N 为 1 的属性,大于 n 的向量可以折叠回长度为 n 的向量。循环情况只考虑 K 从 0 到 n-1,和只从 0 到 n-1。在非周期性情况下,卷积有 P 加 Q 减 1 个分量,这个数字是在第一个实验中计算的。

  • 00:20:00 在本节中,讲师讨论循环矩阵的特征向量和特征值,特别是置换矩阵。特征向量是特征向量矩阵的列,记为“F”,F和C相乘得到四个特征值。讲师演示这个公式,解释如果C是P的组合,那么特征向量的相同组合将给出矩阵 C 的特征值。

  • 00:25:00 在本节中,讲师讨论了连接乘法和卷积的卷积规则。卷积规则将矩阵的乘法与矩阵的卷积联系起来。通过循环卷积,如果讲师将矩阵C乘以矩阵D,他将得到另一个循环矩阵。卷积后的 C 和 D 的系数表示 C 乘以 D 矩阵的对角线系数。讲师得出结论,CD 的特征值等于 C 的特征值乘以 D 的特征值,因为 C 和 D 可交换并且具有相同的特征向量。特征值逐个分量相乘,给出卷积规则的关系。

  • 00:30:00 在视频的这一部分,讲师讨论了卷积规则,它指出可以对图像进行卷积并对其应用傅立叶变换 (FT),或者应用 FT 分离图像,然后将它们相乘点-明智的。此规则很有用,因为它允许高效的快速傅立叶变换 (FFT)。讲师然后考虑每种方法的成本——卷积方法需要 N^2 步,而分离变换方法只需要 2NlogN 步。

  • 00:35:00 在本节中,演讲者讨论了二维卷积以及在二维中对两个函数进行卷积需要执行的操作。他们讨论了如何在 MATLAB 中执行此操作所需的命令是“cron”,以及如何使用它通过将两个一维矩阵 A 和 B 相乘来创建具有 N 个平方像素的二维矩阵。演讲者还谈到了如果想在密码学中将两个长整数相乘,使用卷积规则可能是一种更快、更有效的方法。

  • 00:40:00 在本节中,讨论了使用克罗内克积生成二维傅里叶变换的大矩阵。克罗内克乘积是一种运算,它采用一维 N 乘 n 矩阵并生成 N 平方乘 N 平方矩阵。通过使用 Kronecker 乘积将两个矩阵适当相乘,可以为二维傅立叶变换创建一个大矩阵。还讨论了微分方程中常用的拉普拉斯算子,其中可以使用克罗内克积生成采用五点格式且每个点有五个权重的二维矩阵。

  • 00:45:00 在本节中,演讲者讨论了克罗内克积及其如何用于信号处理。他解释说,他想使用 Kronecker 乘积为数据添加二维效应,然后添加垂直导数。这一起被称为 Kronecker 和,这是信号处理中的一个重要操作。他还鼓励学生给他发电子邮件,如果他们愿意自愿参加一个项目,在这个项目中他们可以讨论他们学到的东西并从听众那里得到反馈。
 

第 33 讲神经网络和学习函数



33.神经网络和学习功能

在此视频中,演讲者讨论了神经网络学习函数 f 的构造,该函数通过梯度下降或随机梯度下降进行优化,并应用于训练数据以最小化损失。他解释了使用手绘图来说明神经网络的概念和学习函数,以及机器学习中使用的各种损失函数,包括交叉熵损失。演讲者还谈到了在给定距离的情况下找到点位置的问题,这是各种应用的经典问题,例如使用核磁共振确定分子的形状。他最后讨论了 X 的构建,这是获得神经网络结构的最后一步,并提到了周五召集志愿者讨论一个项目的呼吁。

  • 00:00:00 在本节中,演讲者讨论了神经网络学习函数 f 的构造,该函数通过梯度下降或随机梯度下降进行优化,并应用于训练数据以最小化损失。学习函数是两组变量 X 和 V 的函数,其中 X 是权重,V 是来自训练数据的特征向量。神经网络的结构包括采用一组权重和样本向量的 f,产生非线性步骤,并重复该过程,直到达到所需的输出。线性步骤涉及获取输入 V0,将其乘以矩阵 AK 并添加偏置向量 BK 以移动原点。

  • 00:05:00 在本节中,演讲者讨论了神经网络如何通过获取一组输入、应用权重(在第 6 章中使用梯度下降选择权重)以及采取非线性步骤来产生新输出来工作。这个过程通过许多层重复,直到最终输出,这是神经网络对输入的预测。权重的数量通常会大大超过输入中的特征数量,从而造成不确定的情况。

  • 00:10:00 在本节中,演讲者使用手绘图片来说明神经网络的概念和学习功能。他画了一张图,其中有一个训练样本组件乘以v1,这是第一个in layer,第一层可以有不同数量的神经元,每个都来自eze by。损失函数就是我们要通过选择x2来最小化的函数,也就是所有的As和Bs。损失函数通常是所有 F 的有限和,可以为所有 I 计算,但使用随机梯度来选择其中的一个或一小部分。损失函数将减去样本 I 的真实结果,可以对其进行平方以获得所有样本的误差平方和。
     
  • 00:15:00 在本节中,演讲者讨论了机器学习中使用的各种损失函数,特别是在神经网络中。损失函数衡量神经网络的预测与真实值的匹配程度。 Speaker 提供了四种流行的损失函数,包括平方损失、L1 损失、铰链损失和交叉熵损失。交叉熵损失对于神经网络来说是最重要的,也是最常用的损失函数。演讲者还简要介绍了距离矩阵以及使用点之间的测量距离确定空间点位置的过程。

  • 00:20:00 在本节中,演讲者介绍了一个数学问题,涉及在给定点之间的距离的情况下找到空间中的位置。这个问题很简单,在各个领域都有应用。该部分仅占全书两页,但解决方案详细且完整。演讲者还鼓励学生就他们的项目提出问题,并建议直接给他发电子邮件。他还提到了一个关于在这门课之后要上什么课程的问题,并询问学生们是否打算在这方面上更多的课程。演讲者承认其他系有课程,但他只找到了第六门课程的列表。

  • 00:25:00 在本节中,演讲者介绍了麻省理工学院运筹学中心及其课程设置,包括优化、数据分析、统计和运筹学。演讲者还提到了万维网创始人蒂姆·伯纳斯-李爵士的演讲,以及他对 URL 中过多字母的责任。然后演讲者讨论了距离矩阵和从给定距离找到位置矩阵的问题。演讲者提到了几种应用,包括可以测量传感器之间距离的无线传感器网络,以及可以使用类似原理计算位置的 GPS 系统。

  • 00:30:00 在本节中,演讲者讨论了在给定点距离的情况下找到点位置的问题,这是一个具有简洁解决方案的经典问题。这些位置不是唯一的,因为它们可以进行平移和旋转,但演讲者建议通过将质心置于原点的中心来消除平移。寻找位置的问题适用于各种情况,例如使用核磁共振确定分子的形状。机器学习也可以描述为在高维空间中寻找低维曲面,这在数学上等同于寻找最适合给定点的弯曲流形。这个过程涉及发现问题的维度并将其线性化,从而将维度从原来的高维空间降低到问题的真实维度。

  • 00:35:00 在本节中,演讲者解释了如何在给定点积矩阵 G 的情况下找到矩阵 X。他们首先分析两个秩一矩阵,一个仅取决于行,另一个仅取决于列,并解释这些矩阵产生了点积矩阵的大部分重要部分。然后他们引入了一个对角矩阵,其中 XI 的内积与其自身位于对角线上,并注意到该矩阵与给定的 D 矩阵相关。从那里,他们展示了如何推导点积矩阵的方程式,并解释说一旦他们有了 G,他们就可以找到 X。但是,X 不是唯一的,因为它可以在不改变点积的情况下旋转,所以他们的下一步是弄清楚如何分解出旋转。

  • 00:40:00 在本节中,演讲者讨论了与点积矩阵相关的方程式,该方程式可用于计算神经网络中单位矩阵和 X 转置矩阵的叉积。点积矩阵是对角 D 矩阵、所有行都相同的常数矩阵和所有列都相同的常数矩阵的组合。演讲者一步一步地完成方程并分解每个组件,以揭示 X 转置 X 矩阵来自这些 Rank 1 位置和这些叉积。然后他们探讨了等式中一半的意义,但最终得出结论,有必要获得正确的结果。

  • 00:45:00 在本节中,演讲者讨论了如何用矩阵语言编写给定的方程式,以及如何最终找到给定 X 转置 X 的矩阵 X。他们使用线性代数求解,并注意到 X 可以向上找到到正交变换。讨论的两种主要方法是使用特征值或对 X 转置 X 使用消去法。演讲者强调了这些方法在神经网络和机器学习领域的重要性。

  • 00:50:00 在本节中,演讲者讨论了 X 的构造,它是对称的和半正定的,以及找到它的两种方法。第一种方法是特征值构造,它涉及计算 X 转置 X 的特征值和特征向量,然后在取特征值平方根的同时保留特征向量。第二种方法是 Cholesky 分解,它涉及对对称正定矩阵执行消去,然后使用生成的下三角矩阵 L 和对角矩阵 D 计算 X 作为 L 平方根 DL 转置的乘积。 Cholesky 分解比特征值构造更快并且更易于计算,使其成为更实用的选择。

  • 00:55:00 在本节中,演讲者总结了关于距离矩阵的讨论,这是获得神经网络结构的最后一步,将样本向量与权重分开。演讲者还提到了线性代数的两部分:找到东西将它们简化为三角形或将它们与对称矩阵连接起来。最后,演讲者提到了呼吁志愿者在周五讨论一个项目。
 

第 34 讲。距离矩阵,Procrustes 问题



34. 距离矩阵,Procrustes 问题

演讲者讨论了 Procrustes 问题,该问题涉及寻找使一组向量尽可能接近另一组向量的最佳正交变换。他们解释了不同的表达式来计算距离矩阵的 Frobenius 范数及其与 Procrustes 问题的联系。演讲者还介绍了矩阵迹的概念,并在 Procrustes 问题中找到了正确的 Q。此外,他们解决了深度学习是否真正有效的问题,并提出了涉及寻找最佳正交矩阵的矩阵问题的解决方案,这涉及计算两个矩阵的点积的 SVD 并使用来自 SVD 的正交矩阵。

  • 00:00:00 在本节中,演讲者解决了先前讨论中提出的一个问题,即寻找满足给定距离矩阵的点,以及如何解决三角不等式的失败。演讲者解释说,直接从距离矩阵得出的点积矩阵是半正定的,但如果三角不等式不成立,则点积矩阵不会得出正定的。这个问题不能通过改变维度来解决,因为无论维度如何,三角不等式仍然成立。

  • 00:05:00 在本节中,讲师讨论了 Procrustes 问题,该问题涉及使某物适合另一物。这个问题得名于一个希腊神话,关于 Procrustes 有一张一定长度的床,并调整访客的长度以适应床。该问题涉及找到一种方法将两组数据拟合在一起,讲师解释说,如果距离矩阵中的数字满足三角不等式,则方程得出的矩阵是正半定的。但是,如果违反三角不等式,则矩阵不是半正定的,具有负特征值,无法找到该点。讲师还暗示了一个大问题,即深度学习是否真的有效,他将在稍后解决。

  • 00:10:00 在本节中,将讨论 Procrustes 问题,该问题涉及寻找最佳正交变换,使一组向量尽可能接近另一组向量。如果这两组向量都是正交基,则可以很容易地使用正交矩阵 Q 将其中一组带入另一组,但情况并非总是如此。因此,问题是在 Frobenius 范数平方中最小化所有正交矩阵 Q,并将矩阵视为长向量。一种方法是查看转置 a,对其进行跟踪,然后求出所有平方和以获得矩阵的 Frobenius 范数。

  • 00:15:00 在本节中,讲师讨论了计算距离矩阵的 Frobenius 范数的不同表达式。他们表明,Frobenius 范数的平方可以表示为所有奇异值的平方和,表示为矩阵与其转置的乘积的迹,或者矩阵的转置与矩阵本身的乘积的迹.然后他们解释了这些表达式是如何相互联系的,并提到解决这个问题需要各种重要的事实,例如矩阵的每一列乘以 Q 不会改变 Frobenius 范数,矩阵乘以 Q 不会改变这一事实。 t 影响奇异值。

  • 00:20:00 在本节中,演讲者讨论了 Frobenius 范数的属性,包括当乘以正交因子或在另一侧乘以相同或不同因子时它保持不变的事实。演讲者还介绍了矩阵迹的概念,强调了矩阵顺序颠倒时迹不会改变的事实。然后演讲者解释了在 Procrustes 问题中获得正确 Q 的步骤。

  • 00:25:00 在本节中,演讲者讨论了深度学习是否真正有效的问题,并表示这是一个需要解决的重要问题。他们提到,虽然围绕深度学习和神经网络进行了大量宣传和炒作,但网络结构并非必然会成功,即使是多层。然后,演讲者提出了矩阵问题的解决方案,其中涉及寻找最佳正交矩阵,这涉及计算两个矩阵的点积的 SVD,并使用来自 SVD 的正交矩阵。
 

第 35 讲。在图中寻找聚类



35. 在图中寻找聚类

该视频讨论了图形中的聚类以及如何使用不同的算法(例如 K 均值和谱聚类)查找聚类。拉普拉斯矩阵用于谱聚类,可以通过其特征向量提供有关图中聚类的信息。 Fiedler 特征向量是最小正特征值的特征向量,对于聚类很重要。演讲者还强调了特征向量正交在识别不同聚类方面的重要性。此外,还有下一节课的简要预览,将介绍在线性代数中使用 Julia 进行反向传播。鼓励学生在线或在教师办公室外提交他们的项目。

  • 00:00:00 在本节中,演讲者讨论了图形中的聚类,这是将大图形细分为更小、更易于管理的集群的过程。问题是找到大小合理相等的两个簇,为此,必须使用一种算法来确定中心点 X 和 Y 的位置。目标是最小化中心点与中心点之间的距离之和图中的节点,同时确保每个集群中的节点数量合理接近。有几种算法可用于完成此操作,包括一些使用与图形关联的矩阵的算法。

  • 00:05:00 在本节中,演讲者讨论了用于将一组点(一些标记为 A,另一些标记为 B)划分为聚类或组的 K 均值聚类算法。该算法首先确定质心,即 A 组和 B 组的中间点,然后尝试根据这些质心形成最佳聚类。重复此过程,直到算法收敛到数据的最佳可能聚类。演讲者还介绍了质心的概念,质心是使组内所有点与质心的距离之和最小的点。

  • 00:10:00 在本节中,讲师讨论了解决在图中查找聚类问题的两种方法。第一种方法称为 K-means,它涉及为每个点找到最近的簇质心,将点重新分配给它们各自的簇,并重复该过程直到收敛。第二种方法称为谱聚类,涉及使用矩阵的特征值将相似点分组在一起。术语“谱”是指矩阵的特征值和线性代数中的谱定理。讲师强调谱定理适用于对称矩阵,并指出特征值是实数且特征向量是正交的。

  • 00:15:00 在本节中,演讲者讨论了图拉普拉斯矩阵,它是线性代数和图论之间的关键联系。他们将这个矩阵描述为对称正半定矩阵,并且有四个矩阵与任何图相关联:关联矩阵、度矩阵、邻接矩阵和拉普拉斯矩阵。演讲者使用一个简单的图形来举例说明这些矩阵中的每一个。拉普拉斯矩阵用于谱聚类,可以具有正交特征向量,这些向量具有特征值的多重性,这被称为谱定理。

  • 00:20:00 在本节中,演讲者通过使用拉普拉斯矩阵在给定图中查找聚类来解释图聚类的概念。度矩阵减去关联矩阵得到拉普拉斯矩阵。生成的矩阵是半正定矩阵,其特征向量提供有关图中簇的信息。第一个特征值始终为零,下一个特征值对于聚类很重要。演讲者强调了 Fiedler 向量的重要性,即最小正特征值的特征向量,并解释了它在图聚类中的重要性。

  • 00:25:00 在本节中,演讲者解释了在图形中查找簇时拉普拉斯矩阵为何如此命名。拉普拉斯矩阵的对角线为 4 次,它允许通过其特征向量找到聚类。具体来说,Fiedler 特征向量可以确定将图划分为两个簇的正负分量。这种方法提供了一种使用拉普拉斯图来决定哪些节点属于哪个集群的方法。

  • 00:30:00 在本节中,演讲者讨论了图形中的聚类以及如何使用不同的算法(例如 k-means 和谱聚类)查找聚类。他解释说,对称矩阵的特征向量是正交的,这意味着它们相加为零,可用于识别不同的簇。他还提到针对同一问题还提出了其他算法,并简要介绍了下一节课的内容,下一节课将介绍在线性代数中使用 Julia 进行反向传播。演讲者鼓励学生在线或在他的办公室外提交他们的项目。
 

第 36 讲:Alan Edelman 和 Julia 语言



第 36 讲:Alan Edelman 和 Julia 语言

在此视频中,Alan Edelman 讨论了编程语言对机器学习的强大功能及其在数学中的重要性。他强调了 Julia 语言的最新发展,该语言因其在机器学习中的技术优势和可用性而受到谷歌的认可。 Edelman 解释了 Julia 中的自动微分是如何工作的,并给出了一个通过巴比伦算法在不使用数值有限差分的情况下计算 x 的平方根的示例。他还讨论了在 Julia 中使用类型来进行高效计算和使用块矩阵简化反向传播过程。总的来说,爱德曼强调了线性代数对于数学计算的重要性及其在理解复杂现象中的作用。

  • 00:00:00 在本节中,Alan Edelman 讨论了 Strang 教授关于行秩等于列秩的演示,以及该概念如何应用于零矩阵。然后,他谈到了 Julia 的最新发展,这是一种在机器学习领域越来越受欢迎的编程语言,以及谷歌如何认识到它在这一领域的力量。谷歌最近发表了一篇博文,指出只有两种语言足以进行机器学习,而 Julia 就是其中之一。 Edelman 提供了示例来说明这一点,并鼓励学生查看博客文章以获取更多信息。
     
  • 00:05:00 在本节中,Alan Edelman 讨论了编程语言在数学意义上的重要性以及它们不仅仅实现算法的能力。他解释说,根据技术优点和可用性,Julia、Swift、C++ 和 Rust 是被认为适合机器学习的四种编程语言。 Edelman 强调了线性代数作为所有工程课程基础的重要性及其在历史上的不幸延迟。然后,他深入研究了自动微分及其与微积分的关系、他最初对它的怀疑,以及他在他的笔记本中探索的关于正向模式自动微分的技术细节。

  • 00:10:00 在本节中,Alan Edelman 讨论了他对自动微分的最初想法,以及他如何认为这就像他在学校学习的微积分一样,但使用计算机。然而,他很快意识到还有第三种既不是有限差分也不是链式法则的方法,这让他着迷。然后,他分享了一个示例,说明他如何使用 Julia 中的巴比伦算法计算 x 的平方根,以及他如何能够在不显式输入导数公式的情况下获得平方根的导数,这要归功于 Julia 的自动微分功能。

  • 00:15:00 在本节中,演讲者描述了使用 Julia 代码计算数字的平方根而不使用有限差分计算。该代码创建了一种称为“对偶数”的变量,它是一对表示数值函数及其导数的浮点数。然后说话者重载加法和除法运算以实现商规则,允许使用巴比伦算法计算平方根。该代码在不使用数值有限差分的情况下工作,演讲者指出 Julia 允许在新上下文中重用现有代码以执行“魔术”。

  • 00:20:00 在本节中,Alan Edelman 解释了 Julia 编程语言如何使用巴比伦算法对汇编代码中的对偶数有效地计算导数。他演示了在 Python 的符号计算包中运行的相同代码如何给出具有大系数的符号计算,这是非常低效的。然后他揭示了 SVD,另一种算法使他相信巴比伦算法是如何工作的。通过对每一行代码求导,算法可以收敛到平方根和平方根的导数。得到的导数不是符号或数字,而是在每一步中使用商法则和加法法则来得到答案。

  • 00:25:00 在本节中,Julia 语言的创建者 Alan Edelman 讨论了自动微分在该语言中的工作原理。 Edelman 建议软件可以通过让 JIT 编译器处理它来自动执行此操作,而不是手动对每一行进行派生。这消除了编写翻译器或手写的需要,使编码更加精简。 Edelman 指出,机器学习在很大程度上依赖于优化问题,这些问题都是关于求导数的,这使得自动微分成为该过程的重要组成部分。最后,他解释了使用类型如何简化创建结构化矩阵来存储数据的过程。

  • 00:30:00 在本节中,Alan Edelman 讨论了如何在 Julia 中使用类型来有效地仅存储执行计算时需要的内容,这使其有别于 Python 和 MATLAB 等具有更多开销的语言。然后,他简要介绍了神经网络中沉浸式模式微分的概念,从一个标量示例开始,然后推广到矩阵和向量。他写出了这个过程中涉及的线性代数,但时间不够用,无法完全解释清楚。

  • 00:35:00 在本节中,Edelman 解释了如何在 Julia 中使用块矩阵来执行反向传播,而无需手动计算导数。他展示了如何使用对角矩阵和下三角矩阵来简化反向传播过程并利用 Julia 的内置函数。通过使用线性代数,他演示了反斜杠如何求解下三角矩阵,从而使计算导数的任务变得更加容易。爱德曼强调,线性代数对于许多数学计算来说是必不可少的,它是理解许多复杂现象的秘诀。