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

 

巨型R4。神经网络



巨型R4。神经网络

该视频涵盖了神经网络的各个方面,包括它们的表示、输入和输出的混淆、S 形函数和性能函数、权重和偏差、反向传播、改变 S 形函数和性能函数、阈值权重、可视化以及神经网络的潜力。讲师解释了测验所需的各种公式以及如何递归计算和调整增量。他还讨论了解决简单问题所需的神经网络类型,并提到了神经网络最近在马里兰大学的游戏竞赛中的实际应用。最后,他提到虽然神经网络由于其研究的局限性和复杂性而失宠,但它们对于测验仍然有用。

  • 00:00:00 在本节中,Patrick 介绍了一种为 603 中的问题绘制神经网络的新方法。他展示了同一神经网络的两种不同表示形式,并解释了为什么右边的表示更可取。他还讨论了学生在使用神经网络时经常遇到的一些问题,例如输入和输出的混淆以及隐含的权重乘法。 Patrick 为使用旧测验的学生提供转换指南,并完成测验所需的公式。最后,他提到了将 sigmoid 函数更改为其他函数的可能性,并建议学生在这种情况下将其更改为 plus。

  • 00:05:00 在本节中,讲师解释了 sigmoid 函数,即 1 加 e 减去 x,以及它的重要性质,其中 sigmoid 的导数是它本身。还讨论了性能函数,它告诉神经网络它们的结果有多错误。他们选择他们的偏好函数为 1/2 D,即期望输出减去实际输出的平方,这样做的原因是性能的导数是负的,这样更容易计算。然后讲师谈到将 sigmoid 函数更改为其他函数并分析反向传播函数会发生什么情况,特别是新的权重计算,它涉及逐渐改变权重以达到所需的结果。
     
  • 00:10:00 在本节中,演讲者解释了神经网络中使用的权重和偏差。权重由“w1I”和“w2B”等名称表示,其中“I”和“B”是网络中的节点。偏差偏移量始终附加到 -1,并且在测验中给出了决定爬山步长大小的 alpha 值。节点的输入用“I”表示,它们乘以 delta,delta 是由于特定权重的变化而导致的神经网络输出的变化。使用偏导数计算增量以确定权重对网络性能的贡献程度。

  • 00:15:00 在本节中,演讲者讨论了在最后一层神经网络中使用导数和链式法则获得最终权重的过程。使用了 sigmoid 函数的导数,为了计算新权重的增量,还需要考虑前面层中的权重。演讲者提出了一种递归解决方案,该解决方案涉及对给定节点的所有子节点求和,这反过来会影响输出。递归执行此过程,直到获得最终权重的增量。

  • 00:20:00 在本节中,讲师讨论改变 S 型函数和性能函数如何影响神经网络中使用的方程。他解释说,如果 sigmoid 函数发生变化,唯一改变的是 Delta F 方程,它被 sigmoid 函数的新导数所取代。同样,如果更换了性能函数,只需调整 Delta F 方程即可。然后,讲师继续解释神经网络中阈值权重和常规权重之间的差异,以及它们如何影响网络的整体功能。

  • 00:25:00 在本节中,演讲者讨论了如何可视化神经网络以及拥有对您有意义的表示对于有效解决问题的重要性。他解释了加法器节点是如何工作的,并且它的导数只是一个。他提供了 Delta F 和 Delta a 的公式,并解释了 B 部分的过程,其中涉及计算神经网络的输出并执行一步反向传播以找到新的权重。他要求学生们提出问题来澄清他们的疑虑,因为他无法要求每个人都检查他们是否在跟进。

  • 00:30:00 在本节中,视频讨论了神经网络的新权重以及一步反向传播后的输出。新权重是使用旧权重、学习率常数和增量值计算得出的。输出最终确定为 3。视频随后提出了一个问题,即如果训练网络学习给定数据会发生什么,并继续解释神经网络如何在网络中的每个节点的图形上画线。然而,需要注意的是,预测这个网将绘制什么有点棘手。

  • 00:35:00 在文字记录的这一部分,演讲者讨论了一个神经网络,该网络归结为只有一个节点,因为它每次都累加并且从不采用阈值,使其模拟而不是数字。神经网络的简化形式包含由圆圈表示的节点,其中每个圆圈都有一个 sigmoid。存在一个问题,ABCDEF 需要与 1 到 6 个匹配,每个只使用一次。演讲者解释说,每个 sigmoid 节点都可以在图中绘制一条线,如果它接收到两个输入,则可以是对角线,如果接收到一个输入,则可以是水平/垂直线。二级节点可以对前两个执行逻辑布尔运算,例如和/或。然后演讲者继续确定最简单的问题,即问题 6,并得出结论,每个网络到一个问题存在一对一的映射,可以一起解决所有六个问题。

  • 00:40:00 在本节中,演讲者讨论了创建 X 或神经网络的挑战性,因为很难区分单个节点中必须为高电平的两个输入。然而,有很多可能性,演讲者建议使用节点 3 和节点 4 给出值,使用节点 5 提供导致异或的阈值组合。演讲者还解释说,像 B 那样配对两条横线是不可能的,但因为 D 必须画一条横线和一条竖线,所以他们必须使用 B 来创建两条横线。

  • 00:45:00 在本节中,演讲者解释了神经网络绘图练习的目的。通过画出简单的问题,人们可以看出解决这些问题可能需要的神经网络类型。这可以帮助人们避免针对给定问题设计过于简单或过于复杂的神经网络。演讲者还举例说明了神经网络最近在马里兰大学的一场游戏比赛中的实际应用。

  • 00:50:00 在视频的这一部分,演讲者讨论了神经网络在学习不同任务和规则方面的潜力。他描述了一个实验,其中训练神经网络从一组随机数据中学习任何东西,虽然实验结果不清楚,但该研究的其他参与者试图通过实验测试找到规则的基本属性。演讲者接着解释说,神经网络已被用于许多研究领域,包括认知科学和人工智能,但由于其局限性和复杂性,它们已经失宠。尽管如此,演讲者提到他们创建简单的网络是为了测验,尽管他澄清说当今研究中使用的任何实际神经网络对于测验来说都太复杂了。
 

巨型R5。支持向量机



巨型R5。支持向量机

该视频介绍了支持向量机 (SVM),它通过查找与任何其他数据点不同的支持向量来确定数据中的分界线或决策边界。它还包括使用内核函数,使内核能够在不直接操作向量的情况下计算点积。教授阐明了找到为最宽道路提供最佳 W 的 Alpha 的目标,以及 W 如何成为 SVM 的决策边界。学生询问SVM背后的直觉,基于Alphas的优化为更好的数据分类开辟了最广阔的道路。 SVM Kernel 还有助于优化流程,使其更加高效。

  • 00:00:00 在本节中,演讲者介绍了支持向量机 (SVM),并指出它们是本课程中最难学的东西之一。不过,他解释说,现在有一些捷径可以帮助解决一些问题,而不必处理大量复杂的方程组。手头的问题需要圈出支持向量,画出街道的边缘,画出中间的虚线并给出 W 和 B。演讲者随后解释了 SVM 中的重要方程以及如何使用两个系数找到虚线和一个线性方程,其中 W1 和 W2 是两个系数,X1 和 X2 是矢量 X 的两个分量。

  • 00:05:00 在本节中,视频讨论了笛卡尔坐标中的直线方程,以及它与支持向量机中的方程 W 点 X 加 B 等于 0 的关系。该视频解释说,alpha 用于确定每个点对创建边界的重要性,并且正 alpha 等于负 alpha。该视频还提供了求解 W 和 B 时使用的方程式,并提到支持向量对于确定解决方案很重要。演示者澄清支持向量是边界线上的向量,目标是将它们圈起来。

  • 00:10:00 在本节中,演讲者解决了什么是支持向量的问题,并阐明了在更复杂的问题中,有许多维度,向量用于表示数据点,当它们不能在二维图形上绘制时维平面。演讲者解释说,支持向量是绑定超平面的点,是通过尝试在正数据点和负数据点之间拥有尽可能宽的空间来找到的。此外,演讲者指出有时第三个支持向量可能不存在,他们用平面上的一对点的例子来说明他们的观点。

  • 00:15:00 在本节中,演讲者解释了如何在支持向量机中找到 W 和 B。演讲者没有使用将点代入方程的旧方法,而是通过将方程转换为 y = mx + b 的形式引入了一种廉价策略。通过设置 y = x - 1,演讲者展示了如何使用它来找到新方程 y = -w1/w2 - b/w2。使用这种形式,演讲者表明存在无限多个可能的方程,并且 w1/w2 是 -1 的某个标量倍数,而 B/w2 是 1 的某个标量倍数。

  • 00:20:00 在本节中,演讲者讨论了如何确定 K 的值,以便为支持向量机计算 W1、W2 和 B。 W 的大小可以使用分量平方和的平方根来计算,它等于根 2 除以 4。由于 W1 和 W2 的比率等于负 1,因此在平方时,W1 的平方等于 W2 的平方。因此,使用该公式,W1 计算为负 1/4,并且由于 W1 为负,W2 和 B 等于正 1/4。演讲者还建议基于方程式的 alpha 正值和 alpha 负值相等。

  • 00:25:00 在本节中,演讲者继续介绍支持向量机示例。发言人指出,在第二个示例中,添加了一个额外的减号。他们继续解释如何在给定这个新的负号的情况下确定支持向量。显示了确定距离的计算,发现 W 的大小是 3 的根 2。演讲者指出,由于添加了新点,此示例中的 alpha 需要更长的时间来计算,但最终答案已实现.

  • 00:30:00 本节重点介绍在一维向量上使用支持向量机,这使得线性基线不适用于数据的分类。为了解决这个问题,使用核函数将数据带入一个新的维度。该函数通常称为 Phi,当应用于向量 X 时,它会将其带入这个新维度。在这个新的维度中,可以画一条直线来对数据进行分类。 SVM 的发明者意识到没有必要使用函数 Phi,即使它是一个可怕的怪物,因为内核可以用于计算新维度中两个向量之间的点积,而无需显式计算 Phi。

  • 00:35:00 在本节中,演讲者解释了如何使用核函数求出规则空间中两个向量的点积,从而无需直接使用向量本身。通过将向量 X 和 Z 放入内核,生成的函数将返回 X 的 Phi 与 Z 的 Phi 点在一起,它取代了两个向量的点积。讲者举了一个核函数的例子,并要求听众找到对应的Phi函数来解决问题。演讲者还指出,虽然计算 SVM 的 alpha 可能很复杂,但使用核函数是一种有用的捷径,可以消除直接向量操作的需要。

  • 00:40:00 在本节中,演讲者讨论了使用余弦值和正弦值在新维度中绘制点的图形。显示了正负值及其各自的余弦值和正弦值。第二象限三分,第三象限三分。然后演讲者讨论了两个负数之间的区别以及如何定位支持向量,支持向量被发现是垂直平分线上的负点和正点。两个负点在同一条直线上并被圈起来,而不是在平分线的相对两侧。

  • 00:45:00 在本节中,教授解释了支持向量背后的思想及其在 SVM 中的用法。他阐明支持向量与任何其他数据点不同,SVM 创建的分界线或边界由这些向量确定。在测试数据中,虚线是 SVM 的决策边界。该算法通过数学检查为最宽道路提供最佳 W 的 Alpha 组合来优化 Alpha。学生质疑SVM背后的直觉,教授解释说W是决策边界,基于Alphas的优化为更好地分类数据创造了最广阔的道路。 SVM Kerne 还有助于优化优化过程,使其更加简单高效。
 

巨型R6。升压



巨型R6。升压

在视频“Mega-R6. Boosting”中,演讲者解释了机器学习中 boosting 的概念,并演示了选择正确的分类器以最大限度地减少错误的过程。他们举了一个根据某些品质识别吸血鬼的例子,并讨论了如何选择最有效的分类器。所选分类器用于创建应用于数据点的最终分类器,以确定有多少分类正确。演讲者还强调选择何时停止该过程很重要,并承认实现完全准确可能并不总是可行的。

  • 00:00:00 在本节中,演讲者讨论了机器学习中提升的概念,其中涉及一系列不同的分类器。用作示例的问题涉及根据各种品质(例如邪恶、情绪化、闪光和浪漫兴趣的数量)识别吸血鬼。 boosting 的关键在于,对于任何可能的分类器,只要不是 50/50 的数据分割,就可以以某种方式使用它来创建更高级的分类器。此外,演讲者指出,实际上有比列出的分类器更多的分类器,因为它们中的许多具有相反的版本,而对于这个特定问题,这些分类器被忽略了。

  • 00:05:00 在本节中,演讲者解释了 50/50 的提升比例如何毫无用处,因为它与掷硬币一样好。然而,在某些情况下,比 50/50 差的分类器仍然优于 50/50 分类器。后面几轮的提升需要改变每个数据点的权重,表现最好的分类器将是获得最大权重的分类器。虽然获得不到一半权重的分类器通常没问题,但演讲者建议使用它们的逆来获得超过一半的权重。

  • 00:10:00 在本节中,演讲者遍历每个分类器并找出哪些数据点被错误分类。假设所有邪恶的东西都是吸血鬼,所有非邪恶的东西都不是吸血鬼,当邪恶等于否时,他们确定他们让天使、Edward Cullen、Saya Otonashi 和 Lestat de Lioncourt 错了。类似的逻辑适用于 emo 角色和变形角色。然而,当 sparkly 等于 yes 时,他们会弄错 1、2、4、5、6、7 和 8,而当浪漫兴趣的数量大于 2 时,他们就会弄错 Searcy 和 Edward Cullen。当谈到浪漫兴趣的数量大于四个时,没有角色属于该类别,因此没有一个被错误分类。

  • 00:15:00 在视频的这一部分,演讲者讨论了吸血鬼的分类以及哪些分类器可能不正确。演讲者指出,某些正分类器不可避免地会导致错误的负分类器。然后演讲者列出了几个分类器,并声称在他们最疯狂的梦想中,个人只会使用其中的六个。演讲者要求观众就他们认为有用的分类器提供意见,并圈出认为值得使用的分类器。被认为有用的分类器是那些只会出错的分类器,例如分类器 E 和 F。

  • 00:20:00 在本节中,演讲者解释了在 Mega-R6 中选择正确的六个数据点进行提升的过程。一个关键点是,虽然有许多不同的数据点可供选择,但其中一些确实优于其他数据点。例如,数据点 F 总是比 E 差,因此永远不应该选择它。演讲者还指出,在选择六个数据点时,重要的是选择不具有相同错误答案的严格子集的数据点。选择六个数据点的过程需要仔细考虑每个数据点的权重,以尽量减少错误。

  • 00:25:00 在视频的这一部分,演示者讨论了增强过程以及如何为任务选择最佳分类器。他解释了如何剔除任何无用的分类器以及如何选择能够最大限度地减少错误的分类器。然后演示者继续演示增强过程,首先对所有十个数据点进行平均加权,然后选择分类器 E 作为最佳分类器。然后计算误差为五分之一,然后该过程从那里继续。

  • 00:30:00 在视频的这一部分中,演示者解释了如何让分类器做出正确的所有决定。这个过程涉及将每个决定的权重更改为正确的权重为 1/2,错误的权重为 1/2。演示者概述了一种自动执行此过程的方法,其中涉及以一种更容易将它们相加并选择最佳决策的方式重写权重。在此示例中,选择了误差最小的决策。

  • 00:35:00 在本节中,演讲者讨论了在 Mega-R6 boosting 游戏中确定最佳分类器的过程。成绩单包括涉及圆圈内外数字总和的计算以及改变圆圈内数字的过程,以便更容易确定最佳分类器。演讲者指出,在确定分类器时忽略前几轮并仅考虑当前权重很重要。演讲者还解释了分类器不能连续使用两次,并讨论了此设计特征的原因。最佳分类器被确定为 A,因为它的错误答案数量最少。

  • 00:40:00 在这段文字记录中,演讲者讨论了如何使用提升方法计算最终分类器。最终分类器是用于创建它的加权分类器的组合。然后说话者将最终分类器应用于十个数据点以确定有多少被正确分类,使用简单的投票来确定输出。一个数据点,来自暮光之城的爱德华卡伦,是不正确的,因为三分之二的分类器没有把他归类为吸血鬼。

  • 00:45:00 在视频的这一部分,演讲者根据他们的特征和爱好讨论了各种角色是邪恶的、情绪化的还是吸血鬼,以及提升算法在对他们进行分类时的准确性。讨论引出了一个关于使用多个分类器使分类过程更快的问题,演讲者解释说在某种程度上是正确的,但需要经过更多的分类器。演讲者还强调,使一切正确的收敛过程并不总是那么容易,可能需要在一定数量的回合后选择停止。
 

巨型R7。有惊无险,Arch Learning



巨型R7。有惊无险,Arch Learning

在视频中,介绍了近乎失败学习的概念,涉及学习不同类型的光源及其特性。 Arch Learning 方法使用六种启发式方法来改进模型,包括要求链接、禁止链接、爬树、扩展集、闭区间和丢弃链接。该视频讨论了机器学习中使用的各种技术,例如扩展集、爬树、闭区间和丢弃链接。演讲者还讨论了与 Arch Learning 模型的脆弱性和排序脆弱性相关的问题,导致对矛盾信息的反应不一致。该视频还讨论了 Mega-R7 的泛化概念以及它与之前模型的不同之处。此外,还讨论了 Irish learning 和 lattice learning 在表达信息子集的能力方面的权衡,以及使用具有不同实现细节的多个模型来教授系统。

  • 00:00:00 本节介绍near-miss Learning Tree的概念,涉及学习不同类型的光源及其特性。起始模型是一个带有扁平底座和灯罩的白炽灯泡,由电力驱动。 Arch 学习方法涉及使用六种启发式方法,包括要求链接、禁止链接、爬树、扩展集、闭区间和丢弃链接。 Require link 使以前不相关的功能成为要求,而 forbid link 禁止功能。这些启发式方法通过使某些特征成为必要或不必要的特征来帮助改进模型,并且可以帮助识别有惊无险的场景。

  • 00:05:00 在本节中,演讲者讨论了机器学习中使用的各种技术,包括扩展集、爬树、闭区间和丢弃链接。扩展集技术涉及创建一组正例但禁止某些元素以节省空间。爬树技术向上移动树以创建更通用的模型,而闭区间覆盖整个区间以使其可接受。如果所有元素都可接受,则删除链接技术允许系统通过删除链接来实现简约。然后演讲者回顾了每种技术的用法,并强调了知识在机器学习中的重要性,以使模型更能接受新示例并加快测验时间。

  • 00:10:00 在本节中,视频讨论了泛化器的概念,以及如何将泛化器扩展到正例,或如何针对近距离扩大泛化器。但是,如果出现反面例子,会使系统复杂化,执行可能需要调整。然后,该视频提供了一个灯的示例,以及如何使用泛化器启发式来调整模型以在存在正例时泛化间隔。如果有一个反面例子,实施可能不得不使用下链方法使系统有效地工作。

  • 00:15:00 在视频的这一部分,演讲者讨论了与 Arch Learning 模型相关的一些问题,Arch Learning 模型是 1960 年代开发的一种机器学习模型。他们描述了系统是如何脆弱的,特别容易受到排序的影响,这意味着数据呈现的顺序会极大地影响系统的学习能力。此外,他们还解释了系统如何不一致以及如何对相互矛盾的信息反应不佳。演讲者还解释了另一种称为格学习的学习类型,它存储它看到的所有示例,并将它们与新示例进行比较和对比,从而识别模式并完善对主题的理解。

  • 00:20:00 在本节中,视频讨论了 arch learning 的概念,这是一种故意不记住事物以寻求优雅和简单的系统。本节将这个想法比作一个婴儿,他不能告诉你他们以前玩过的积木,因为他们没有存储和记住他们经历过的一切。然而,人类是很好的老师,可以提供适当的例子供机器学习。该视频还讨论了如何通过爬树而不是将范围设置得更简约、优雅和简单来概括命中。最后,讨论了一个荧光灯示例,用于泛化的启发式方法是将树从平坦的底座爬到底座支撑本身。

  • 00:25:00 在本节中,演讲者讨论了 Mega-R7 的新模型以及它与之前模型的不同之处。他们回顾了一些未遂事件的例子,这些例子是系统遇到的输入与之前看到的相似但不完全相同。演讲者解释说,这些有惊无险的情况不需要对模型进行任何更改,保持原样是可以接受的。此外,演讲者提出了一个问题,即荧光灯等反面例子是否会被视为未遂事件,他们回答说不会,因为系统是无记忆的,不知道荧光灯曾经是正面例子.

  • 00:30:00 在本节中,演讲者讨论了爱尔兰学习和格学习在表达信息子集的能力方面的权衡。爱尔兰的学习虽然是无记忆的,但如果没有看到一个积极的例子,就不能将一个子集表达为可接受的,这可能会导致失去一些表达能力。然而,这个问题在 lattice learning 中是固定的,但它有自己的一系列问题。演讲者还重点介绍了如何教授该系统,例如展示多个模型,这些模型可以在使用不同的灯泡和电源时满足具有底座支撑的要求。需要询问和澄清实施细节,因为选择一个而不是另一个可能会导致不同的结果。
 

AlphaGo - 电影 |完整的获奖纪录片



AlphaGo - 电影 |完整的获奖纪录片

一部关于 AlphaGo 计算机程序开发的纪录片,该程序旨在在围棋比赛中击败人类棋手。影片讲述了该程序在五场比赛中战胜世界冠军人类选手的故事。一些观众认为,随着机器越来越擅长执行认知任务,AlphaGo 的胜利可能预示着我们所知道的人类的终结。

  • 00:00:00 该视频是关于 AlphaGo 的,这是一种在围棋比赛中击败世界冠军人类棋手的计算机程序。该视频描述了 AlphaGo 胜利的意义,并展示了计算机与人类棋手对弈的画面。 AlphaGo 背后的公司 DeepMind 希望邀请世界上最强大的围棋选手 Demyster Harbis 访问他们在伦敦的办公室,以了解该项目的实际情况。如果您有兴趣参加,他们将不胜感激!

  • 00:05:00 由 DeepMind 开发的计算机程序 AlphaGo 在五局对决中击败职业围棋选手李世石。这部纪录片讲述了球队为开发和训练项目所做的努力,以及比赛本身。

  • 00:10:00 谷歌开发的计算机程序 AlphaGo 在五局对决中击败了欧洲围棋冠军李世石。这部纪录片记录了 AlphaGo 的发展和比赛准备情况。尽管最初持怀疑态度,但公众对 AlphaGo 的表现印象深刻,有些人甚至将其视为人类在人工智能领域的统治地位终结的标志。

  • 00:15:00  AlphaGo 是一种旨在在围棋比赛中击败人类冠军的计算机程序,在上周举行的一场比赛中被人类棋手李世石公开击败。该视频讨论了损失的重要性,以及 AlphaGo 团队为改进其系统所做的持续努力。

  • 00:20:00 被称为“世界上最好的围棋棋手”的计算机程序 AlphaGo 与职业人类棋手进行五局对决。 Fanway 是团队的顾问,帮助改进他们的策略。

  • 00:25:00  AlphaGo 将于明天在一场历史性的比赛中迎战韩国职业围棋选手李世石。这部纪录片跟随球队为比赛做准备并讨论了他们的期望。

  • 00:30:00  AlphaGo 是一种在棋盘游戏中击败人类冠军的计算机程序,是一部完整的获奖纪录片的主题。这部纪录片讲述了该计划的发展及其与人类对手的成功对决。

  • 00:35:00 谷歌开发的计算机程序 AlphaGo 在五局对决中击败了世界冠军人类棋手。该计划的成功令许多人感到惊讶,因为它能够从经验中学习。

  • 00:40:00 由 DeepMind 开发的计算机程序 AlphaGo 在五场比赛中击败了一名职业围棋选手。该计算机程序由人类开发,被认为是人工智能研究的突破。

  • 00:45:00  AlphaGo 是一种旨在在围棋比赛中击败人类职业棋手的计算机程序,其在 Google DeepMind 挑战赛第二场比赛中的表现令观察家震惊。 AI 的策略网络、价值网络和树搜索都非常有效地预测了手头游戏情况的最佳着法,从而导致 AlphaGo 获胜。

  • 00:50:00 由谷歌开发的计算机程序 AlphaGo 在与世界知名人类棋手的比赛中获胜。这部纪录片审视了这场比赛以及 AlphaGo 获胜的意义。

  • 00:55:00 AlphaGo 在与世界冠军人类选手的三场比赛中赢了两场,但观众的悲伤和失落感是显而易见的。 AlphaGo 只是一个计算机程序,但评论员称它为有意识的存在,并担心其不断增长的力量所带来的影响。
 

DeepMind AlphaZero - 在没有人类知识的情况下掌握游戏



DeepMind AlphaZero - 在没有人类知识的情况下掌握游戏

该视频探讨了 DeepMind 的深度强化学习架构 AlphaZero 的开发,它利用统一的策略和价值网络在没有任何先验人类数据的情况下在具有巨大状态空间的游戏中取得成功。 AlphaZero 的算法涉及训练神经网络来预测整个蒙特卡罗树搜索选择的动作,迭代地提炼知识以随着时间的推移产生更强大的玩家。该算法显示出令人印象深刻的学习曲线,在短短几个小时的训练中就优于以前的版本,并且尽管评估的位置比以前的搜索引擎少,但仍显示出显着的可扩展性。该视频还讨论了 AlphaZero 结合最佳人机方法的能力,同时展示了通用强化学习的潜力。

  • 00:00:00 在视频的这一部分,David 讨论了 AlphaGo,它是 DeepMind 深度强化学习架构的原始版本,能够击败人类职业棋手和世界冠军。 AlphaGo 利用两个卷积神经网络:一个策略网络,它根据概率分布推荐下法;一个价值网络,它预测游戏的获胜者。这些网络是通过对人类数据集和自身游戏进行监督学习和强化学习来训练的。 AlphaGo 在围棋比赛中的成功展示了机器学习和基于人工智能的方法在具有巨大状态空间的比赛中取得成功的潜力。

  • 00:05:00 在本节中,演讲者讨论了 AlphaGo 的训练管道,以及它如何使用策略网络和价值网络来使搜索更容易处理,因为围棋游戏中的搜索范围很广。策略网络建议移动以减少搜索树的广度,而价值网络从任何位置预测游戏的获胜者以减少搜索深度。这允许算法使用蒙特卡洛树搜索有效地搜索树的重要部分,这通过仅考虑最相关的部分来有效地选择性地扩展大型搜索树。这导致了 AlphaGo Master 的发展,它经过更深层次的网络训练和更多的强化学习迭代,在与世界排名第一的人类棋手的比赛中以 60 比 0 获胜。

  • 00:10:00 在本节中,演讲者介绍了 AlphaGo Zero 的开发,它在没有任何先前人类数据的情况下学习如何玩围棋游戏,而不是从完全随机的游戏开始,只使用游戏规则。 AlphaGo Zero 与原始 AlphaGo 的不同之处在于它不使用手工制作的功能,统一了策略网络和价值网络,使用更简单的搜索而没有随机的 Monte Carlo rollouts,并且具有更简单的方法来降低复杂性,从而导致更大的通用性,可能适用于任何域。 AlphaGo Zero 的算法涉及使用当前神经网络对每个位置执行蒙特卡洛树搜索并执行建议的移动,然后从完成游戏中到达的这些位置训练新的神经网络。

  • 00:15:00 在本节中,演讲者解释了 AlphaGo 零算法的过程,该过程涉及训练神经网络直接预测整个蒙特卡洛树搜索 (MCTS) 选择的动作以提炼所有知识进入其直接行为,并训练一个新的价值网络来预测游戏的获胜者。迭代该过程以每次生成更强大的玩家并生成更高质量的数据,从而导致越来越强的比赛。 AlphaGo Zero 通过将其搜索纳入政策评估来使用基于搜索的政策改进,从而为神经网络提供高质量的结果和精确的训练信号。学习曲线显示,AlphaGo Zero 在短短 72 小时内超越了之前的版本,并在 21 天后以 60 分的优势击败了人类棋手。

  • 00:20:00 在本节中,演讲者讨论了开发的各种版本的 AlphaGo,从以 5 场比赛零分击败欧洲冠军的原始版本到完全从随机权重训练的 AlphaGo Zero大约 5,000 Elo,是最强版本的 AlphaGo。新版本 AlphaZero 将相同的算法应用于三种不同的游戏:国际象棋、将棋和围棋。尤其是国际象棋,一直是 AI 中研究最多的领域,计算机国际象棋是人工智能历史上研究最多的领域,最终形成了目前无可争议地优于人类的高度专业化系统。

  • 00:25:00 在本节中,演讲者讨论了将棋游戏的复杂性,与国际象棋相比,这种游戏更难计算,并且具有更大、更有趣的动作空间。他解释说,最强的将棋计算机程序最近才达到人类世界冠军的水平,这使 DeepMind 成为一个有趣的案例研究。国际象棋和将棋的最先进引擎均基于 alpha-beta 搜索,该搜索已通过经过人类大师多年调整的手工评估函数以及大量高度优化的搜索扩展。然后,演讲者将顶级国际象棋程序 Stockfish 的组件与 AlphaZero 进行了比较,后者实际上没有任何相同的组件,取而代之的是基于自我对弈、强化学习和蒙特卡洛搜索的原则思想。演讲者指出,国际象棋与围棋不同,因为它具有完美的平移不变性,缺乏对称性,具有更有趣的复合动作空间,并且包含平局。

  • 00:30:00 在本节中,演讲者讨论了三种游戏的学习曲线:国际象棋、将棋和围棋。 AlphaZero 在所有游戏中使用相同的网络架构和设置,在从头开始训练的短短四个小时内就在国际象棋比赛中击败了世界冠军 Stockfish。 AlphaZero 仅经过几十万步或 8 小时的训练就轻松击败了以前版本的 AlphaGo Zero 和当前的世界冠军将棋。将 AlphaZero 的蒙特卡洛树搜索的可扩展性与之前程序中使用的 alpha-beta 搜索引擎进行了比较,包括每秒评估约 7000 万个位置的 Stockfish,而 AlphaZero 每秒仅评估约 80000 个位置。演讲者推论说,尽管评估的位置少了几个数量级,但当与神经网络等深度函数逼近器结合使用时,MCTS 如此有效的原因是它有助于抵消搜索中存在的逼近误差,从而带来更好的性能和可扩展性。最后,AlphaZero 还通过挑选出国际象棋比赛中最常见的 12 个人类开局,为自己发现了人类国际象棋知识。

  • 00:35:00 在本节中,演讲者讨论了 AlphaZero 对特定国际象棋开局的使用以及它在自我对弈中如何下棋。 AlphaZero 花费了大量时间来玩这些变化,但最终开始喜欢不同的开局,忽略了一些玩得更频繁的开局。演讲者还提到了在使用 AlphaZero 的方法进行通用深度强化学习方面取得的进展,这些方法可以转移到其他领域。算法越专业,它就越不能适应其他领域。虽然人类和机器一起使用是一个有趣的前景,但演讲者强调,AlphaZero 比以前的国际象棋程序以更人性化的方式下棋,表明它有能力结合两个世界的优点。

  • 00:40:00 在本节中,演讲者解释说,虽然他们只是将游戏规则作为人类知识嵌入到 AlphaGo Zero 中,但这包括基本的动作编码和解码。例如,在国际象棋中,他们使用空间表示来编码被拾起的棋子和被用来放下棋子的平面。他们确实从行动空间中排除了非法行动。演讲者进一步解释说,他们在实验中没有包括错误栏,因为他们每场比赛只进行一次。然而,他们进行了多次实验,结果的可重复性很高。
 

AlphaGo - 人工智能如何掌握史上最难棋盘游戏



AlphaGo - 人工智能如何掌握史上最难棋盘游戏

该视频探索了 AlphaGo Zero 的技术细节,这是一个完全通过自我对弈训练的人工智能系统,没有使用人类数据集。该系统使用残差网络架构和两种研究方法来预测价值和强势动作。该视频重点介绍了所做的改进,包括预测游戏结果的能力以及系统发现和移动远离围棋中众所周知的着法的能力。然而,该系统的实际应用受到完美模拟器需求的限制,使得该方法难以应用于其他领域。

  • 00:00:00 在本节中,讨论了 AlphaGo Zero 相对于先前版本的改进的技术细节。第一个重大变化是 AlphaGo Zero 完全通过自我对弈进行训练,不使用人类职业围棋选手的数据集。它还不使用任何以前为游戏手工制作的功能,而是完全通过观察棋盘状态来学习。网络架构被更改为完全剩余的架构,而不是有一个单独的策略和评估网络,它们现在被组合成一个单一的大型网络,同时完成这两项工作。蒙特卡洛的推出被更简单的两项研究方法所取代,该方法使用单一网络进行价值预测并提出强有力的举措。总体而言,这导致了 19 x 19 x 16 二进制数的棋盘表示、残差网络以及从特征向量生成的值表示和策略向量。

  • 00:05:00 在本节中,视频解释了 AlphaGo 如何通过使用一种网络架构来训练 AlphaGo 下好棋,该网络架构导致好棋的概率高而坏棋的概率低。 AlphaGo 的第一个版本是在专业围棋动作数据集上使用监督学习进行训练的,然后是使用自我对弈的微调阶段。然而,新版本 AlphaGo Zero 不使用任何数据集,完全通过使用蒙特卡洛树搜索的自我对弈来学习,稳定了自重训练过程。通过展开搜索树并使用蒙特卡洛树搜索,系统可以估计哪些动作强,哪些动作弱。最后,该视频强调该过程特定于围棋等游戏,您拥有完美的模拟器,这使得这种方法在现实世界中的应用具有挑战性。

  • 00:10:00 在本节中,演讲者讨论了描述 AlphaGo 网络架构改进的各种图表。一张图显示了 AlphaGo Zero 网络根据当前棋盘位置预测游戏结果的能力,与之前的版本相比有了显着改进。演讲者还指出,从普通的卷积架构过渡到残差网络带来了重大改进。此外,一张图表显示了 AlphaGo Zero 如何发现并从围棋游戏中的著名动作继续前进。总的来说,演讲者对谷歌 DeepMind 团队的成果印象深刻,并鼓励观众在评论部分提出问题。
 

AlphaZero 从零开始——机器学习教程



AlphaZero 从零开始——机器学习教程

00:00:00 - 01:00:00  “AlphaZero from Scratch – 机器学习教程”视频教用户如何使用 Python 和 PyTorch 构建和训练 AlphaZero 算法,以超人的水平玩复杂的棋盘游戏,并为 Tic 提供了示例-tac-toe 和 Connect 4. 该算法的关键组成部分之一是蒙特卡洛树搜索,它涉及选择最有希望的动作、扩展树和模拟游戏,并将结果反向传播以进行训练。教程演示了蒙特卡洛研究算法过程中节点的扩展,自我博弈的过程,以及如何使用损失函数训练模型,使策略与 MCTS 分布、价值与最终奖励之间的差异最小化。视频最后创建了一个井字游戏并通过 while 循环对其进行了测试。

01:00:00 - 02:00:00 在关于从头构建 AlphaZero 的教程的这一部分,讲师演示了井字游戏的蒙特卡洛树搜索 (MCTS) 算法的实现。该算法是通过一个新的 MCTS 类实现的,该类包括一个搜索方法,该方法定义了用于选择、扩展、模拟和反向传播阶段的重复迭代循环。该视频还介绍了 AlphaZero 神经网络架构的实现,它包括两个头,一个用于策略,一个用于值,并使用带有跳跃连接的残差网络。 policy head 使用 softmax 函数来指示最有希望的动作,而 value head 给出当前状态的估计。演讲者还讨论了 ResNet 类的起始块和主干的实现,并解释了如何使用 AlphaZero 模型为 Tic-Tac-Toe 中的给定状态获取策略和值。

02:00:00 - 03:00:00 “AlphaZero from Scratch”教程演示了通过机器学习构建 AlphaZero 算法。演讲者涵盖了广泛的主题,从更新 MCTS 算法、自我对弈和训练方法,到改进,例如在模型中为概率分布、权重衰减和 GPU 支持添加温度,以及为根节点添加噪声。本教程通过展示如何对节点状态进行编码、获取策略和值输出以及使用 softmax、有效移动和 Dirichlet 随机噪声调整策略以增加探索,同时确保有希望的行动不容错过。

03:00:00 - 04:05:00 在这个关于使用机器学习从头开始创建 AlphaZero 的 YouTube 教程中,讲师涵盖了各种主题,例如向具有噪声因子的策略添加探索,结合 CPU 和 GPU 对训练模型的支持更复杂的游戏,更新源代码以创建 Connect Four 游戏,通过并行化提高 AlphaZero 实施的效率,在 Python 中为自玩游戏创建两个新类,编码状态以提高效率,实施蒙特卡洛树搜索算法用于 AlphaZero,并使用并行化的 fs0 训练 Connect Four 模型。本教程针对每个主题提供分步指导,重点是创建高效且有效的 AlphaZero 实施。演示者演示了如何使用 Kegel 环境包创建 Connect Four 环境,然后与两个使用基于经过训练的 AlphaZero 模型的 MCTS 搜索算法的代理一起运行和可视化游戏。演示者还对代码进行了微小的更正,并将玩家一定义为使用 MCTS 算法根据训练模型进行预测的代理。教程结束时,演示者提供了一个 GitHub 存储库,其中包含每个检查点的 jupyter 笔记本,以及一个包含井字游戏和四连棋模型的权重文件夹,表示有兴趣在 Mu Zero 上制作后续视频(如果有的话)对它的兴趣。


第1部分

  • 00:00:00 在本节中,教程介绍了 AlphaZero 的概念,这是一种人工智能算法,它使用机器学习技术来学习以超人的水平玩复杂的棋盘游戏。该算法最初由 DeepMind 开发,可以在围棋等游戏中取得令人瞩目的成绩,甚至可以发明数学上的新算法。该教程将教用户如何使用 Python 和 PyTorch 从头开始构建 AlphaZero,并在 Tic-tac-toe 和 Connect 4 等游戏上对其进行训练和评估。该算法有两个部分,自我对弈和训练,并使用神经网络来根据输入状态产生一个策略和一个值。通过重复这个循环,算法可以优化自己,比人类更好地玩游戏。

  • 00:05:00 在本节中,视频解释了蒙特卡洛树搜索,一种用于自我播放的搜索算法和通用算法。它接受一个状态,在这种情况下,一个块位置,并通过构建未来的树来找到最有希望的行动。每个节点存储一个状态和在该方向玩到未来时获得的胜利总数,以及总访问次数。每个节点的孩子的获胜率用于确定最有希望的行动,并且该信息可以用于像井字游戏这样的实际游戏中。节点的数据是通过在选择阶段沿着树向下走直到到达可以进一步扩展的叶节点来生成的。

  • 00:10:00 在本节中,演讲者讨论了玩游戏时蒙特卡洛树搜索 (MCTS) 所涉及的不同阶段。选择阶段涉及选择具有较高 UCB 公式且访问次数相对较少的子节点。扩展阶段涉及创建一个新节点并将其添加到树中,而模拟阶段涉及随机玩游戏直到到达终端节点。在反向传播阶段,将从模拟阶段获得的结果传播回树,更新每个节点的获胜和访问计数。

  • 00:15:00 在视频的这一部分,讲师通过一个蒙特卡洛树搜索 (MCTS) 过程的示例,从选择阶段开始,在该阶段算法沿着树向下走以选择下一个节点。然后他们进入创建新节点的扩展阶段,然后是采取随机操作到达终端节点的模拟阶段。然后,该算法会检查游戏是否赢了、输了,或者是否违反了规则。由于比赛获胜,进行反向传播,更新 MCTS 过程中遍历的节点的获胜和访问计数。在新的选择阶段和扩展阶段重复该过程,创建新节点并再次执行模拟阶段。

  • 00:20:00 在本节中,教程将介绍使用 AlphaZero 在 MCTS 算法中进行模拟和反向传播的过程。本教程中提供的示例显示了模拟阶段的损失。反向传播时,只增加了访问次数,总获胜次数保持不变,因为 AI 在模拟过程中输了比赛。然后教程继续使用 AlphaZero 解释 MCTS 的选择和扩展过程。本教程演示了如何计算每个孩子的 UCB 分数,以及如何选择得分最高的孩子。然后重复该过程,AI 计算每个节点的 UCB 公式,直到到达发生扩展的叶节点。

  • 00:25:00 在本节教程中,重点介绍蒙特卡洛研究技术在适应通用 AlphaZero 算法时如何变化。对算法进行了两个关键更改。首先,通过使用政策信息更新 UCB 公式,将从模型中获得的政策纳入选择阶段。其次,消除了模拟阶段,将从神经网络获得的值与选择阶段的策略一起用于反向传播。有了这些变化,当有一个理解如何玩游戏的模型时,蒙特卡洛研究技术可以显着改进。

  • 00:30:00 在视频“AlphaZero from Scratch – Machine Learning Tutorial”的这一部分中,演示者做了一个小改动,以在扩展阶段扩展石油可能的方向,因此可以创建所有可能的节点,而不是只创建一个新节点节点。然后,他们在白板上浏览迭代,以展示如何调整多彩研究。在扩展阶段,通过调用神经网络获取策略和值,并将获胜次数、访问次数和策略信息添加到节点中来创建新节点。然后,在反向传播步骤中,该值被反向传播。演示者提到了 UCB 公式,并指出无法为访问计数为零的节点计算获胜概率,需要解决这个问题以避免被零除错误。

  • 00:35:00 在教程的这一部分,演讲者解释了蒙特卡洛研究算法期间扩展节点的过程。该算法用于确定游戏中给定状态的最佳移动。演讲者通过一个示例演示了如何扩展节点以及如何为每个子节点计算策略和值。也解释了将新子节点的值反向传播到根节点的过程。然后,本教程继续解释自我对弈的过程,其中由算法对自己进行游戏,从空白状态开始,并使用蒙特卡罗研究根据孩子的访问次数分布确定最佳着法根节点。

  • 00:40:00 在本节中,我们将了解如何使用蒙特卡洛树搜索 (MCTS) 训练模型。目标是存储玩游戏时获得的所有信息,包括 MCTS 分布和每个状态的奖励。奖励取决于玩家在该状态下的最终游戏结果。一旦我们收集了数据,我们就使用它来使用损失函数来训练模型,该损失函数最小化策略和 MCTS 分布以及值 V 和最终奖励 Z 之间的差异。我们使用反向传播来更新权重模型西塔。总的来说,这个过程有助于模型更好地理解如何玩游戏并进行优化。

  • 00:45:00 在本节中,有关使用机器学习从头开始构建 AlphaZero 的视频教程首先创建一个 Jupyter Notebook 并构建一个简单的井字游戏,其中包含行数和列数以及动作大小.然后,本教程编写用于获取初始状态、采取操作后的下一个状态以及合法移动的方法。动作输入被编码为行和列格式,以在 NumPy 数组中使用。编写的代码可以灵活地解决不同的环境或棋盘游戏,并计划扩展到 Connect Four。

  • 00:50:00 在本节中,YouTuber 正在编写一个方法来检查玩家在移动后是否获胜。他们首先获取移动的行和列,然后确定执行该移动的玩家。然后,他们使用 np.sum 和 np.diac 方法检查所有可能赢得井字游戏的方法,即一行三个、一列三个和两条对角线。此外,他们通过计算有效移动的总和并检查它是否为零来检查平局。最后,他们创建了一个名为 get value 的新方法并终止它,如果游戏结束则返回 value 和 true。

  • 00:55:00 在这一节中,作者编写了一个井字游戏和一个改变玩家的对手方法。他们通过执行游戏并使用 while 循环来测试游戏。在循环中,打印状态和有效移动,并提示用户输入他们的移动。游戏检查动作是否有效以及游戏是否已终止。如果游戏继续,则玩家被翻转。如果该值等于 1,则玩家获胜,如果平局,则打印出来。

第2部分

  • 01:00:00 在使用机器学习从头开始构建 AlphaZero 的教程的这一部分中,讲师首先选择井字游戏作为用于演示目的的游戏。创建了一个用于多色研究 (MCTS) 的新类,它以游戏和超参数作为参数进行初始化。在这个类中,定义了一个搜索方法,它带有一个循环,用于重复迭代选择、扩展、模拟和反向传播阶段,最终返回根节点的子节点的访问计数分布。然后,为节点定义一个类,其中包含游戏状态、父节点、采取的操作、子节点和访问次数等属性。根节点还定义了游戏、超参数、初始状态,以及父节点和采取的操作占位符的 None。

  • 01:05:00 在本节中,视频介绍了在游戏过程中在 AlphaZero 算法中选择树中节点的过程。定义了确定节点是否完全展开的方法,使用有关可展开移动次数的信息以及节点是否未终止。在选择阶段,算法在节点完全展开的情况下向下选择。对于选择,算法遍历节点的所有孩子,计算每个孩子的 UCB 分数,然后选择 UCB 分数最高的孩子。 UCB 分数是使用 Q 值、用于探索或开发的常数 C 和对数函数计算的。 Q 值定义为孩子的访问总和除以其访问次数,并进行调整以确保 Q 值介于 0 和 1 之间。

  • 01:10:00 在本节中,视频教程涵盖了 AlphaZero 的选择过程。该代码选择一个具有非常负值或低值的孩子,因为选择它会使对手处于糟糕的境地。然后反转子节点的 Q 值,给父节点一个几乎为 1 的 Q 值。这样,树的工作方式使得子节点处于不利位置。该视频回顾了在代码中实施这些更改的步骤,并解释了检查最终选择的节点是否为终端节点的重要性。此外,还添加了一种新方法来考虑游戏在获取值属性中的视角。

  • 01:15:00 在使用机器学习从头构建 AlphaZero 的教程的这一部分中,讲师解释了如何检查节点是否为终端、反向传播以及执行扩展和模拟。通过从已定义的移动中抽取一个可扩展移动,为子节点创建一个新状态,并将一个新节点附加到子节点列表中,供以后在 select 方法中引用。讲师还讨论了翻转状态以更改玩家而不是明确定义玩家的想法,从而使单人游戏的逻辑更简单并确保代码有效。

  • 01:20:00 在本节中,演讲者正在为井字游戏创建子节点并解释改变视角的方法。他们将玩家设置为对手的-1,并使用乘法来翻转视角。创建子节点后,他们将其附加到子列表并返回。然后,演讲者继续讨论模拟过程,他们使用 rollouts 执行随机操作,直到到达终端节点并获得值。他们使用获得的值反向传播节点玩家赢得的节点更有希望。

  • 01:25:00 在视频的这一部分,演示者继续为 AlphaZero 游戏程序构建蒙特卡洛树搜索 (MCTS) 算法。他们展示了如何使用当前的原始状态来选择一个动作,获取下一个状态并检查该状态是否为终止状态。演示者编写一个 if 语句来区分玩家一或玩家二在游戏获胜时收到正值,然后继续编写反向传播方法来更新每个节点的值和访问计数。最后,演示者创建一个变量来计算最有希望的动作的概率,action_props。

  • 01:30:00 在本节中,视频教程展示了如何为井字游戏实现独立的蒙特卡洛树搜索 (MCTS) 算法。本教程演示了如何遍历所有子项并为每个子项编写动作道具。每个孩子的访问次数用于将它们转化为概率。然后将概率之和除以 1,将它们转换为概率。然后创建 MCTS 对象,并使用 2 的平方根作为 UCB 公式中的 C 值。脚本是针对游戏进行测试的,算法是在中性状态下进行测试的。然后使用 MCTS 树以及最佳子函数返回访问次数最多的子函数。

  • 01:35:00 在本节中,讨论了 AlphaZero 算法的神经网络架构。作为神经网络输入的状态是一个棋盘位置,该棋盘位置被编码为三个不同的平面,分别为正面玩家、负面玩家和空白区域。这种编码允许识别模式和理解如何玩游戏。使用的神经网络架构是一个带有跳跃连接的残差网络,用于存储初始 X 值,并将输出作为卷积块输出与初始 X 值之和。该模型分为两部分,策略头和价值头,对于井字棋的情况,策略头中有九个神经元,每个潜在动作对应一个神经元。

  • 01:40:00 在本节中,演讲者从头开始解释 AlphaZero 神经网络的架构。该网络有两个“头”,一个负责政策,一个负责价值。策略头有 9 个神经元,输出应用 soft-max 函数将其转化为概率分布,表明某个动作的前景如何。价值头只有一个神经元,并使用 10h 激活函数将所有潜在值压缩到负一到正一的范围内,从而估计当前状态的好坏。该代码是使用 PyTorch 深度学习框架在 Jupyter notebook 中构建的。该模型包括一个起始块和一个卷积残差块的主干,每个块包含一个卷积层,然后是两层批量归一化和一个 ReLU 激活函数。

  • 01:45:00 在本节中,演讲者讨论了为 AlphaZero 模型创建起始块,其中涉及创建一个 conf 2D 块、一个批量规范块和一个值块。他们还使用一组剩余块为模型设置主干,并为剩余块创建一个类。其余块由一个 conf 块、一个 batch norm 块和另一个 conf 块组成,它们用于使用跳过的连接更新输入。前向方法被定义为通过 conf 块提供输入并将结果输出添加到残差中。

  • 01:50:00 在本节中,演讲者将从头开始介绍用于为 AlphaZero 算法创建残差网络 (ResNet) 的代码。他们展示了如何通过循环指定隐藏层数的残差块来创建 ResNet 的主干。然后,他们使用 nn.sequential 并定义序列中的层来创建策略头和值头。最后,演讲者展示了如何定义 ResNet 类的前向方法,方法是通过起始块传递输入、遍历残差块并在末尾返回总和。

  • 01:55:00 在本节中,演讲者解释了如何使用 AlphaZero 模型在 Tic-Tac-Toe 中获取给定状态的策略和值。他编写代码通过模型传递张量状态来获取策略和值,然后将策略展平并获取值项。他还解释了以正确格式对状态进行编码以及向张量添加批次维度的重要性。

第 3 部分

  • 02:00:00 在本节中,演讲者展示了如何使用点项方法将策略张量转换为浮点数,然后应用 softmax 函数选择概率最高的动作。然后演讲者使用 Matplotlib 可视化策略分布以显示在哪里玩。接下来,演讲者为 Torch 设置种子以确保可重复性,并通过提供用于预测值的 ResNet 模型输入和基于叶节点状态的策略来更新 MCTS 算法。去掉了仿真部分,将模型得到的值用于反向传播。

  • 02:05:00 在这部分视频中,演示者演示了如何对井字游戏的节点状态进行编码,并使用 torch.tensor 将其转换为张量,以便将其作为模型的输入。该策略由 logits 组成,需要使用 torch.softmax 将其转换为可能性分布。演示者还解释了如何使用策略和有效移动来屏蔽非法移动,以及如何重新调整策略以使其代表百分比。通过调用 value.item() 从值头中提取值。此外,演示者还展示了在节点是叶节点的情况下如何使用扩展策略和反向传播的值。

  • 02:10:00 在关于使用机器学习从头开始构建 AlphaZero 的视频教程的这一部分,演讲者解释了如何更新扩展和 UCB 公式方法。更新 expand 方法以立即在所有可能的方向上展开并将概率存储在节点对象内部,以供稍后在选择期间用于 UCB 公式。新的 UCB 公式使用与标准多色研究不同的公式,演讲者演示了如何删除 math.log 并将孩子的访问次数加一。这些更新允许对之前未访问过的子对象使用 UCB 方法。

  • 02:15:00 在本节中,教师使用儿童权利策略更新 MCTS,以选择动作并通过运行游戏对其进行测试。然后,他们通过定义接受模型、优化器、游戏和其他参数的 AlphaZero 类,继续构建主要的 AlphaZero 算法。他们还定义了自我对弈和训练方法,并创建了一个循环,通过多个循环进行对弈、收集数据、训练模型和再次测试。讲师还创建了一个记忆类,用于存储训练数据并循环训练周期中的每个自玩游戏。

  • 02:20:00 在视频教程的这一部分,演示者介绍了 AlphaZero 的自我对弈和训练循环的代码。它们涵盖了如何将自我播放方法获得的新数据扩展到内存列表中,以及如何将模型的模式更改为评估模式以避免在播放过程中出现批处理旋钮。训练循环还详细介绍了如何调用训练方法和存储模型的权重。最后,解释了自玩方法,包括定义新内存、创建初始状态和循环播放游戏,同时检查终端状态并以元组格式将数据返回到内存。

  • 02:25:00 在本节中,视频教程介绍了如何将中立状态、动作道具和玩家信息存储在内存中,以便稍后使用它来收集训练数据。本教程演示了如何使用 NumPy 的 random.choice 函数从动作道具中采样一个动作,然后根据这个动作进行播放。该视频还介绍了如何检查状态是否已终止,如果是,如何返回玩家玩过的每个实例的最终结果。最后,本教程展示了如何将中性状态、动作道具和结果附加到内存变量,以及如何在以后检索此数据以进行训练。

  • 02:30:00 在“AlphaZero from Scratch”教程的这一部分中,通过将负值更改为对手在不同游戏中感知到的值,更新了代码以使其更通用。通过使用 tqdm 包和进度路径改进了循环的可视化。通过使用 resnet 模型、Adam 优化器和特定参数创建类的实例来测试 AlphaZero 的实现。以Tic-Tac-Toe游戏为例,4个rest block,hidden dimension 64,设置探索常数,搜索次数,迭代次数,self-play games,epochs,保存模型备用.

  • 02:35:00 在本教程的这一部分中,训练方法是在 AlphaZero 实现中实现的,方法是打乱训练数据并分批遍历所有内存以对一批不同的样本进行采样以进行训练。通过调用 zip 方法将元组列表转置为 MP 数组列表,从示例中获取状态、MCTS 道具和最终奖励。然后将它们更改为 NP 数组,并重塑值目标,以便每个值都在其自己的子数组中,以便更好地与模型的输出进行比较。

  • 02:40:00 在本节教程中,视频创作者讨论了如何使用 torch.float32 将状态、策略目标和值目标转换为张量,以便通过以下方式从模型中获取输出策略和输出值允许它预测状态。他们继续定义策略损失和价值损失,他们用它们来计算这两种损失的总和,以便通过反向传播最小化总体损失。然后,他们使用默认批量大小 64 演示训练过程,进度条显示训练过程的迭代。在对模型进行 3 次迭代训练后,他们加载静态模型以测试神经网络对游戏的了解。

  • 02:45:00 在视频教程的这一部分中,演示者演示了如何使用神经网络模型来玩游戏并测试其预测移动位置的能力。通过在 MCTS 搜索中运行模拟,该模型能够提供在哪里玩的分布和给定状态的价值预测。 Presenter 还为算法添加了 GPU 支持,以使其在训练和测试期间更快。演示者展示了如何声明设备并将其作为参数传递给模型,以便在可用时使用 Nvidia GPU。此外,模型在自我游戏和训练期间被移动到设备以优化速度。

  • 02:50:00 在本节中,演讲者讨论了可以添加到 AlphaZero 以提高其性能的几项调整。首先,他们为模型添加了权重衰减和 GPU 支持。接下来,他们引入了温度的概念,它允许在采样动作时更灵活地分布概率。较高的温度导致更多的探索,而较低的温度导致更多的开发。最后,演讲者建议在蒙特卡洛研究期间给根节点的初始策略添加噪声。这些调整可以显着增强 AlphaZero 算法的结果。

  • 02:55:00 在关于通过机器学习从头开始构建 AlphaZero 的教程的这一部分中,重点是向根节点添加噪声以纳入随机性和探索更多内容,同时确保不会遗漏任何有希望的动作。这是通过首先通过调用 save.model 并使用 torch.tensor 和状态模型设备获取策略和值来实现的。然后使用 softmax 调整该策略并乘以有效动作以屏蔽非法动作。通过将旧策略乘以一个小于 1 的系数并将该系数与另一个乘以随机噪声的系数相加,将 Dirichlet 随机噪声添加到策略中。通过这种方式,策略被更改为允许进行更多探索,尤其是在模型对游戏了解不多的初期。

第 4 部分

  • 03:00:00 在本节中,视频教程重点介绍如何使用噪声因子对策略进行探索。通过修改策略,机器人可以通过增加探索来优先考虑未经常选择的动作。该视频概述了如何调整策略方程并将 Alpha 值用作 NP 点随机点 dirichlet 函数的输入,该函数根据游戏中不同动作的数量改变随机分布的方式,因此 Alpha 可能随环境变化。还概述了根节点扩展策略,确保节点在扩展时被反向传播(访问计数设置为 1),以便先验与蒙特卡罗研究开始时选择的子节点一致。

  • 03:05:00 在本教程的这一部分,讲师添加了 CPU 和 GPU 支持,以便在四人连环等更复杂的游戏中训练模型。他们使用 torch.device() 定义一个设备并检查 torch.cuda.is_available() 来决定是使用 CPU 还是 CUDA 设备。他们还将设备添加到张量状态堆栈和静态文件的加载中。讲师在 Tic-Tac-Toe 上训练和测试模型,并表明模型已经学会识别非法动作。然后,他们用行数、列数和动作大小来定义连四游戏。

  • 03:10:00 在本节中,视频教程逐步介绍了如何更新源代码以创建四连胜游戏。游戏初始化为一个空白数组,并在一行变量中保存一个点,变量为 4,表示获胜所需的石子数量。获取下一个状态方法被更新为通过查看给定的列来检索行,然后找到该列中最深的空字段来放置石头。获取有效移动方法已更新,以检查顶行是否有可用移动。检查获胜方法是从 Tic Tac Toe 游戏中复制的,并进行了调整以检查两条对角线,并且更新了获取下一个状态方法以使用操作变量而不是列的变量。已对更新的代码进行测试以确保其正常工作。

  • 03:15:00 在本节中,演讲者将井字棋替换为四连棋游戏,并将搜索次数设置为 20 以进行验证。模型的大小也更改为休息块数为 9,隐藏暗淡为 128,让模型学习得更好。然后提高训练效率,以便在复杂环境中花费更少的时间。然后对模型进行一次迭代训练,这需要几个小时。然后使用评估集来测试模型是否学到了一些东西。

  • 03:20:00 在这部分教程中,重点是通过并行化提高 AlphaZero 实现的效率。该计划是通过对状态进行批处理以获得对策略和价值的并行预测来尽可能多地并行化实施。这样,模型的调用次数大大减少,从而充分利用 GPU 的能力并提高速度。本教程解释了如何在不使用 Ray 等包的情况下使用 Python 实现并行化版本,并通过复制原始类创建了一个名为“AlphaZeroParallel”和“MCTSParallel”的新类。

  • 03:25:00 在本节中,演讲者讨论了在 Python 中创建两个新类:`SPG` 来存储有关自玩游戏的信息,以及 `ParallelMCD`,它使用以下方法实现 `save_play` 和 `search` 方法新的 `SPG` 类。 `SPG` 类存储游戏的初始状态、空内存列表以及设置为 `None` 的 `root` 和 `note` 变量。 `ParallelMCD` 类还更新了 `set_play` 方法,以使用 `game` 和并行游戏的数量作为输入来创建 `SPG` 实例列表。 `while` 循环然后运行 `set_play` 方法,直到所有的自玩游戏都完成,这样可以实现高效的并行化。
     
  • 03:30:00 在这一节中,演讲者解释了如何获取所有状态的列表并将它们变成数字数组以提高效率。他们还展示了如何使用一个函数调用来更改所有状态的视角,以将玩家设置为负一的值乘以负一。接下来,演讲者演示了如何将中性状态传递给蒙特卡罗研究,更新蒙特卡罗研究搜索方法,并使用所有批处理状态获取视频上的策略。最后,他们解释了如何在调用获取编码状态方法时交换编码状态的顺序以处理多个状态,而不仅仅是一个状态,以及如何将此过程复制到井字游戏中。

  • 03:35:00 这个循环进入一个 numpy 数组并使用 numpy 的矢量化代替。然后我们可以将模型应用于 numpy 数组中的所有状态,而不必遍历每个状态,这样可以节省大量时间。然后我们可以将输出重塑回其原始形式,并像往常一样继续进行其余的 MCTS 搜索。最后,我们更新每个自玩游戏的统计数据并返回所选动作的根节点。这样就完成了使用 AlphaZero 算法的带有策略和价值网络的 MCTS 搜索的实现。

  • 03:40:00 在视频的这一部分,讲师正在对代码进行一些更改以存储所有可扩展节点而不是 SPG 类。然后,重点转移到通过创建列表来存储它们并获取每个安全游戏的映射索引来找出哪些安全游戏是可扩展的或不可扩展的。指导员检查是否有任何可扩展的游戏,如果有,则将状态堆叠并编码,以便稍后可以获取策略和值。

  • 03:45:00 在教程的这一部分中,讲师解释了 AlphaZero 的蒙特卡洛树搜索算法的代码实现。他们展示了如何使用可扩展状态并且不需要取消挤压、挤压或添加噪音,以及创建索引来获取策略和映射索引以在自玩游戏索引中分配策略。使用 SPG 策略扩展节点,使用 SPG 点值进行反向传播,然后获取动作道具,而不是使用 OSF Planet 方法。讲师复制并行化代码并进行更改以使用动作道具而不是 OSF Planet 方法作为实现 AlphaZero 的蒙特卡洛树搜索算法的一部分。
     
  • 03:50:00 本节视频教程重点更新MCTS搜索并行实现的代码。讲师强调了从列表中删除自玩游戏(如果它们是终端)并通过调用 `spg.state` 而不是 `SPG class` 更新状态的重要性。代码也改成将内存附加到通用区域内存中,并在所有自玩游戏循环完成后翻转玩家。目标是创建一个高效运行的平滑循环,并在适当的时候从自玩游戏列表中删除该循环。

  • 03:55:00 在本节中,演讲者讨论了使用并行化 fs0 实现来训练 Connect Four 的模型。该模型经过八次迭代训练,并使用 Connect Four 板评估结果。演讲者指出,与实践中使用的其他搜索算法相比,搜索次数很少,但结果令人满意。他们与模型对弈并做出一些动作,模型会做出相应的反应。总的来说,训练花了几个小时,但最终模型对如何玩游戏有很好的理解。
  • 04:00:00 在教程的这一部分,演示者演示了如何使用 Kegel 环境包创建 Connect Four 环境并与两个代理一起玩游戏。代理使用 MCTS 搜索算法根据经过训练的 AlphaZero 模型进行预测。演示者还对代码进行了一些小的修正,例如在 fs03 中加入温度动作道具,并使用 save.optimizer 代替普通的优化器。此外,演示者将温度设置为零以始终获得策略的弧最大值,并将反射 epsilon 设置为 1 以向游戏添加一些随机性。最后,演示者将玩家一定义为使用 MCTS 算法根据训练模型进行预测的计算代理。

  • 04:05:00 在“AlphaZero from Scratch - Machine Learning Tutorial”这一部分中,演讲者通过为玩家 1 和玩家 2 编写代码来对游戏和论证进行建模,这为尝试不同的玩家提供了更大的灵活性。然后他们运行单元并获得模型相互对抗的可视化效果,结果是平局,因为模型可以防御所有攻击。他们还演示了如何通过更改游戏和参数以及更新路径来修改 Tic-tac-toe 的代码,从而使模型再次相互对弈以平局。教程已完成,演讲者提供了一个 GitHub 存储库,其中包含每个检查点的 jupyter 笔记本,以及一个权重文件夹,其中包含 Tic-tac-toe 和 Connect Four 的最后一个模型。演讲者还表示,如果有兴趣的话,他们有兴趣做一个关于穆零的后续视频。
 

谷歌对 ChatGPT 感到恐慌 [AI 战争已经开始]



谷歌对 ChatGPT 感到恐慌 [AI 战争已经开始]

该视频讨论了谷歌如何为聊天机器人变得更强大的潜力做准备,以及这将如何影响他们的商业模式。据报道,微软正在开发一款聊天机器人,允许用户以更人性化的方式与 Bing 进行交流,该功能将有利于目前不存在图像的搜索。微软表示,他们正在与开放人工智能密切合作,因此该功能不会产生露骨或不适当的视觉效果。因此,Bing 似乎正在进行重大改革,集成了聊天 GPT 和 Dali 2 功能。

  • 00:00:00 1998 年,谷歌在另一栋房子旁边租了一间房子。乒乓球桌在另一栋房子里。

  • 00:05:00 该视频讨论了谷歌如何担心聊天机器人变得更强大的潜力,以及这会如何损害他们的商业模式。据报道,谷歌一直在制定一项计划来解决这个问题,他们的联合创始人拉里佩奇和谢尔盖布林已被邀请参加会议讨论这个问题。

  • 00:10:00 在此视频中,谷歌被视为与微软竞争,因为后者正在向开放人工智能额外投资 100 亿美元。然而,这可能不符合开放人工智能运动的最佳利益,因为它可能会导致人工智能在真正有机会开始之前就已经死亡。据报道,谷歌还致力于 20 个 AI 项目,其中一些项目类似于聊天 GPT,这导致微软向该公司投资了 3 亿美元。目前还不清楚这将如何发挥作用,但谷歌似乎将被迫把安全问题放在次要位置,并推出他们的人工智能产品。

  • 00:15:00 该视频讲述了有关微软正在开发聊天机器人的传闻,该机器人可以让用户以更人性化的方式与 Bing 进行交流。它还提到此功能将有利于当前不存在图像的搜索。最后,该视频讨论了这种集成将如何允许用户输入文本并生成图像,这对于当前不存在图像的搜索特别有用。微软表示,他们正在与开放人工智能密切合作,因此该功能不会产生露骨或不适当的视觉效果。因此,Bing 似乎正在进行重大改革,集成了聊天 GPT 和 Dali 2 功能。当它推出时,它肯定会引起所有人的注意。
 

会议 JENSEN HUANG (NVIDIA) 和 ILYA SUTSKEVER (OPEN AI).AI 的今天和未来的愿景



会议 JENSEN HUANG (NVIDIA) 和 ILYA SUTSKEVER (OPEN AI).AI 的今天和未来的愿景

NVIDIA 首席执行官黄仁勋和 OpenAI 的联合创始人 Ilya Sutskever 在一次会议上讨论了人工智能 (AI) 的起源和发展。 Sutskever 解释了深度学习是如何变得清晰的,通过压缩进行的无监督学习如何导致发现与情绪相对应的神经元,以及神经网络的预训练如何通过人类和 AI 协作进行指导和改进。他们还讨论了 GPT-4 和多模态学习的进步和局限性,以及合成数据生成和提高 AI 系统可靠性的作用。尽管是 20 年前的同一个概念,但他们都对人工智能研究取得的进展感到惊叹。

  • 00:00:00 在这一环节,NVIDIA CEO黄仁勋赞扬了OpenAI联合创始人Ilia Sutskever在人工智能领域的成就。他向 Ilia 询问了他对深度学习的直觉,以及他是如何知道它会起作用的。伊利亚解释说,由于他对意识及其影响的好奇心,他对人工智能很感兴趣,而且人工智能的进步似乎真的有助于实现这一目标。他补充说,在 2002 年至 2003 年,计算机无法学习任何东西,甚至不清楚这在理论上是否可行,但发现从事神经网络工作的 Jeff Hinton 给了伊利亚希望。

  • 00:05:00 在本节中,Sutskever 讨论了 AlexNet 的起源,以及使用监督学习构建深度大型神经网络的想法如何让他变得清晰。他解释说,当时机器学习领域并没有关注神经网络,而是使用其他理论上很优雅但不能代表好的解决方案的方法。 Sutskever 还提到了另一名研究生的突破性优化方法,该方法证明可以训练大型神经网络。然后很清楚,如果在 ImageNet 数据集上训练大型卷积神经网络,它一定会成功。 Sutskever 还谈到了实验室中 GPU 的出现,以及 Alex Krizhevsky 如何能够对快速卷积核进行编程并训练神经网络数据集,从而大大打破了计算机视觉的记录。这一突破的意义在于,数据集显然非常困难,超出了经典技术的范围。

  • 00:10:00 在本节中,Jensen Huang 和 Ilya Sutskever 讨论了 OpenAI 的早期阶段以及他们关于如何处理智能的初步想法。早在 2015-2016 年,该领域仍处于起步阶段,研究人员少得多,了解也少得多。 OpenAI 的第一个大想法是通过压缩进行无监督学习的概念,这在当时是机器学习中尚未解决的问题。 Sutskever 认为,真正好的数据压缩将导致无监督学习,允许提取其中存在的所有隐藏秘密。这导致了 OpenAI 的几项工作,包括情绪神经元,它在 LSTM 中发现了一个与其情绪相对应的神经元。

  • 00:15:00 在本节中,Ilya Sutskever 讨论了无监督学习的概念以及预测序列中的下一个标记作为学习表示的有价值目标的重要性。他提到监督学习中的难点不在于从哪里获取数据,而在于为什么要费心训练神经网络来预测下一个标记。扩展性能改进也是他们工作中的一个重要因素,强化学习是另一个重要的关注领域,特别是在训练强化学习代理玩实时战略游戏 DotA 2 以与最好的玩家竞争时在世界上。

  • 00:20:00 在本节中,Ilya Sutskever 解释了预训练大型神经网络以预测来自互联网的不同文本中的下一个单词的过程,这导致学习压缩的抽象可用世界表示。然而,预训练并没有指定我们期望从神经网络获得的期望行为,而这正是第二阶段从人类和人工智能协作中进行微调和强化学习的地方。第二阶段是必不可少的,因为它是我们与神经网络通信并指示它做什么和不做什么。

  • 00:25:00 在本节中,演讲者讨论了人工智能技术的进步,例如 GPT-4,它在推出仅几个月后就成为人类历史上增长最快的应用程序。 GPT-4 是对 Chat GPT 的改进,可以更准确地预测文本中的下一个单词,从而增加对文本的理解。通过不断研究和创新保真度,人工智能在遵循预期指令方面变得更加可靠和精确。此外,对话可以消除歧义,直到 AI 理解用户的意图。此外,GPT-4 在 SAT 成绩、GRE 成绩和律师考试等许多方面的表现都得到了显着和值得注意的提升。

  • 00:30:00 在本节中,演讲者讨论了神经网络(特别是 GPT4)推理能力的当前局限性和改进潜力。虽然神经网络展示了一些推理能力,但可靠性仍然是其实用性的主要障碍。演讲者建议让神经网络大声思考并引入雄心勃勃的研究计划可以提高可靠性和准确性。目前,GPT4 没有内置检索功能,但它擅长作为下一个单词预测器并且可以使用图像。

  • 00:35:00 在本节中,Jensen Huang 和 Ilya Sutskever 讨论了多模态学习及其重要性。他们解释说,涉及从文本和图像中学习的多模态学习对于神经网络更好地理解世界很有用,因为人类是视觉动物。多模态学习还使神经网络能够通过提供额外的信息源来更多地了解世界。他们争辩说,虽然理解颜色等事物很重要,但纯文本神经网络仍然可以通过暴露于数万亿个单词来学习难以仅从文本中学习的信息。

  • 00:40:00 在本节中,Sutskever 和 Huang 讨论了不同数据源在 AI 学习中的重要性,包括视觉和音频。他们谈到了多模态的概念,以及如何结合不同的数据源对了解世界和视觉交流非常有帮助。 Sutskever 还提到了一篇论文,该论文表明世界最终将耗尽用于训练的代币,以及人工智能如何生成自己的数据可能是解决该问题的可能方法。

  • 00:45:00 在本节中,演讲者讨论了合成数据生成在 AI 训练和自学中的作用。虽然现有数据的可用性不可低估,但人工智能生成自己的数据用于学习和解决问题的可能性是未来的可能性。在不久的将来,重点将放在提高人工智能系统的可靠性上,以便它们可以在重要决策制定中得到信任。 AI 模型(例如 GPT-4)在可靠地解决数学问题和制作创意内容方面的潜力令人兴奋,但仍有许多工作要做,以提高它们在理解和响应用户意图方面的准确性和清晰度。

  • 00:50:00 在本节中,Jensen Huang 和 Ilya Sutskever 讨论了当今人工智能中神经网络的惊人成功。尽管与 20 年前的神经网络概念相同,但由于使用相同的基本训练算法以不同的方式在更大的数据集上进行训练,它变得更加严肃和激烈。 Sutskever 在 Open AI 上关于 Alexnet 和 GPT 的开创性工作是非凡的成就,Huang 很钦佩他分解问题和描述大型语言模型的艺术状态的能力。两人追赶,惊叹人工智能领域取得的进步。