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

 

第 9 讲深度学习 2:生成模型、GAN、变分自编码器 (VAE) (MLVU2019)



9 深度学习 2:生成模型、GAN、变分自动编码器 (VAE) (MLVU2019)

该视频涵盖了与深度学习相关的各种主题,包括深度学习项目的拆分数据、迁移学习以及对生成模型的关注。演讲者探讨了使用神经网络生成随机结果和概率分布的概念,解释了训练生成器的不同方法,例如生成对抗网络和自动编码器。他们还深入研究了 GAN、条件 GAN、隐写术和自动编码器在各种机器学习应用(例如数据处理和降维)中的重要性。演讲者讨论了在没有太多标记数据的情况下对潜在空间中的数据进行高级操作,以及对变分自动编码器等替代方法的需求。

视频的第二部分探讨了变分自动编码器 (VAE),这是一种生成模型,旨在解决其他模型中常见的模式崩溃问题。两个神经网络用于将输入编码到潜在空间并将其解码回输入空间,从而优化编码和解码。演讲者将损失函数分解为 KL 散度项和预期对数似然项,可用于优化网络。解释了在 VAE 中最大化期望的挑战,并讨论了重新参数化技巧作为克服这个问题的方法。演讲者将 VAE 与 GAN 和 PCA 等其他技术进行了比较,得出的结论是,虽然 VAE 更强大,但它们也更难训练。

  • 00:00:00 在这一部分中,演讲者提醒听众在查看数据之前将他们的数据分为训练集和测试集,因为一旦看到就不可能看不见。对于那些从事深度学习项目的人,他们建议使用迁移学习来创建强大的模型,而无需昂贵的培训,方法是使用来自谷歌等公司的预训练网络,并在顶部添加他们自己的层。对于那些无法访问配备大型 GPU 的大型机器的人来说,这是一个不错的选择。此外,演讲者建议检查项目的评分标准,以确保涵盖所有重要方面以获得轻松通过分数。

  • 00:05:00 在本节中,视频讨论了用于生成建模的深度学习,其中训练神经网络以生成概率分布,从中可以对新事物进行采样,例如图像或语言位。第一步是构建一个称为生成器的神经网络,它可以产生这些新事物。显示了一个神经网络示例,该神经网络经过训练可以生成实际不存在的人的图像。视频接着解释了训练生成器的两种方式,即生成对抗网络和自动编码器,重点介绍变分自动编码器作为一种更有原则的方法。

  • 00:10:00 在本节中,演讲者解释了如何使用神经网络生成随机结果和概率分布。有两种方法可以做到这一点:通过为网络提供一些输入并将其输出解释为多元正态分布的均值和 Sigma,或者通过从标准多元正态分布中抽样随机输入并通过神经网络提供它们以观察输出。后一种方法可以产生高度复杂和有趣的概率分布,正如演讲者用双层神经网络将多元正态分布转换为具有复杂形状的非正态分布的实验所示。这种方法可用于对高度复杂的分布(例如人脸)进行建模。

  • 00:15:00 本节讲师讲解生成模型的训练步骤和可能面临的问题,如mode collapse。将神经网络表示的概率分布拟合到数据集的一种朴素方法是通过反向传播,使用生成图像和原始图像之间的距离作为损失。然而,这种方法经常会失败,并导致数据集的所有模式都崩溃为一种模式。然后,讲师展示了两个运行良好的生成模型示例:生成对抗网络 (GAN) 和变分自动编码器 (VAE)。讲师解释了启发 GAN 的卷积神经网络 (CNN) 背后的历史,以及它们如何通过两个相互竞争的网络来改进生成的图像。另一方面,VAE 具有将原始图像压缩为概率分布的编码器网络和从该分布生成新图像的解码器网络。

  • 00:20:00 在本节中,演讲者讨论了一种用于优化输入以生成与特定输出神经元匹配的图像的技术,从而导致对抗性示例的出现,这些伪造图像可以被网络误认为是完全是别的东西。这项技术最初对神经网络社区是一个打击,但它导致了一种特别学习算法的发展,该算法会生成对抗性示例并将其作为反例添加到数据集中。然而,这种方法并不完全有效,因此开发了一种称为 Vanilla GAN 的端到端解决方案,这是一种基本方法,演讲者用来说明在框架之上构建的其他三种方法,以创建令人印象深刻的示例。

  • 00:25:00 在本节中,演示者解释了 GAN(生成对抗网络)的工作原理。 GAN 由两个神经网络、一个产生输出的生成器和一个鉴别器组成,鉴别器是一个图像分类器,用于确定哪些输出是伪造的。训练 gan 的目的是让生成器网络产生越来越逼真的结果。正如演示者所解释的那样,生成器和鉴别器的工作就像两人的零和游戏,每个网络都试图超越另一个网络。生成器负责尝试创建欺骗鉴别器的虚假输出,而鉴别器的工作是捕捉这些虚假输出。演示者解释说,经过训练后,GAN 的输出将是目标输入和随机性的组合。

  • 00:30:00 在本节中,演讲者讨论了条件 GAN,旨在将生成数据的能力与对输出的控制相结合。与在没有任何控制的情况下生成输出的普通 GAN 不同,条件 GAN 采用控制输出的输入,这使得它们对具有多个标签的数据集很有用。演讲者还讨论了循环 GAN,它使用两个生成器映射两个未配对的图像包,并添加循环一致性损失项以确保如果来回映射图像,则获得原始图像。这允许生成额外的图像,否则这些图像的创建成本很高。

  • 00:35:00 在本节中,演讲者解释了隐写术的概念,即隐藏代码,以及它与生成模型(如 GAN 和 VAE)之间的关系,这些模型将一个图像隐藏在另一个图像中。这些模型的目标是让鉴别器无法分辨出一幅图像隐藏在另一幅图像中。演讲者展示了这些模型如何将图像转换为不同风格的示例,例如将照片转换为莫奈的画作。演讲者还谈到了生成超逼真人物图像的 GAN 风格,以及它如何通过反卷积神经网络提供潜在向量来生成从低级到高级语义属性的图像。

  • 00:40:00 在本节中,演讲者讨论了一个模型,该模型允许通过在每一层将随机噪声输入网络来控制生成图像的细节。这种方法减少了潜在向量的工作量,还允许生成独特的图像。演讲者通过在生成过程中改变特定点的光线和矢量来演示此技术,从而生成具有在每个级别选择的特定特征的图像。该模型提供了一定程度的控制,超越了简单地生成超逼真的面孔。

  • 00:45:00 在本节中,演讲者讨论了生成器创建后可以做什么。其中一种技术称为插值法,它涉及从多元分布空间中取两个点并在它们之间画一条线,挑选出均匀分布的点,并将它们馈送到生成器中,从而可以看到从一个输出到下一个。这可以在等间距点的网格上完成,以将角映射到照明空间中的任意点,从而创建插值网格。这些潜在空间通常以球形拓扑布局,这意味着要进行插值,我们还需要移动通过这个球形区域,称为球形插值。最后,要进行数据操作或降维,需要映射到潜在空间,这需要使用自动编码器将输出映射到潜在空间。

  • 00:50:00 在本节中,演讲者讨论了自动编码器及其在数据处理和降维等各种机器学习应用中的重要性。自动编码器是帮助将数据从输入映射到潜在空间并返回到输出的神经网络。网络的瓶颈架构允许它以更压缩的形式学习和重现输入的特征。一旦经过训练,网络就可以在二维空间中产生潜在代码的聚类,这些聚类将高级语义特征(例如笑脸)作为空间中的一个聚类。

  • 00:55:00 在本节中,演讲者讨论了在潜在空间中操作数据以对数据进行高级操作而不需要太多标记数据。他们展示了一种简单的算法,可以使用在潜在空间中处理然后解码的编码图片来使某人微笑。演讲者还讨论了自动编码器的局限性以及对变分自动编码器 (VAE) 等替代方法的需求,它强制解码器对原始输入附近但不完全相同的点进行解码,以确保空间中的正确插值.

  • 01:00:00 在视频的这一部分,演讲者讨论了变分自动编码器 (VAE),这是一种生成模型,允许模型关注数据之间的点并确保数据以原点为中心并且在每个方向上都有不相关的方差。最大似然原理用于将模型拟合到数据,神经网络用于近似真实后验。模式崩溃仍然是一个问题,因为没有从 X 到 Zed 的映射,但是 VAE 提供了比以前的模型更好的解决方案。

  • 01:05:00 在本节中,我们将了解生成模型以及它们如何遭受模式崩溃的影响,在模式崩溃中,不同的输入会产生相似的输出。为了解决这个问题,我们可以使用变分自动编码器 (VAE),它使用两个神经网络将输入编码为潜在空间中的分布,并将潜在空间分布解码为输入空间中的分布。我们可以使用输入的对数概率的分解得到实际概率的下界,可以用作损失函数。这使我们能够优化编码和解码的神经网络,这有助于缓解模式崩溃问题。

  • 01:10:00 在本节中,演讲者解释了如何将 L 函数重写为可用于深度学习系统的函数。目标是最大化可能性的下限,通过最小化负 L,我们可以尽可能地提高可能性。演讲者使用条件概率的定义将分数的顶部分解,并将其简化为期望之和,即成为 KL 散度和期望对数似然。这些项可以计算并用作深度学习系统中的损失函数。 KL 项将集合向量拉向原点并将它们加厚到原点周围的超球体,而另一个项需要采用期望值,这使得实现起来更具挑战性。

  • 01:15:00 在本节中,演讲者讨论了在变分自动编码器 (VAE) 的背景下最大化期望的挑战。演讲者解释说,他们通过抽取样本并计算每个样本的概率密度的对数,然后取平均值来近似期望值。他们将 L 设置为 1 以保持简单。然而,他们注意到他们的方法卡在了不可微分的采样步骤。为了解决这个问题,他们采用了重新参数化技巧,这使他们能够将采样步骤作为其神经网络的一部分来实施。这导致了变分编码器的开发,这是一种训练更易于实现的生成器的原则性方法。

  • 01:20:00 在本节中,演讲者解释了称为生成对抗网络 (GAN) 的生成模型与变分自动编码器 (VAE) 之间的区别。 GAN 提供了从潜在空间到数据空间的映射,而 VAE 则以相反的方式工作,从数据空间到潜在空间再回到数据空间。 VAE 提供数据元素之间的插值,包括语言和离散数据,并且它们在生成离散变量方面比 GAN 更有效。演讲者举例说明了 VAE 如何使用微笑向量、现有论文和减去太阳镜向量来执行恶意因素实验。演讲者总结说,VAE 提供了一种来自第一性原理的直接方法,但 GAN 更适合图像。

  • 01:25:00 在本节中,演讲者将变分自动编码器 (VAE) 与主成分分析 (PCA) 进行了比较,指出这两种技术都用于降维和将数据映射到标准化分布,但 VAE 更强大并且可以做到更多的东西。然而,训练 VAE 要困难得多,因为它需要梯度下降,而 PCA 可以找到解析解。此外,PCA 通常会根据数据提供有意义的维度,例如面部的微笑维度,而 VAE 生成的维度通常没有任何意义,除非针对特定的语义特征。
9 Deep Learning 2: Generative models, GANs, Variational Autoencoders (VAEs) (MLVU2019)
9 Deep Learning 2: Generative models, GANs, Variational Autoencoders (VAEs) (MLVU2019)
  • 2019.03.05
  • www.youtube.com
slides: https://mlvu.github.io/lectures/51.Deep%20Learning2.annotated.pdfcourse materials: https://mlvu.github.ioToday we discuss neural networks that can ge...
 

第 10 讲树模型和集成:决策树、AdaBoost、梯度提升 (MLVU2019)



10 个树模型和集成:决策树、AdaBoost、梯度提升 (MLVU2019)

视频的第一部分介绍了决策树,这是一种流行的用于分类和回归的机器学习模型,它通过分割实例空间并为每个部分选择一个类来工作。该视频还讨论了如何使用信息增益来训练决策树,以及修剪如何帮助减轻过度拟合。演讲者强调了将数据拆分为训练集、验证集和测试集的重要性,以确保模型之间的公平性。此外,该视频还讨论了集成学习,其中训练并组合了多个决策树或其他模型,以解决高方差和不稳定性等问题。 Boosting 也作为一种模型集成技术引入,它涉及按顺序训练分类器并重新加权数据以改进集成。最后,解释了 Adaboost 算法,该算法选择最小化损失函数的分类器来改进集成。

视频的第二部分涵盖了各种树模型和集成,包括 AdaBoost 和梯度提升。 AdaBoost 是一种流行的分类模型增强方法,它根据分类器的性能对数据实例进行加权。梯度提升涉及用常数函数初始化模型、计算残差、将新模型拟合到标记的残差并将其添加到集成中。演讲者解释了梯度提升和 AdaBoost 之间的区别,并指出集成在研究中使用不多,因为它们会混淆结果。此外,bagging 减少了方差,boosting 减少了偏差。

  • 00:00:00 在视频的这一部分中,演示者介绍了三种机器学习模型和模态集成,这是一种在生产和竞赛(如 Kaggle)中流行的方法。该方法结合了决策树学习的基本思想,分类模型或回归模型,以及集成方法,训练大量模型并将它们组合起来使模型更强大。演示者还解释了决策树对数字和分类特征都起作用;它们主要用于分类特征。本节最后介绍了一个关于电影的数据集,该数据集将用于演示决策树模型。

  • 00:05:00 在本节中,视频讨论了决策树的工作原理以及如何使用数据集对其进行训练。决策树学习的过程包括找到一个好的特征进行分割,逐步扩展树,以及创建数据子集。拆分是通过在每个子集中创建类标签的最不均匀分布来确定的。给出了关于电影评级和流派的数据集的示例,其中对评级的拆分不会产生良好的类别分布,但对流派的拆分可以。

  • 00:10:00 在本节中,视频通过对实例空间进行分段并为每个分段选择一个特定的类来解释决策树的工作原理。树通过为每个叶子选择新的分裂来扩展,但是在从根到叶子的路径中对同一分类特征分裂两次是没有意义的。停止条件是当所有输入或所有输出都相同时,非均匀性由段之间的类分布决定。这对于三个或更多类别来说可能很困难,因为必须考虑每个类别的比例。

  • 00:15:00 在本节中,演讲者解释了如何使用熵来衡量分布的均匀性,以及如何计算决策树分类中特征的信息增益。熵是衡量分布均匀程度的量度,均匀分布具有更高的熵。演讲者用两个分布证明了这一点,并使用熵公式表明均匀分布的熵为两位,而非均匀分布的熵要低得多,因为它使用更短的代码传输信息的效率更高。也解释了条件熵,也就是以某物为条件的熵,一个特征的信息增益是用看到特征前的通用熵减去看到特征后的熵来计算的。

  • 00:20:00 在本节中,详细解释了使用具有最高信息增益的特征分裂树的过程。该算法从未标记的叶子开始并循环直到所有叶子都被标记。对于每个带有片段的未标记叶子,算法检查停止条件,这可能是特征用完或所有实例都具有相同的类。如果不满足停止条件,则在具有最高信息增益的特征上分裂叶子。选择数字特征的阈值以最大化信息增益,并且具有数字特征的决策树分类器可能具有更复杂的决策边界,因为可能会使用不同的阈值多次拆分同一特征。

  • 00:25:00 在本节中,演讲者讨论了使用大型复杂决策树时的过度拟合问题。他们解释了训练准确性如何随着树的最大尺寸而增加,但测试或验证数据的准确性会大幅下降。为了解决这个问题,演讲者介绍了修剪的概念以及它如何帮助减轻过度拟合。他们还强调了将数据拆分为训练、验证和测试集以进行超参数选择和模型搜索以确保跨模型公平性的重要性。最后,演讲者指出,像 SK Learn 这样的工具会在训练过程中自动保留一些训练数据以进行修剪。

  • 00:30:00 在本节中,演讲者谈到了回归树,当目标标签不是一个类,而是一个数值时使用。基本原理与决策树相同,但有一些差异需要注意。首先,在回归树中,叶子用数字而不是类别标记。平均值或中位数通常用于标记段中的实例。其次,不使用熵,而是使用方差来确定在每个步骤中拆分哪个特征,从而最大化获得的信息。演讲者还讨论了模型空间的泛化层次结构,其中泛化能力最强的模型是常数函数,添加更多拆分会增加模型的复杂性。

  • 00:35:00 在本节中,演讲者讨论了作为模型的决策树和回归树及其局限性,例如高方差和不稳定问题。这些问题的解决方案是训练多个决策树并将它们组合成一个集成,这是一种流行的技术。集成学习的目标是解决偏差和方差的权衡,其中偏差是结构问题,方差是模型误差的扩散。集成学习有助于解决这些问题,将决策树与其他模型相结合成为可能。使用评分标准对学生项目进行评分的类比用于解释高偏差和低方差。
     
  • 00:40:00 在本节中,演讲者讨论了机器学习中的偏差和方差问题,以及引导程序如何帮助解决这个问题。由于可用的数据集有限,可能很难确定观察到的与目标的距离是由于高偏差还是高方差造成的。 Bootstrapping 通过模拟从另一个数据集采样的过程来解决这个问题,方法是通过替换对原始数据集进行重采样以创建新的样本数据集。通过分析经验分布的累积密度函数,很明显,从原始数据集重新采样近似于从原始数据分布采样,从而可以通过创建不同的数据集进行训练来检测高方差。

  • 00:45:00 在本节中,视频介绍了 Bootstrap 聚合或 Bagging,它涉及对数据集进行重采样并在每个重采样数据集上训练多个模型。然后通过对新数据进行多数投票对模型进行组合,该方法减少了可变性,但并没有减少偏差。此外,该视频还讨论了提升,这有助于一起提升弱模型系列以实现更低的偏差。 Boosting 涉及向数据集添加一个称为权重的小列,它指示每个特征在学习过程中的特定点的重要性。 boosting 的一般想法是从某个分类器 M0 开始,它可以是任何东西——线性分类器、常量模型或输出多数类的分类器。

  • 00:50:00 在本节中,介绍了提升作为模型集成技术的概念。提升涉及按顺序训练分类器,并通过增加先前分类器出错的实例的权重并减少它们正确的实例的权重来重新加权数据。分类器根据它们在改进集成中的重要性来赋予权重,最终的集成是使用各自权重训练的所有模型的总和。 AdaBoost 是一种更有原则的增强方法,涉及定义误差函数以最小化和使用加权训练数据。误差函数用于确定赋予集成中每个模型的权重。

  • 00:55:00 在视频的这一部分,演讲者解释了 Adaboost 中使用的损失函数以及如何将其最小化以选择要添加到集成中的下一个分类器。他描述了对于数据集中的每个实例,如何通过采用目标标签和预测标签之间的差异的指数来计算误差,并展示了如何在整个数据集上对这个误差求和以给出当前整体的误差.演讲者随后解释了如何将此错误进一步简化为一个新函数,该函数可以通过选择下一个分类器来最小化,以最小化错误分类实例的权重总和,这是等式中唯一会受到选择影响的部分分类器。总的来说,Adaboost 算法通过迭代选择最小化这种损失函数的分类器来工作,有效地增加了错误分类实例的权重并降低了未来迭代中错误分类的频率。

  • 01:00:00 在本节中,演讲者解释了 AdaBoost 算法,这是一种流行的分类模型增强方法。为了创建一个集成,该算法从一个特定的分类器开始,并根据分类器在该实例上的表现为每个数据实例计算权重。训练一个新的分类器以最小化错误分类的权重和,并为这个新的分类器赋予一个权重,该权重是通过采用误差的指数然后找到使总误差最小的 a 值来计算的。这个过程重复一定数量的步骤,集成中的最终模型就是结果。演讲者还解释了 boosting 和 bagging 之间的区别,并介绍了 gradient boosting,这是为回归模型设计的 boosting 的变体。

  • 01:05:00 在本节中,演讲者讨论了梯度提升的基本思想,其中涉及使用常量函数初始化模型并计算到目前为止的集成残差。然后,将新模型拟合到标有残差而不是原始标签的数据集,并将其添加到由值 gamma 加权的集合中。该模型可以递归地记为M3 = M2 + 另一个模型,慢慢扩大总和。之所以称为梯度提升,是因为它涉及在超级过拟合模型上计算误差平方和损失函数的梯度,这只是模型输出与目标输出之间的差异,或残差梯度。

  • 01:10:00 在本节中,演讲者通过告诉模型在预测空间中遵循梯度来解释梯度提升的工作原理。梯度提升允许用另一个损失函数替换损失函数,例如 L1 损失而不是 L2 损失。通过对模型输出求损失值的导数并应用链式法则,可以计算残差的正弦而不是残差本身,并训练集成中的下一个分类器来预测残差的正弦。该方法允许优化梯度提升中的不同损失函数。

  • 01:15:00 在这一节中,解释了梯度提升和 ADA 提升之间的区别。在梯度提升中,每个模型都拟合前一个模型的伪残差,而在 ADA 提升中,每个新模型都根据前一个模型的性能拟合一个重新加权的数据集。对于不优化损失函数且不通过微积分启发的学习方法工作的模型,梯度提升效果更好。另一方面,Stacking 是一种简单的技术,可以将多个模型的判断组合成一个输出。在您训练了一些模型并希望将它们组合成更好的模型后,可以使用此技术来获得额外的性能提升。

  • 01:20:00 在本节中,演讲者解释说,集成虽然比单个模型具有优势,但在研究中使用不多,因为需要单独测试模型以比较它们,而无需任何可能混淆结果的提升。此外,集成在与大型神经网络一起使用时可能会很昂贵,因此主要用于微型模型,如决策图章或小型决策树。演讲者还重申,bagging 可以减少变体,而 boosting 可以减少偏差。
10 Tree Models and Ensembles: Decision Trees, AdaBoost, Gradient Boosting (MLVU2019)
10 Tree Models and Ensembles: Decision Trees, AdaBoost, Gradient Boosting (MLVU2019)
  • 2019.03.09
  • www.youtube.com
ERRATA: In slide 55, W_i and W_c are the wrong way around in the definition of a_t.slides: https://mlvu.github.io/lectures/52.Trees.annotated.pdfcourse mater...
 

第 11 课时序数据:马尔可夫模型、词嵌入和 LSTM



第11章时序数据:马尔可夫模型、词嵌入和LSTM

在此视频中,演讲者讨论了机器学习中遇到的不同类型的顺序数据,例如按时间或顺序排列的数字或符号数据。他们引入马尔可夫模型、词嵌入和 LSTM 作为解决这些问题的模型。该视频概述了使用顺序数据进行训练和预测的过程,包括对特定事物进行测试之前发生的数据进行验证和训练的概念。此外,演讲者还解释了如何使用神经网络对序列进行建模,包括如何处理不同长度的序列和时间建模,以及使用时间反向传播训练递归神经网络的过程。最后,该视频涵盖了序列到标签分类的各个方面,当循环神经网络快速遗忘事物时,可以使用马尔可夫模型对其进行改进。

该视频涵盖了与顺序数据处理相关的一系列主题,包括马尔可夫模型及其局限性、长短期记忆 (LSTM) 网络及其优势、使用 LSTM 生成文本和图像、teacher forcing 技术和图像字幕。演讲者详细解释了 LSTM 结构及其包含的各种门,以及如何从这些网络中训练和采样以执行莎士比亚文本生成和图像字幕等任务。还讨论了使用嵌入层改进词级 LSTM 的重要性,以及可用于序列处理的方法范围——从更简单的模型到更强大的模型,如 LSTM。

  • 00:00:00 在本节中,演讲者讨论了参加全国学生调查对计算机科学专业学生的重要性,因为投票率一直很低。接下来,演讲者宣布下周没有家庭作业,因为它将被模拟考试所取代。演讲者向听众保证课程的困难部分已经结束,剩下的课程会不那么复杂。本次讲座的主题是序列数据,演讲者介绍了马尔可夫模型、词嵌入和 LSTM 作为解决此类问题的模型。

  • 00:05:00 在本节中,演讲者讨论了机器学习中可能遇到的不同类型的顺序数据,例如按时间或顺序排列的数字或符号数据。根据问题的性质,数据可以具有不同的维度,例如一维或二维。例如,语言数据可以被看作是一维的,每个单词都是一个离散值,或者被看作是二维的,带有后文本词性标签。演讲者还提到了可能的机器学习任务,例如分类或预测,具体取决于数据的类型和维度。

  • 00:10:00 在本节中,演讲者解释了如何使用机器学习模型预测序列的下一个值,方法是在单个序列设置中给定先前值,方法是将数据转换为包含先前值和目标的特征的表价值。他们建议使用回归学习器(如线性回归或回归树)来训练模型,但请注意,使用前向验证过程将数据拆分为训练、验证和测试集非常重要,以确保模型仅在过去的数据并在未来的数据上进行测试,这就是现实世界用例中发生的情况。

  • 00:15:00 在本节中,演讲者讨论了使用顺序数据进行训练和预测的不同方法。他们强调在测试特定事物之前对发生的数据进行验证和培训的重要性。他们介绍了马尔可夫模型作为词级建模的概率模型,并解释了如何使用概率链式法则分解多个随机变量的联合概率分布。他们展示了如何将句子“Congratulations, you have won a prize”分解为六个随机变量的联合概率分布,这六个随机变量是六个独立的随机变量,并将联合概率分布分解为单词的条件分布的乘积它前面的单词。

  • 00:20:00 在本节中,演讲者讨论如何通过将句子分解为条件概率的乘积来计算句子的概率。建议使用对数概率来避免欠流,因为特定单词的概率可能会变得非常低,尤其是在词汇量很大的情况下,因此最好取对数。理想的语言模型不仅应该包括语法规则,还应该包括常识推理和物理学,但现在,说话者使用马尔可夫假设,该假设假设一个词的概率仅取决于它的最后两个词。我们可以通过计算它们在称为语料库的大型语言数据集中出现的次数来估计这些概率。

  • 00:25:00 在本节中,视频讨论了如何使用马尔可夫模型和条件概率来创建生成文本的语言模型。马尔可夫模型允许计算单词序列的概率,可用于通过顺序采样生成文本。这种技术虽然有其局限性,但允许测试语言模型的能力和准确性。此外,马尔可夫模型可用于分类,这是通过贝叶斯分类器完成的,该分类器使用语言模型对单词进行建模,以垃圾邮件或非垃圾邮件为条件,以推断电子邮件是垃圾邮件的概率。

  • 00:30:00 在本节中,演讲者讨论了马尔可夫模型,该模型用于通过估计给定类别的序列概率来对序列数据建模,然后使用贝叶斯规则获得类别概率。零阶马尔可夫模型可用于垃圾邮件,但对于其他任务,高阶模型可能更好。然而,马尔可夫模型将单词视为原子符号,并没有考虑某些单词具有相似含义的事实。为了解决这个问题,嵌入模型可用于为每个对象(在本例中为单词)分配一个权重向量,该向量对对象之间的相似性进行建模。这是通过学习这些向量中的参数或值来计算潜在因子来完成的,类似于在向量表示中编码图像。

  • 00:35:00 在本节中,介绍了分布假设,该假设指出出现在相似词附近的词通常表示同一事物。然后讨论词嵌入算法作为该假设计算嵌入的应用。在应用该算法之前,需要单词的表示,这是一个神经网络,每个单词都有一个单热向量,允许一个非常简单的神经网络,其中词汇映射到嵌入空间的 300 输出。该模型的底部用作嵌入空间的编码,虽然一些研究人员认为它是一个查找表,但它本质上与从单热向量到嵌入的映射是一样的。

  • 00:40:00 在本节中,讲师讨论词嵌入的概念,这是一种将离散对象(例如词)表示为密集向量的方法。通过创建嵌入的线性映射矩阵来训练嵌入,然后可以使用该矩阵来查找单词上下文的概率分布。他举了一个例子,说明从“女人”中减去“男人”的嵌入如何创建一个方向,使事物变得更加女性化,以及如何使用这个方向来计算其他词(如“女王”)的词向量。讲师解释了如何将这些嵌入用作更大的机器学习神经网络的起点,以及如何从 Google 的开源模型库下载大量基于大量文本数据训练的词嵌入以用于其他项目.

  • 00:45:00 在本节中,演讲者讨论了如何使用神经网络对序列建模,包括如何处理不同长度的序列以及如何对时间建模。一种方法是使用循环连接,其中隐藏层接受前一个隐藏层以允许在网络中循环。这允许网络对不同长度的序列进行操作,并且可以一次输入一个序列以获得序列输出。演讲者还强调了填充序列的重要性,使它们在神经网络的批处理和训练中具有相同的长度。

  • 00:50:00 在本节中,解释了使用时间反向传播训练循环神经网络的过程。挑战在于随着隐藏层不断变化而通过循环层进行反向传播。解决这个问题的一种方法是展开网络,使循环连接从网络的前一个副本转到下一个副本。生成的网络被视为没有循环连接的大前馈网络,权重通过反向传播更新。这种训练过程称为序列到序列学习,其中输入序列映射到输出序列。

  • 00:55:00 在这一节中,演讲者解释了sequence to label,其中输出标签来自于一个序列数据,比如band classification。但是,仅使用序列的最后一个元素来预测输出并不理想,因为它会产生不对称性并可能导致梯度传播问题。相反,最好获取序列的整个输出并对其进行平均,这样网络可以考虑输入序列的每个部分,使其成为更好的标签预测器。此外,演讲者解释说,标记序列可以有两种方式,一种是将输入标签重复 n 次并将其输入神经网络以产生输出,另一种是使用输入初始化结束状态并为神经网络提供 0 向量以生成顺序。然而,这效率不高,因为循环神经网络往往会很快忘记事情,这意味着在某些情况下,马尔可夫模型可能是更好的选择。

  • 01:00:00 在本节中,演讲者讨论了马尔可夫模型在记忆方面的局限性,尤其是在决定哪些信息值得记住方面。解决方案是长短期记忆 (LSTM),它是一种循环神经网络,具有多个学习门来决定要记住或忘记哪些信息。门包含两个值介于 0 和 1 或 -1 和 1 之间的向量,其中左边的值选择要添加到内存中的部分,右边的值决定保留哪些信息,具体取决于输入信息需要多少添加和需要取消多少。在使用 LSTM 时,为记忆选择的信息被不断添加,有利于保留更长期的记忆。

  • 01:05:00 在本节中,演讲者解释了长短期记忆 (LSTM) 网络的结构,这是一种由细胞构成的递归神经网络。细胞在每个时间步接受输入并提供输出,同时在时间步之间传递值 C(细胞状态)和值 Y(输出)。演讲者分解了 LSTM 网络的视觉符号,并继续描述各种门,包括减少记忆中激活的遗忘门,以及决定将输入的哪些部分添加到记忆中的输入门。最后一步涉及确定输出值,这是通过另一个 sigmoid 激活层发生的。演讲者强调了使用 LSTM 网络的优势——沿着网络的脊柱或传送带没有消失的梯度,这提高了它的效率。

  • 01:10:00 在本节中,演讲者解释了如何从 LSTM 中采样以构建字符级序列生成器。输出是基于输入历史的下一个字符的概率分布。该模型学习布置诸如逗号、放置新行和近似抑扬格五音步之类的东西,如果大声朗读,这听起来像是莎士比亚。该模型被训练为在字符级别而不是单词级别对数据进行排序,因为它更强大,但它需要输入整个序列,即使只对几个字符进行采样也是如此。演讲者引用了一个实验,其中有人训练和测试了一个莎士比亚模型,该模型生成了令人印象深刻且非常莎士比亚的文本,证明该模型可以通过编辑维基百科文章来学习语法,其中包括链接和某些标记文本。

  • 01:15:00 在本节中,演讲者讨论了通过在大量数据上训练网络,使用 LS DM 生成文本,例如维基百科文章或唐纳德特朗普的推文。他们强调了 LS DM 可以体现的不同模式,例如 HTML 或 XML,并提到网络甚至可以生成看起来像高级数学论文的数学。此外,演讲者建议使用 LS DM 使用馈入网络的随机向量和基于变分外部编码器 (VAE) 的编码器/解码器网络生成随机输出,这通过神经网络生成的音乐示例得到进一步证明在 MIDI 片段上训练。

  • 01:20:00 在本节中,演示者讨论了如何使用教师强制技术对语言进行建模,其中顺序采样预测语言模型与外部编码器相结合,用于更复杂的序列。他继续展示了一个使用教师强制的模型,称为 SketchRNN,该模型用于模拟人类快速绘制各种主题(例如猫和猫头鹰)的草图。 SketchRNN 使用变分序列到序列编码器,它导致潜在空间,用于在同一主题的不同绘图之间平滑插值。最后,演示者展示了如何使用相同的技术在人类句子之间平滑地插入,从而产生非常简洁的结果。

  • 01:25:00 在本节中,演讲者讨论了 Image COCO 数据集,其中包含来自名为 ImageNet 的数据集的图像以及描述图像中发生的事情的五个人工字幕。演讲者建议图像字幕任务的一种简单方法是下载预训练的图像分类模型并去除分类层。然后可以将生成的映射馈送到 LSTM 以训练模型以生成字幕。演讲者还解释了如何使用嵌入层改进词级 LSTM,以及 LSTM 和马尔可夫模型之间的区别。最后,演讲者讨论了可用于序列处理的各种方法,从强大到简单。
11 Sequential Data: Markov Models, Word Embeddings and LSTMs
11 Sequential Data: Markov Models, Word Embeddings and LSTMs
  • 2019.03.12
  • www.youtube.com
slides: https://mlvu.github.io/lectures/61.SequentialModels.annotated.pdfcourse materials: https://mlvu.github.ioIn the last lectures, we will discuss variou...
 

12 个矩阵模型:推荐系统、PCA 和图形卷积



12 个矩阵模型:推荐系统、PCA 和图形卷积

在视频的第一部分,演讲者讨论了矩阵模型及其在推荐系统中的应用,可用于产品推荐、新闻故事和社交网络。推荐系统依赖于显式和隐式反馈以及辅助信息,如果设计不当,可能会被操纵以传播虚假信息。矩阵分解是一种常用的基于用户行为预测评分的方法,通过平方误差法和计算 Frobenius 范数来解决寻找 U 和 M 矩阵以使 UTM 尽可能接近 R 的优化问题。演讲者还讨论了使用梯度下降优化此问题的方法,并解释了协同过滤的梯度更新规则。此外,演讲者还介绍了改进矩阵分解模型的五种方法,包括控制用户和电影偏见、使用隐式喜欢以及合并站点信息。最后,演讲者讨论了经典机器学习环境中矩阵分解的强大功能、PCA 在矩阵分解中的扩展,以及图形模型在存储数据方面的实用性。

视频的第二部分介绍了推荐系统的各种矩阵模型,包括用于节点分类和链接预测的图形卷积。图卷积通过将邻接矩阵与原始嵌入相乘来混合节点嵌入,但这种方法在表示大型社交图方面存在局限性。传统的验证方法不适用于推荐系统中使用的混合特征模型,因此需要转导学习,其中只保留训练集标签,而不保留特征。此外,建模时间和评级数据需要考虑时间戳数据和转导学习。该视频以讲座总结和以下关于强化学习的讨论的预览作为结尾。

  • 00:00:00 在本节中,演讲者介绍了矩阵模型的概念,这是分析数据集的不同方法,最好将其视为矩阵。将要讨论的模型具有将数据集作为矩阵处理的特点。讲座重点介绍通常通过矩阵分解实现的推荐系统,并讨论了 Netflix 竞赛的获胜模型。在以关于验证的讨论结束之前,讲座还简要介绍了主成分分析和图模型。

  • 00:05:00 在本节中,演讲者解释了可用于推荐系统的三种数据形式:显式反馈、隐式反馈和辅助信息。显式反馈是指要求用户对特定项目进行评分,这种情况非常有价值但相对较少。可以通过查看用户正在做什么来收集隐式反馈,例如页面浏览量、愿望清单,甚至是鼠标移动。 side information 不是用户和电影配对的信息,而是用户和电影本身的信息,比如时长、演员、导演等。演讲者指出,推荐系统可用于各种设置,包括产品推荐(例如亚马逊)、新闻故事(例如谷歌新闻)和社交网络(例如推特和 YouTube)。

  • 00:10:00 在本节中,演讲者讨论了推荐系统及其漏洞。推荐系统用于向特定用户推荐内容,但可以操纵它们来传播虚假信息。演讲者指出,任何具有两组事物以及它们之间的关系的情况都可以被视为推荐范式。例如,食谱和配料或政客和投票法。推荐系统的问题在于数据不完整,因为并非每个用户都对每部电影进行评分。演讲者建议使用嵌入模型为每个用户和电影分配一个向量,并根据损失函数学习这些向量的值,以预测缺失数据。

  • 00:15:00 在本节中,演讲者将矩阵分解描述为一种在模型中表示用户和电影的方式,其目标是根据用户行为预测电影评级。该模型为每个用户和每部电影分配一个向量,然后将它们相乘形成一个大矩阵。演讲者使用点积解释了模型如何预测负无穷大和正无穷大之间的值,较高的值表示用户更有可能喜欢这部电影。该模型的类别倾向于强化对用户行为的肤浅假设,虽然没有特别完善,但该模型仍然可以提供可靠的预测。通过矩阵分解,一个矩阵被分解成两个更小的矩阵,一个矩阵嵌入用户,另一个嵌入电影,它们的点积代表预测。

  • 00:20:00 在本节中,演示者解释了寻找 U 和 M 矩阵以使 UTM 尽可能接近 R 的优化问题。这是通过使用平方误差法并计算 Frobenius 范数来完成的。然而,问题在于评级矩阵中经常存在缺失值。为了解决这个问题,损失函数只在训练集中已知评级的 R 元素上计算,而不是 R 的所有元素。演示者还讨论了优化这个问题的两种方法,即交替优化和梯度下降。梯度下降法更灵活,更容易添加到您的模型中。

  • 00:25:00 在本节中,演讲者解释了矩阵分解协同过滤技术的梯度更新规则。他定义了误差矩阵并解释了根据参数对损失函数求导数的过程。然后,他演示了如何使用梯度更新规则来更新用户和电影嵌入的值。更新规则涉及计算误差矩阵的行和列与相应嵌入矩阵之间的点积,并将其添加到要更新的参数中。

  • 00:30:00 在本节中,演讲者解释了推荐系统中点积预测函数背后的逻辑,以及如何使用随机梯度下降对其进行训练。还讨论了只有正面评价的问题以及如何通过负面抽样来解决这个问题。然后演讲者深入研究了解决非负矩阵分解问题的两种方法,这为电影产生了一些可解释的维度,类似于 PCA 中潜在空间的概念。

  • 00:35:00 在本节中,演讲者讨论了改进电影推荐矩阵分解模型的五种方法。首先,她解释了如何通过添加学习的标量参数将控制用户和电影的偏见纳入模型。其次,通过使用隐式点赞(例如浏览行为)来创建第二个用户嵌入来解决金星或冷启动问题。第三,可以通过在损失函数中添加惩罚项来对模型进行正则化以避免过度拟合。第四,可以应用主成分分析 (PCA) 来降低用户和电影嵌入的维度。最后,演讲者谈到了如何使用图卷积将有关电影类型的信息合并到模型中。

  • 00:40:00 在本节中,演讲者解释了如何向推荐系统添加隐式信息和站点信息。对于隐式信息,系统汇总用户喜欢的所有电影嵌入并将其添加到他们现有的嵌入中。类似地,对于站点信息,用户的特征被编码到分类数据中,并将它们对应的嵌入相加以创建第三个嵌入向量。演讲者还指出,时间会影响收视率,因此控制时间对于做出好的预测是必要的。这可以通过将嵌入分块到离散时间段并为每个时间段学习不同的嵌入来完成。本节最后总结了推荐系统的矩阵分解和偏差。

  • 00:45:00 在本节中,演讲者讨论了矩阵分解在推荐系统中的强大功能,以及如何将其应用于经典机器学习环境。通过获取特征列和实例行的矩阵,通过反向传播或其他训练方法进行矩阵分解可以创建实例的低维表示,可以通过将其与 C 向量 C 矩阵相乘来恢复。这类似于主成分分析 (PCA) 等降维技术,但可以通过假设 C 的列是线性独立的来等效于 PCA,从而产生受约束的最小化问题。

  • 00:50:00 在本节中,演示者讨论了 PCA 及其在矩阵分解中的扩展。他们解释说,PCA 可以通过仅对数据的已知值进行最大化重建来用于不完整的数据。通过这样做,它允许低维表示或嵌入可用于分类或回归的数据。还介绍了稀疏 PCA 的扩展,它使用 L1 正则化器来加强稀疏性并使参数解释更容易。然后,演示者继续解释如何将不同的损失值应用于矩阵分解问题,例如二进制数据的二进制交叉熵,并展示这些方法如何为数据生成更好的嵌入。本节最后介绍了图形模型作为一种有用的数据形式。

  • 00:55:00 在本节中,演讲者讨论了图在存储数据方面的灵活性,例如社交网络、蛋白质相互作用、交通网络和知识图。然后演讲者提出了使用可以消费图的机器学习模型的想法,专门用于链接预测和节点分类任务,这可以看作类似于推荐问题。演讲者介绍了节点嵌入的概念,并讨论了图卷积神经网络作为深入研究图和扩展基本嵌入的一种方式。

  • 01:00:00 在本节中,演讲者解释了图卷积在推荐系统中的工作原理。图卷积为图中的每个节点分配一个随机维度嵌入,这可以解释为为可视化目的分配随机颜色。图卷积背后的直觉是它们混合了这些嵌入,允许将信息从节点的邻居拉到它自己的嵌入中。经过几个步骤的混合,最终所有的节点都会有相同的表示,这就代表了整个图。为了混合节点嵌入,将邻接矩阵与原始嵌入相乘,得到新的嵌入,其中每个节点嵌入表示其邻居加上自身的总和。嵌入需要标准化以确保值不会爆炸。

  • 01:05:00 在本节中,演讲者解释了如何使用图卷积进行节点分类和链接预测。对于节点分类,为每个节点分配一个简单图的嵌入,并应用一个图卷积根据相邻节点创建新的嵌入。然后,应用另一个卷积将嵌入映射到二维以进行分类。对于链接预测,节点嵌入是通过多层图卷积产生的,并且在这些嵌入之上使用矩阵分解模型。然后使用梯度反向传播原始图卷积,以基于更深层次的图结构进行链接预测。

  • 01:10:00 在视频的这一部分,演讲者讨论了图卷积的挑战,这涉及以一种有选择性且不过分包容的方式表示社交图。由于社交图的小世界属性,在每个节点的表示中表示整个图是有问题的,传统的图卷积不能有效地过滤掉不必要的信息。此外,培训必须整批进行,这可能会降低性能。演讲者提出图注意力作为一种更具选择性的方法,但它仍然是一个活跃的研究领域。演讲者还指出,图卷积模型的验证具有挑战性,需要偏离标准的机器学习验证方法。

  • 01:15:00 在本节中,演讲者解释说,传统的训练测试验证方法不适用于推荐系统中使用的混合特征方法,因为保留用户特征或电影特征会导致嵌入丢失。相反,需要转导学习,其中只保留训练集标签,而不保留特征。这种方法在训练嵌入模型时非常重要,因为必须事先知道整个词汇表。但是,对于要用于训练和测试的剩余数据,仍然可以保留随机评级或链接。最后,演讲者指出,节点 ID 标记中的分类仍然可以使用整个图来完成。

  • 01:20:00 在本节中,演讲者讨论了在数据集中对时间和评分进行建模的挑战,其中必须考虑时间戳数据和转导学习。他们解释说没有来自未来的训练数据很重要,测试集应该在训练集的未来。此外,演讲者总结了讲座,强调了使用矩阵分解来解决推荐的抽象任务以及使用图模型和图卷积对推荐进行泛化。本节以以下关于强化学习的讲座的预览结束。
12 Matrix models: Recommender systems, PCA and Graph convolutions
12 Matrix models: Recommender systems, PCA and Graph convolutions
  • 2019.03.15
  • www.youtube.com
slides: https://mlvu.github.io/lectures/62.Matrices.annotated.pdfcourse materials: https://mlvu.github.ioToday we discuss a variety of models that benefit fr...
 

13 强化学习:策略梯度、Q 学习、AlphaGo、AlphaStar (MLVU2019)



13 强化学习:策略梯度、Q 学习、AlphaGo、AlphaStar (MLVU2019)

该视频介绍了强化学习及其基本组成部分,讨论了机器人杆平衡车和井字游戏等示例。演讲者深入探讨了强化学习的挑战,包括不可微函数、延迟接收奖励和信用分配问题。信用分配问题是通过随机搜索、策略梯度和 Q 学习等技术解决的,演讲者在其中解释了每种算法、其优点和局限性。更详细地讨论了 Q 学习算法,并解释了它如何使用一个大的数字表来表示 Q 值。演讲最后解释了深度 Q 学习和 AlphaGo 如何彻底改变了强化学习领域。

  • 00:00:00 在本节中,讲师介绍了强化学习的主题,并解释了它与离线学习的区别。强化学习涉及对与世界交互的代理进行建模,并从收到的反馈中实时学习。以未知环境中的扫地机器人为例来说明这一概念。讲师还提到了三种解决强化学习任务的算法,即随机搜索、策略梯度和Q-learning。然后讨论转向强化学习的最新发展,重点关注 AlphaGo、AlphaZero 以及通过使用 AI 在星际争霸 II 中击败世界顶级人类玩家的持续探索。

  • 00:05:00 在本节中,讲师解释了强化学习的基本框架,其中涉及环境、模型和学习者。该模型采取行动并立即获得奖励并相应地改变其状态,而学习者则动态更新模型。讲师介绍了吸尘器问题、井字游戏和控制问题等简单示例,以说明强化学习的工作原理。在井字游戏和吸尘器问题中,只有当模型达到最终状态时才会给予奖励,而控制问题涉及学习如何在自动化环境中控制机器人或机器。

  • 00:10:00 在本节中,演讲者讨论了机器人平衡车的强化学习,这是该领域的经典控制问题。目标是让汽车保持直立,这是通过简单的物理引擎或物理机器人完成的。该系统使用稀疏奖励,其中唯一的奖励是购物车是否从轨道上掉下来或杆子是否垂直。学习目标是通过尽可能长时间地避免这种惩罚来最大化奖励。演讲者随后展示了遥控直升机的演示,该直升机使用强化学习进行特技训练,从监督学习开始,添加辅助目标和奖励塑造。

  • 00:15:00 在本节中,演讲者讨论了强化学习如何改变深度学习的游戏规则。他指出,在 AlphaGo 之前,研究人员使用 Atari 游戏来获得从像素中学习的算法。他们创建了一个称为深度强化学习的神经网络,使系统能够学习玩许多不同的游戏。这是一个强大的概念,因为研究人员使用深度神经网络来学习从状态到动作的映射,我们称之为策略。强化学习存在三个主要问题:不可微损失、信用分配问题以及探索与开发。

  • 00:20:00 在本节中,演讲者讨论了强化学习的挑战,包括环境中不可微函数的问题以及探索与利用之间的平衡。从环境中接收实际奖励的延迟是另一个问题,因为它需要识别之前的哪些行为对最终结果有贡献。演讲者还举了一个学习驾驶汽车时遇到的挑战的例子,刹车的直接奖励可能会导致与随后发生的撞车事故的错误关联。解决方案需要将奖励分配给之前的行动,并了解哪些行动导致了积极或消极的结果。

  • 00:25:00 在本节中,视频介绍了强化学习中的信用分配问题,其中涉及确定神经网络的权重,以便在与世界互动时最大化奖励。该视频解释了奖励函数、状态转换和策略如何确定神经网络的环境。它介绍了解决此问题的三种方法,从最简单的方法开始——随机搜索。还介绍了基于种群的黑盒优化方法的概念,并以该方法成功应用于名为“Frostbite”的 Atari 游戏为例。

  • 00:30:00 在本节中,讲师讨论强化学习和用于学分分配问题的不同技术。他们建议从随机搜索开始作为基准方法,这对一些简单的游戏很有效。然而,策略梯度和 Q 学习等更复杂的方法在更深层次的强化学习管道中很受欢迎。策略梯度试图根据最后的总奖励为序列中轨迹的每个步骤分配奖励。虽然这似乎违反直觉,但它可以对多个轨迹进行平均,并且适用于部分深度学习管道不可微分的情况。

  • 00:35:00 在本节中,讨论了策略梯度的概念以及如何使用它们通过梯度估计来优化预期的最终奖励。该算法涉及通过对一组轨迹进行采样来估计梯度,通过管道的其余部分跟踪这些动作中的每一个,并将最终奖励乘以样本中每个轨迹的该动作概率的对数梯度。然后可以将梯度的这种估计用于进一步的反向传播。该算法已在 AlphaGo 和 AlphaZero 上使用。

  • 00:40:00 在本节中,演讲者讨论了 Q-learning,这是强化学习中的一种流行算法,用于优化折扣奖励。折扣奖励是策略在不同状态下选择特定动作时将获得的总奖励。 Q-learning 使用递归函数根据策略的动作计算每个状态的折扣奖励。然后根据此计算确定最大化折扣奖励的最优策略。演讲者使用真空吸尘器世界的一个简单示例来演示 Q-learning 的工作原理。

  • 00:45:00 在本节中,演讲者解释了强化学习中最优策略和最优价值函数的概念。最优策略导致特定状态的最大值,而最优价值函数是该策略的价值函数。然而,这些值通常难以计算。演讲者随后介绍了 Q-learning 算法,该算法根据称为 Q 的函数重新定义了最优策略和最优值函数。Q 被定义为立即奖励乘以 Q 的折扣值,该值是由于采取的行动而导致的下一个状态在当前状态下。 Q 的循环定义允许构成 Q 函数并通过填充值询问它是否是最优的。

  • 00:50:00 在本节中,演讲者讨论了通过迭代求解循环方程的方法,以此作为为 Q 学习找到最佳 Q 函数的方法。他通过使用标量函数简化了递归关系,并证明迭代计算可用于找到稳定状态/解决方案。类似地,对于 Q-learning,初始 Q 函数是随机初始化的,然后将递归关系应用为程序,并根据递归关系提供的值更新 Q 函数。 Q 函数的值在每次与遇到状态、动作、奖励或后继状态的环境交互后得到更新,并且每个后继状态的最大值用于更新 Q 函数。

  • 00:55:00 在本节中,将解释 Q 学习算法,它涉及学习一个大的数字表来表示 Q 值。该算法的工作原理是观察每个状态下的即时奖励,并通过重复相同的轨迹将其传播回起始状态。状态空间是通过 epsilon-greedy 探索来探索的,这是一个遵循最佳策略的过程,随机探索状态的概率很小。然后介绍了深度 Q 学习,它涉及实现神经网络来学习 Q 值函数。通过反向传播,网络会根据观察到的即时奖励和后续状态的信息进行更新。最后,在纪录片“AlphaGo”的推荐下,视频的剩余 30 分钟承诺解释 AlphaGo 的工作原理。

  • 01:00:00 在本节中,演讲者解释了围棋游戏并消除了对 AlphaGo 的一些常见误解。虽然围棋游戏确实具有很高的分支因子,但让游戏变得困难的不仅仅是树的大小。深入研究树以找出最佳移动策略也是一个具有挑战性的方面。演讲者还讨论了围棋游戏的旧方法,例如 minimax 算法,该算法用于从当前状态枚举所有可能的未来。

  • 01:05:00 在本节中,演讲者讨论了蒙特卡洛树搜索,这是一种快速有效地探索博弈树以逼近极小极大算法的方法。这种方法涉及进行 rollouts,它随机选择移动并估计强化学习术语中的状态值。演讲者谈到了蒙特卡洛树搜索如何将 rollouts 与保留本地树的记忆相结合,从而在不探索整个事物的情况下构建树的有希望的区域。基本算法涉及扩展节点、执行滚动和反向传播值以更新跟随到叶子的所有节点的概率。这种方法效果很好,不涉及任何机器学习或神经网络。

  • 01:10:00 在本节中,演讲者讨论了 AlphaGo 和 AlphaZero 如何作为强化学习应用于围棋游戏的示例。 AlphaGo 使用两个神经网络,一个策略网络和一个价值网络来下围棋。策略网络将棋盘的状态映射到一个动作,而价值网络将状态映射到从该状态获胜的可能性。他们使用模仿学习通过从人类游戏中学习来训练这些网络,然后使用策略梯度强化学习通过自我对弈来提高。在实际对弈中,AlphaGo 使用带有价值和策略网络的蒙特卡洛树搜索来走棋。 AlphaZero 是一个较新的版本,它不使用任何人类信息,而是完全通过自我对弈来建立对游戏的理解。 AlphaZero 将策略网络和价值网络合并为一个网络,使用蒙特卡洛树搜索作为策略改进算子,并通过批量归一化添加残差连接以提高性能。

  • 01:15:00 在本节中,讨论了“双头怪兽”的概念,其中网络具有一组共享的底层,这些底层从策略和值输出中获取梯度。在训练过程中,MCTS 原则被用作策略改进操作符,这样他们从一个初始策略开始,让它使用 MCTS 与自己对战,并观察作为 MCTS 的结果策略。然后将观察到的改进步骤作为网络的训练目标。此外,残差连接和更好的归一化的组合被用作神经网络的一个技巧,允许逐渐轻松地学习越来越深的神经网络,它工作得很好,特别是与批量归一化相结合。

  • 01:20:00 在本节中,演讲者讨论了权重初始化和数据标准化对于正确训练深度强化学习网络的重要性。演讲者建议初始化权重,使输入标准化为零均值和方差 1,从而在反向传播过程中产生更好的梯度。批归一化是帮助标准化的一个有用层,因为它查看批中的所有实例,计算均值和标准差,并对它们进行标准化。这有助于加快训练速度并训练更深层次的网络;演讲者引用了 AlphaGo 和 AlphaZero 在使用批量归一化进行训练方面的成功。

  • 01:25:00 在本节中,演讲者讨论了 AlphaStar 的开发,AlphaStar 是 DeepMind 将机器学习应用于即时战略游戏的最新突破。与被 DeepMind 的 AlphaGo 认为“解决”的围棋游戏不同,星际争霸由于其多样化的动作空间、不完善的信息和缺少游戏树而对机器学习提出了独特的挑战。 AlphaStar 使用了多种技术组合,包括变压器躯干、深度 LSDM 核心、指针网络和多代理学习。虽然 DeepMind 尚未公布 AlphaStar 工作原理的细节,但其与世界级星际争霸玩家的能力展示令人印象深刻,代表了该领域的当前技术水平。

  • 01:30:00 在本节中,演讲者讨论了 transformers 的使用,它像嵌入一样工作,使神经网络能够开始学习单元之间的关系。这很重要,因为它允许神经网络推理特定单元之间的关系,例如游戏中的导航。然后,演讲者解释了强化学习在顺序采样中的工作原理,以及自回归策略头如何帮助创建更连贯、更高效的动作序列。最后,演讲者解释了多智能体学习的概念以及如何使用它来防止玩家忘记打败简单的策略。

  • 01:35:00 在本节中,演讲者讨论了围绕 AlphaStar 的争议,AlphaStar 是 DeepMind 开发的用于玩星际争霸游戏的人工智能系统。 AlphaStar 成功击败了星际争霸的职业玩家,引发了关于人工智能系统是否真的展示了类人性能或利用人类不具备的能力的争论。 AlphaStar 的主要优势之一是它可以一次看到整个棋盘,不像人类玩家那样必须不断调整摄像机视图。此外,尽管 AlphaStar 的上限为每分钟约 600 次动作,但这些动作的质量高于人类玩家的动作,后者每分钟可以点击多达 800 次,但噪音很大。然而,AlphaStar 的一个弱点是它不能很好地应对游戏过程中遇到的新策略,这是该系统可以提供洞察认知的核心问题。
13 Reinforcement Learning: Policy Gradients, Q Learning, AlphaGo, AlphaStar (MLVU2019)
13 Reinforcement Learning: Policy Gradients, Q Learning, AlphaGo, AlphaStar (MLVU2019)
  • 2019.03.21
  • www.youtube.com
slides: https://mlvu.github.io/lectures/71.Reinforcement%20Learning.annotated.pdfcourse materials: https://mlvu.github.ioToday we discuss the most generic ab...
 

14 评论:归纳偏差、算法偏差、机器学习的社会影响 (MLVU2019)



14 评论:归纳偏差、算法偏差、机器学习的社会影响 (MLVU2019)

视频的第一部分全面回顾了机器学习主题,包括损失函数、深度学习系统、归纳和算法偏差,以及机器学习中的未解决问题。演讲者强调了数据科学过程中方法论和实际用例的重要性,并提供了研究和克服拖延症的技巧。演讲者还讨论了提高对机器学习概念理解的策略,并提供了进一步学习的资源。最后,该视频强调了机器学习模型中的泛化问题以及归纳偏差在提高模型性能方面的重要性。

视频的第二部分讨论了与机器学习相关的几个问题,包括归纳偏差、算法偏差和机器学习的社会影响。可以将归纳偏差构建到神经网络中,以解决因果关系、组合性和泛化问题。然而,这种方法也有局限性,包括对未建模变量的鲁棒性降低。如果机器学习模型强化了数据中的偏差,算法偏差就会长期存在。在面部识别算法无法识别有色人种或美国司法系统中使用的算法对黑人有偏见等情况下,这可能会出现问题。负责任地开发这些系统对于避免永久存在偏见和促进决策过程的公平性非常重要。

  • 00:00:00 在视频的这一部分,演讲者回顾了整个机器学习课程中涵盖的主题,包括机器学习的基本方法,其中涉及标准任务,例如分类或回归、选择实例和特征、选择模型类并搜索适合实例和特征的良好模型。演讲者强调了方法论的重要性,以及将数据分成训练集和测试集以避免过度使用测试集的想法。他强调了牢记真实世界的用例并在数据科学过程中做出反映该用例的决策的重要性。演讲者还提供了考试策略以及对机器学习的现状和未来影响的展望。

  • 00:05:00 在本节中,演讲者从准确性及其局限性开始讨论可用于机器学习的各种损失函数。提出了逻辑回归损失函数,它使用 sigmoid 函数将模型的输出解释为类别概率,然后使用最大似然原理和交叉熵损失优化这些概率。讨论的其他损失函数包括最小二乘法、熵和软间隔 SVM。最后,演讲者介绍了反向传播算法,该算法用于通过将复杂模型分解为模块组合并使用链式法则获得局部导数的乘积来计算复杂模型的梯度。

  • 00:10:00 在视频的这一部分,讲师讨论了深度学习系统的基础知识以及如何使用张量计算平滑可微函数的梯度。他还谈到了隐藏变量模型,并描述了寻找隐藏变量分布的期望最大化算法。然后讲座转到生成器神经网络,这是包含神经网络的隐藏变量模型。讲师讨论了使用生成对抗网络和变分自动编码器通过数据拟合参数。最后,讲座涵盖了决策和回归树模型,以及时序数据和模型,例如递归神经网络和马尔可夫模型。

  • 00:15:00 在本节中,演讲者讨论了机器学习中的归纳和算法偏差,建议训练数据在时间上始终先于测试数据,并且交叉验证应该使用前向交叉验证来完成。演讲者随后谈到了使用用户和电影评级作为唯一数据源的推荐系统,以及这种矩阵模型如何为用户和电影提供非常丰富的信息。最后,演讲者解释说,强化学习需要在探索和利用之间进行权衡,具有 dropout 的卷积神经网络并不构成探索与利用的困境,而是一种在线超参数优化技术。

  • 00:20:00 在本节中,演讲者解释说,当谈论复杂的话题时,概念就像我们头脑中的图形,但在解释它们时,它们就变成了一个序列。为了帮助重建所讨论概念之间的更高层次关系,演讲者创建了搜索和模型的思维导图。模型被分解为神经网络的特定实例,如线性回归、线性分类和逻辑回归,以及更复杂的模型,如 J by Ganz 和 v AE。演讲者还讨论了不同类型的搜索方法,梯度下降是最通用的,随机梯度下降和小批量梯度下降是特定的变体。演讲者指出,小批量梯度下降是大多数时候常用的方法。最后,演讲者讨论了处理数据的不同设置和方式,例如拆分为特征、实例和目标值的基本设置以及按特定顺序处理单独实例的序列设置。

  • 00:25:00 在本节中,演讲者讨论了机器学习中不同类型的数据集和任务,例如序列数据、推荐系统和在线学习。他们还谈到深度学习是一种涉及构建端到端管道的方法,无需进行任何手动特征提取以避免丢失信息。演讲者给出了一些“交易技巧”的提示,并回顾了讲座中讨论的所有抽象任务和模型。最后,讲者提供了备考技巧,包括三类问题:回忆、组合和推理。

  • 00:30:00 在本节中,讲师讨论了学生在即将到来的考试中可能会遇到的三种问题:记忆题、组合题和应用题。他提供了一些技巧来帮助学生应对拖延症,例如认识到拖延症是由完美主义引起的,以及找到开始一项任务的最小可行承诺。讲师还建议创建一个进度条来跟踪进度,避免将工作视为无休止的任务。最后,他提醒学生不要成为完美主义者。

  • 00:35:00 在视频的这一部分,演讲者提供了有关如何克服拖延和提高工作效率的技巧。他建议的一项技术是番茄工作法,它涉及将计时器设置为 25 分钟,并在该时间段内极度专注地工作,然后休息 5 分钟。他还建议将重点放在考试的讲座内容上,并使用练习考试来快速准备即将到来的考试。总的来说,演讲者强调了朝着目标采取可实现的小步骤而不是一下子追求完美的重要性。

  • 00:40:00 在本节中,演讲者分享了提高对机器学习概念理解的策略。他建议快速通过以找出知识差距,然后专注于那些特定领域,而不是通读所有内容。为了帮助完成这个过程,他建议在学习时创建一个关键字列表,以供稍后参考以进行澄清。他还建议学生提出自己的考试问题,以确定重点关注的主题,并建议从多个来源阅读以获得对材料的不同观点。最后,他推荐谷歌机器学习速成课程作为进一步学习的综合资源。

  • 00:45:00 在本节中,主持人讨论了机器学习中的开放性问题,即因果关系、组合性和泛化。因果关系对于现代机器学习方法来说是一个难题,因为相关性并不意味着因果关系。为了确定因果关系,干预是必要的,这可以通过可以进行实验的强化学习设置来完成。但是,如果由于伦理或实际原因无法进行实验,则可以使用背景知识注入模型。演示者还提到绘制小图来模拟世界上可能的原因。

  • 00:50:00 在这一部分中,演讲者谈到了归纳偏差和算法偏差,同时探讨了如何将人类推理整合到机器学习模型中。他们讨论了如何推断因果关系以及如何使用背景知识来推理相关性。他们还讨论了机器学习中的组合性和泛化问题,尤其是在循环神经网络中观察到的问题。演讲者最后指出我们需要了解复合效应以进一步推进机器学习。

  • 00:55:00 在本节中,演讲者讨论了机器学习模型中的泛化问题,以及当对与训练数据略有不同的数据进行测试时,它们往往会分崩离析。解决这个问题的方法在于考虑归纳偏差,它指的是对模型施加的隐式或显式约束,使其偏向模型空间中的某些解决方案。演讲者举例说明了不同类型的模型及其归纳偏差,强调了更强的归纳偏差(例如在卷积神经网络中发现的归纳偏差)如何提高模型的泛化能力。

  • 01:00:00 在本节中,演讲者讨论了归纳偏差的概念,可以将其构建到神经网络中以帮助解决因果关系、组合性和泛化问题。通过向模型中显式注入背景知识和构建组合性,网络可以学习表示数百或数千个数字,即使它只见过最多一百个数字。然而,模型受到的约束越多,它对它没有建模的事物的鲁棒性就越差。此外,演讲者设想机器学习将转向更多的端到端学习系统,机器学习将在整个系统中传播,从而导致所谓的差异编程或“软件 2.0”。

  • 01:05:00 在本节中,演讲者讨论了机器学习成为编程语言原语的潜力,以及这将如何导致更大、更可预测的系统。演讲者还探讨了机器学习对创意艺术(例如设计字体)的影响,并建议机器学习可用于智能增强,其中机器可以增强现有的人类过程,例如创造力和设计。还引入了智能基础设施的概念,作为对杀手机器人发展的担忧的可能解决方案。

  • 01:10:00 在本节中,演讲者讨论了语言生成器的潜在危险,例如 GPT,它有能力生成连贯的语言并大规模生成假新闻。令人担忧的是,这种类型的技术可能会产生重大的社会影响,可能会通过允许个人操纵内容来影响全国的讨论和选举。此外,还讨论了算法偏差问题,因为机器学习模型可以强化它们所训练的数据中的偏差,这在投入生产时可能会产生负面影响。

  • 01:15:00 在本节中,演讲者讨论了算法偏差问题,其中机器学习算法会放大数据中已经存在的偏差,而不是消除它们。这可能会对某些群体造成意想不到的后果和有害影响,例如面部识别算法无法识别有色人种以及 CEO 图片主要为男性的搜索引擎结果。演讲者还强调了监控系统的重要性,并意识到机器学习算法中固有的偏见。

  • 01:20:00 在本节中,演讲者讨论了机器学习系统中的算法偏差问题及其可能产生的社会影响。他解释了一个机器学习系统的案例,该系统用于预测美国司法系统中的累犯,该系统对黑人有偏见,导致不正确的预测并使社会偏见长期存在。他认为,即使这些系统中使用的数据是准确的,依赖机器学习来根据种族做出决策也可能导致种族定性并使系统性偏见长期存在。他引用了荷兰的一个案例,在该案例中,种族貌相被规范化并被公众接受。演讲者提倡以合乎道德的方式使用机器学习,以避免偏见永久化并促进决策过程的公平性。

  • 01:25:00 在本节中,演讲者讨论种族定性问题及其与滥用概率的关系。他们解释了检察官谬误的概念,以及它如何错误地假设给定特定条件的结果概率与给定结果的条件概率相同。演讲者争辩说,即使预测是准确的,也不一定意味着基于这些预测的行动是公正的或道德的。此外,他们指出,种族等某些属性仍然可以推断出来或与其他属性相关联,因此很难从机器学习系统中完全消除种族偏见。最后,演讲者指出,虽然个人应对自己的行为负责,但让他们因与他们有共同特征的其他人的行为而受到惩罚从根本上来说是不公平的,这可能会产生负面影响,例如微攻击或在某些情况下成为不公平的目标像交通站点。

  • 01:30:00 在本节中,演讲者讨论了机器学习的潜在社会影响以及负责任地开发这些系统的必要性。由于机器学习决定了许多决策,因此出现了大规模依赖一个有缺陷的组件的新问题,中国的社会信用体系就是一个例子。政治家和人类对此类系统的开发没有意见,因此需要了解这些问题的计算机科学家、信息科学家和数据科学家负责任地构建和开发这些系统。构建这些系统的责任落在了研究这些领域的学生身上,演讲者祝他们考试和期末项目好运。
14 Review: Inductive Bias, Algorithmic Bias, Social impact of machine learning (MLVU2019)
14 Review: Inductive Bias, Algorithmic Bias, Social impact of machine learning (MLVU2019)
  • 2019.03.21
  • www.youtube.com
slides: https://mlvu.github.io/lectures/72.Review.annotated.pdfcourse materials: http://mlvu.github.ioThe final lecture. A review of everything we've learned...
 

使用 Segment Anything 模型 (SAM) 在 Python 中分割图像和视频 | YOLOv5 | YOLOv8 和 SAM



使用 Segment Anything 模型 (SAM) 在 Python 中分割图像和视频 | YOLOv5 | YOLOv8 和 SAM

该视频介绍了 Segment Anything Model (SAM),这是一种 AI 模型,可以从图像和视频中识别和提取对象以执行各种任务。 SAM 在包含 110 亿张图像和 11 亿个掩码的庞大数据集上进行训练,在各种分割任务中具有强大的性能。该视频提供了在本地系统上使用 SAM 的分步说明,包括如何安装必要的包、下载预训练模型检查点以及使用 Python 对图像和视频执行分割。该视频还演示了如何将 SAM 与 YOLOv5 或 YOLOv8 结合使用,以在感兴趣的对象周围创建边界框。 SAM 在动画中也有潜在的应用。

  • 00:00:00 在本节中,视频介绍了 Segment Anything Model (SAM),这是 Meta 最近发布的 AI 模型,可以从图像和视频中识别和提取对象以执行各种任务。 SAM 在 110 亿张图像和 11 亿张掩码上进行训练,在各种分割任务上具有很强的零样本泛化能力。该视频通过一个演示演示了如何使用 SAM,该演示允许用户上传图像并对完整图像执行分割或单独切割每个对象。用户还可以绘制边界框、添加遮罩和执行多重遮罩。 SAM 在动画中也有潜在的应用。该视频还提供了有关 SAM 架构、数据集可用性和常见问题的更多信息。

  • 00:05:00 在视频的这一部分中,演示者演示了如何使用 Segment Anything Model (SAM) 为图像中的不同对象创建多蒙版。 SAM 已经在 1100 万张图像和 11 亿个掩码的数据集上进行了训练,并且在各种分割任务上具有强大的性能。演示者展示了如何选择图像、对完整图像运行分割,然后切出单独的对象。演示者还展示了如何在对象周围绘制边界框,以及如何下载和分发生成的数据。该视频最后提供了有关安装 SAM 和在 Python 中使用它的信息,包括 YOLOv5 和 YOLOv8。

  • 00:10:00 在视频的这一部分,演示者解释了在本地系统上运行 Segment Anything 模型的要求,包括拥有 GPU 和安装必要的软件包,例如支持 CUDA 的 Torch 和 Dodge Vision。他们演示了如何克隆 Segment Anything 模型存储库并使用 pip 安装所有必需的依赖项。该视频还介绍了如何将分段模型转换为 ONNX 格式,以及如何为三种不同的主干网大小下载预训练模型检查点。然后演示者展示了如何使用该模型对图像和视频进行分割。该视频还包括每项任务的详细分步说明,使观众可以轻松跟进。

  • 00:15:00 在这部分视频中,演示者首先导入所有必需的库,包括 Matplotlib,以在 Google 应用程序笔记本中显示输入和输出图像。然后,他们从他们的驱动器下载样本图像,并展示多人在建筑物背景中行走的示例图像。接下来,他们将带有破折号边缘的预训练模型检查点加载到 Google 应用程序笔记本上,并将 segment anything 模型自动掩码生成器应用于图像以对其进行分割。演示者在图像的每一侧提供点,SMAM 使用这些点来扫描图像并根据提供的点对其进行分割。设置 0.9 的预测 IOT 阈值以提高分割的准确性。

  • 00:20:00 在视频的这一部分,演示者演示了如何使用 Segment Anything Model (SAM) 使用 Python 对图像和视频执行对象分割。他们演示了如何调整 IU 计划以提高准确性并减少输出中的垃圾数量。他们将分割模型应用于样本图像,并展示它如何准确地分割人、建筑物和树木。然后,他们使用相同的模型通过安装元分割包并从 Google 云端硬盘下载示例视频来分割示例视频。然后演示者从 GitHub 存储库复制代码并将其应用于视频,从而有效地在视频上实施 SAM。

  • 00:25:00 在本节中,演讲者讨论了 Segment Anything Model (SAM) 存储库,其中包含三个具有不同骨干大小的不同模型,使用户能够定义模型名称并调用他们想要实现的视频。然后,演讲者使用现有包和示例图像运行将 SAM 与 YOLOv5 或 YOLOv8 集成所需的代码。演讲者演示了如何使用 SAM 对建筑物、树木和汽车进行分割,并使用颜色代码对输出进行降噪。演讲者还讨论了不同的分割模型版本,表明每个模型都有不同的骨干大小。该演示突出了最小的 YOLOv8 Nano 模型的准确性和速度。

  • 00:30:00 在本节中,演讲者展示了他们如何将 Segment Anything Model (SAM) 与 YOLOv8 结合使用来执行分割并在感兴趣的对象周围创建边界框。他们通过展示围绕人的边界框并对其图像进行分割来展示模型的能力。演讲者通过强调 YOLOv8 与 SAM 的集成并向观众说再见来结束视频教程。
Segment Images & Videos in Python using Segment Anything Model (SAM) | YOLOv5 | YOLOv8 and SAM
Segment Images & Videos in Python using Segment Anything Model (SAM) | YOLOv5 | YOLOv8 and SAM
  • 2023.04.13
  • www.youtube.com
#SAM #segmentation #computervision #yolo #yolov8 #python #pytorch Segment Images & Videos in Python using Segment Anything Model (SAM) | YOLOv5 | YOLOv8 and ...
 

YOLOv8 课程 - 使用 YOLOv8 和 Flask 的实时对象检测 Web 应用程序 - 网络摄像头/IP 摄像机


YOLOv8 课程 - 使用 YOLOv8 和 Flask 的实时对象检测 Web 应用程序 - 网络摄像头/IP 摄像机

YOLOv8 课程是一系列教程,指导观众使用 YOLOv8 和 Flask 创建实时对象检测 Web 应用程序。这些教程包括安装必要的软件(如 Python 和 PyCharm)、创建虚拟环境、安装包以及测试图像和网络摄像头上的对象检测。这些教程还包括将输出从张量转换为整数、标记检测到的对象以及保存带有检测的输出视频。向观众展示了如何将 YOLOv8 与 Flask 集成,以及如何在视频和实时网络摄像头源上运行实时对象检测 Web 应用程序。

在视频的第二部分,演示者演示了如何使用 Flask 和 YOLOv8 创建 Web 应用程序以在实时网络摄像头源和视频中进行对象检测,此外还展示了用于个人防护设备检测的自定义模型的训练和推理。该 Web 应用程序有一个主页、一个视频页面和一个实时网络摄像头提要页面,每个页面都有 CSS 样式,演示者浏览了用于该项目的 HTML 和 Flask 文件。该视频演示了导入数据集、准备训练 YOLOv8 模型、训练模型、分析结果以及在演示视频上测试模型的过程。总体而言,该视频为开发和测试实时对象检测 Web 应用程序提供了全面的教程。

演示者还讨论了对使用在个人防护装备 (PPE) 数据集上训练的 YOLOv8 模型的 Web 应用程序所做的更改。更改包括修改代码以根据类名称为边界框和标签矩形分配不同的颜色,并将显示边界框和矩形的置信度分数设置为 0.5 以上。演示者在视频和实时网络摄像头中演示了成功检测 PPE 物品,标志着课程的结束。

  • 00:00:00 下一步是下载并安装 Python 和 PyCharm Community Edition。不推荐使用最新版本的 Python,因为它可能有错误和漏洞修复。我们可以下载推荐的最新发布的Python 3.8版本。 PyCharm Professional 版本提供 30 天的免费试用期,但 Community Edition 足以完成教程。下载并安装必要的软件后,我们可以创建一个任意名称的空文件夹,然后在 PyCharm 中打开它以启动项目。

  • 00:05:00 在YOLOv8速成课程的这一部分,讲师演示了如何在Pycharm中创建一个新的虚拟环境,并为项目安装必要的包。讲师展示了如何创建新项目、选择基本解释器以及通过包管理器窗口安装包。他们还展示了如何创建一个 requirements.txt 文件来写下你想从命令行安装的所有包。该视频强调了安装用于使用 YOLOv8 进行对象检测的 ultralytics 包的重要性。

  • 00:10:00 在本节中,讲师展示了如何安装 YOLOv8,这是 YOLO 的唯一版本,它有自己的包。使用pip install ultralytics,可以安装YOLOv8,如果需要对检测或训练脚本做任何改动,可以克隆仓库。然后,教师通过导入包和 YOLOv8 模型,指定预训练的权重文件,并传入输入图像路径,使用 YOLOv8 检测图像中的对象。结果显示图像中检测到的对象。

  • 00:15:00 在本节中,视频演示了如何通过将新图像添加到图像文件夹并运行 YOLO 测试脚本来测试 YOLOv8 模型。在导入 cv2 库并添加延迟后,该模型产生了相当令人印象深刻的准确检测摩托车和汽车的结果。该视频还解决了使用不同 YOLO 模型时准确性与速度的问题,并建议使用 YOLOv8x 模型以获得更准确的结果。然后视频继续使用新目录在网络摄像头上测试 YOLOv8 模型。

  • 00:20:00 在视频的这一部分,演示者创建了一个名为“YOLOv8_webcam.py”的新文件。他们导入 YOLOv8、CB2 和数学,并将“cap”设置为等于“CV2.videoCapture(0)”,这将允许他们在网络摄像头上运行 YOLOv8。他们分别通过调用“cap.get(5)”和“cap.get(4)”来计算帧速率和高度。他们解释说他们想保存带有检测的输出视频,因此他们使用 CB2.VideoWriter() 将输出文件名设置为“output.avi”。他们将帧率和高度传递给函数,然后将“modern”设置为等于“YOLOv8”。然后演示者通过在他们的图像上调用“CV2.imshow('image', image)”和“CV2.waitKey(1)”来测试他们的网络摄像头是否工作正常。

  • 00:25:00 在 YOLOv8 课程的这一部分,演示者测试网络摄像头并检查输出视频是否正确保存。然后,他继续使用 YOLOv8 模型对实时网络提要运行检测,并将结果保存在名为“results”的变量中。该代码查看每个单独的边界框以查看性能。每个边界框都有四个坐标 - X1、Y1、X2 和 Y2,它们从张量转换为整数形式,用于进一步处理和创建检测对象周围的边界框。

  • 00:30:00 在视频的这一部分,演示者介绍了如何将输出从张量转换为整数,以及如何使用 cv2.rectangle 在每个检测到的对象周围创建一个矩形。边界框的颜色和厚度与每个检测到的对象的起点和终点一起定义。应用程序的输出显示边界框在检测到的对象周围绘制得非常好。但是,演示者提到需要为每个检测到的对象显示标签和置信度分数。置信度分数目前以张量的形式显示,但演示者计划使用 mat.c 将其转换为整数。

  • 00:35:00 在视频教程的这一部分中,讲师向观众展示了如何为检测到的对象添加置信度分数,将它们转换为整数,并根据它们的类 ID 对其进行标记。类 ID 由对象的类型决定,0 是人,1 是自行车,2 是汽车。讲师还演示了如何在标签周围创建一个矩形并将输出检测保存到名为 output.avi 的文件中。观众可以一帧一帧地看到实时检测,教师会向他们展示如何通过单击屏幕来停止该过程。教师还显示输出视频文件并确认结果符合预期。最后,导师宣布,在下一个教程中,他们将在 Windows 上运行 YOLOv8 并分享结果。

  • 00:40:00 在 YOLOv8 课程的这一部分中,创建者演示了如何使用 YOLOv8 预训练权重对示例视频执行对象检测。目标是检测自行车和人,它们是 COCO 数据集的一部分。创建者展示了如何运行脚本并将文件夹重定向到指定的视频文件夹,然后成功检测到自行车、人和其他物体,如红绿灯。然后,创建者演示带有检测的输出视频保存在选定的文件夹中,显示带有标签和置信度分数的检测对象周围的边界框。创建函数视频检测以包含所有代码,并创建一个名为 last app dot Pi 的文件。

  • 00:45:00 在视频的这一部分,演讲者讨论了将 YOLOv8 与 Flask 集成以创建实时对象检测 Web 应用程序所需的步骤。第一步是安装 Flask,这是使用 pip install 完成的。接下来,演讲者导入必要的库并初始化 Flask。然后,他们创建了一个名为 generate frame 的函数,该函数接受输入视频文件路径并生成带有检测到的对象周围边界框的输出。最后,演讲者讨论了将图像编码为字节并使用删除键盘将单个帧转换为视频。最终结果是在检测到的对象、标签和置信度分数周围带有边界框的单个帧。

  • 00:50:00 在本节中,视频创作者解释了如何将 YOLOv8 与 Flask 集成以创建实时对象检测 Web 应用程序。该视频演示了对帧进行编码并将图像转换为字节,然后在各个帧上循环以进行检测和后续帧显示。该视频展示了使用方法类型替换视觉帧,而内容类型用于显示后续帧。该视频包括一个演示,其中视频文件作为检测的输入传递,从而在检测到的对象周围产生边界框;在这种情况下,人、自行车和交通灯。该视频最后指出下一个教程将介绍实时网络摄像头源的检测,从而创建 Fly Fast API。

  • 00:55:00 在本节中,演示者演示了如何在实时网络摄像头源上运行 YOLOv8 实时对象检测 Web 应用程序。通过在脚本中将视频路径更改为 0,程序可以在实时网络摄像头源上运行。一个新的 URL 被创建并链接到 Flask 应用程序,允许对实时网络摄像头进行实时对象检测。演示者表示,该程序可以准确地检测实时馈送中的人、自行车和红绿灯等物体。此外,视频路径改回视频 URL,并且该程序还展示了其检测视频中对象的能力。

  • 01:00:00 在本节中,视频教程着重于使用 HTML 和 CSS 进行前端设计,使用 Flask 进行后端设计来创建一个完整的 HTML 网页。该 Web 应用程序由三个不同的页面组成:主页、视频页面和实时网络摄像头源页面。主页具有页眉、内容和页脚,其中包含来自不同项目的示例结果。视频页面允许用户上传视频并对该视频运行 YOLOv8 检测。实时网络摄像头提要页面使用户能够对实时网络摄像头提要进行检测。该视频还展示了 Flask 应用程序点堆文件和三个 HTML 页面。

  • 01:05:00 在本节中,视频教程解释了如何让用户使用 Flask 形式将视频文件上传到对象检测模型。本教程使用验证器来确保用户以正确的格式(MP4 或 .avi)上传视频文件。上传的视频文件的文件路径以类的形式存储在file变量中。本教程还介绍了用于检测输入视频文件中的对象的生成帧函数。输入的视频文件保存在静态文件文件夹中,用户可以通过点击提交按钮提交视频文件进行检测。

  • 01:10:00 在YOLOv8课程的这一部分,重点是我们在YOLO Dash视频文件中的检测功能。视频缩减功能为我们提供了方向和对象检测,在检测到的对象周围有输出边界框,带有标签和置信度分数。然后根据 Flask 的输入图像或帧的要求,将当前帧转换为字节。当我们想要访问或重定向到应用程序上的网络摄像头时,将调用生成框架网络函数,会话点清除从会话存储中删除输入视频文件,允许检测新视频或输入文件,而不是以前的那些。创建上传文件表单实例,视频文件路径保存在会话存储变量中。会话存储随后被清除,以确保检测发生在新视频上,防止应用程序检测到以前的视频或输入文件。

  • 01:15:00 在本节中,演讲者解释了 YOLOv8 课程中使用 Flask 和网络摄像头/IP 摄像机进行实时对象检测的代码和 HTML 文件。演讲者演示了他们如何将视频部分保存在会话存储中,并调用视频路径在视频中进行检测。他们还展示了该项目的 Flask app dot Pi 文件。 HTML 文件由语言、页面标题、正文和标题及其属性组成,例如背景颜色、字体系列、文本颜色、高度和其他元素。此外,演讲者还解释了边界半径在创建圆角矩形形状时的用途。

  • 01:20:00 在本节中,演讲者将演示他们构建的 Web 应用程序的主要页面。他们首先显示 Dash 首页 URL,将用户引导至视频源页面,他们可以在该页面上传视频并进行对象检测。然后他们显示 UI.html 页面,其中检测发生在实时网络摄像头源上。他们还演示了示例结果页面,显示了他们保存并传递给 HTML 的三张图像。最后,他们显示页脚,点击后会将用户重定向到他们的 YouTube 频道。在整个演示过程中,演讲者展示了他们为每个页面使用的 CSS 样式。

  • 01:25:00 在本节中,演讲者使用实时网络摄像头源和视频演示了使用 YOLOv8 和 Flask 的实时对象检测 Web 应用程序。将 CSS 样式添加到网页,演讲者运行 Python 类 cap 文件对视频和实时网络摄像头进行检测。用户也可以输入视频文件来进行检测。结果令人印象深刻,因为 YOLOv8 模型能够检测人、自行车、交通信号灯等物体,并使用标签和置信度分数创建边界框。演讲者最后证明,对实时网络摄像头的检测也能准确工作。

  • 01:30:00 在视频的这一部分,演示者展示了一个 Flask 网络应用程序,它可以使用 YOLOv8 检测视频和实时网络摄像头中的对象。该应用程序有一个主页、一个能够对任何输入视频执行检测的视频页面,以及一个实时网络摄像头源页面。然后,演示者继续演示如何使用 Roboflow 上可用的数据集将 YOLOv8 用于个人防护设备 (PPE) 检测,该数据集包含 7 个不同类别的 3235 张图像。演示者相应地重命名类以反映 YOLOv8 检测到的实际对象,然后演示者显示数据集统计信息,其中包括不平衡的类分布。用于数据集的拆分比率为 70-20-10。最后,演示者演示了如何将 YOLOv8 模型导入到 Collab 笔记本中。

  • 01:35:00 在YOLOv8课程的这一部分中,讲师解释了如何导入所需的库并检查对GPU的访问。操作系统库用于导航到不同的文件,图像库用于在 Google Colab 笔记本中显示输入/输出图像。然后从 Roboflow 导入 PPE 数据检测数据集并下载到新创建的“数据集”文件夹中。使用 pip install ultralytics 安装 YOLOv8 模型,然后使用 import ultralytics 检查其功能以进行安装和运行。

  • 01:40:00 在视频的这一部分中,演示者展示了如何下载和准备用于训练 YOLOv8 模型的 PPE 检测数据集。数据集包含测试集和验证集,以及包含每个对象类名的 data.yml 文件。下载并重命名文件夹后,演示者使用命令行界面在本地实现模型的训练、验证和测试。训练大约需要三个小时才能完成,演示者会展示训练结果,包括最佳权重文件和第 90 个最后的权重。该模型在七种不同类别的 PPE 对象上进行了训练。

  • 01:45:00 本节分析YOLOv8模型训练的结果,包括每个类的平均精度和混淆矩阵。还检查了训练和验证损失,损失值在整个训练过程中不断下降。还显示了验证批次的模型预测,表明该模型运行良好。该模型的最佳权重用于验证自定义订单,平均精度分数保持很高。最后,对图像运行推理以使用自定义模型检测标签。总的来说,YOLOv8 模型似乎在实时目标检测中检测各种类别方面表现良好。

  • 01:50:00 在本节中,视频创作者演示了如何在图像测试数据集和演示视频上运行 YOLOv8 模型。测试数据集结果保存在“预测”文件中,创建者使用“ipython.display”包显示前五张图像的输出。结果表明,该模型可以正确检测防护板、夹克、手套、防尘口罩、防护服、头盔等物体。然后,创建者下载了一个演示视频并将其传递给模型,显示的输出表明该模型能够检测到防护夹克和女仆。视频创作者还提到了使用 GPU 进行训练和预测的优势,因为它花费的时间更少。

  • 01:55:00 在本节中,演示者在演示视频上测试了 YOLOv8 模型,以了解其性能。该模型能够检测到防护头盔和夹克,但不能检测到手套。演示者下载输出演示视频并展示模型如何在每个视频上执行。该模型能够在所有测试的演示视频中检测到保护性女仆和夹克。然后,演示者下载个人防护设备上经过训练的模型的最佳权重文件,并讨论如何将其与 Flask 集成以用于实时对象检测 Web 应用程序。

  • 02:00:00 在本节中,演示者讨论了对使用在个人防护装备 (PPE) 数据集上训练的 Yellow V8 模型的 Web 应用程序代码所做的更改。 PPE 数据集有七个不同的类别,并列出了它们的名称。最佳权重文件已重命名为来自 Coco 数据集的 ppe.pt,它由 80 个不同的类组成。演示者添加了一个功能,可以根据类名称为边界框和标签矩形分配不同的颜色。演示者为置信度分数设置了一个限制,并提到边界框和矩形只有在分数高于 0.5 时才会出现。 Flask app.py 和 HTML 文件保持不变。最后,演示者展示了 PPE 数据集和网络摄像头的视频检测结果。该应用程序能够成功检测到视频中的 PPE 物品。

  • 02:05:00 在本节中,演示者使用实时网络摄像头实时演示 YOLOv8 模型的成功检测能力。该模型能够准确检测到佩戴防护头盔和防尘面罩的人,同时忽略了没有手套和防护罩的情况。结果被认为是令人满意的,并标志着课程的结束。
YOLOv8 Course - Real Time Object Detection Web Application using YOLOv8 and Flask - Webcam/IP Camera
YOLOv8 Course - Real Time Object Detection Web Application using YOLOv8 and Flask - Webcam/IP Camera
  • 2023.04.07
  • www.youtube.com
#objectdetection #yolov8 #yolo #computervision #opencv #flask #webapplicationdevelopment #computervision YOLOv8 Crash Course - Real Time Object Detection Web...
 

使用 YOLOv8 和 DeepSORT 进行实时对象跟踪 |车辆计数(车辆进出)



使用 YOLOv8 和 DeepSORT 进行实时对象跟踪 |车辆计数(车辆进出)

该视频演示了使用 YOLOv8 和 DeepSORT 实现实时对象跟踪以计算进出高速公路的车辆数量。演示者提供了分步指南,从克隆 GitHub 存储库、安装所需的包、设置目录和检查跟踪脚本开始。本教程涵盖了使用双端队列、预处理、非最大回归和 Deep SORT 函数来生成唯一 ID 和确定类名。演示者还解释了如何通过在屏幕上使用一条线来添加车辆计数功能,每当车辆的轨迹与这条线相交时,计数就会增加。 UI 是使用特定函数设置的。最后,演示者展示了脚本的当前输出如何检测与线的交叉点并计算进入和离开该区域的车辆。

  • 00:00:00 视频部分展示了在 YOLO V8 中使用深度排序实现对象跟踪的演示。本教程将介绍如何创建一个应用程序来计算进入和离开高速公路的车辆数量。演示者提供了使用 PyCharm IDE 的分步指南,并详细解释了每个步骤。第一步是克隆 GitHub 存储库并安装所需的包。该视频还包括有关设置目录和检查跟踪脚本的部分。

  • 00:05:00 在视频的这一部分,演讲者解释了如何设置跟踪点文件以及如何从 Google Drive 下载 DeepSORT 文件并将其放入 YOLOv8 文件夹中。 DeepSORT 文件太大,无法上传到 GitHub,因此必须从提供的 Google Drive 链接下载。该视频演示了如何提取下载的文件并将它们放在适当的文件夹中。演讲者还展示了如何下载示例视频和运行脚本。该脚本可能需要一些时间才能运行,因为他们正在 CPU 上对其进行测试,但演讲者会在脚本运行时继续更详细地解释代码。

  • 00:10:00 在本节中,演讲者解释了双端队列 (DQ) 的使用,以及为什么在同时执行插入或弹出操作时它优于列表。演讲者使用 DQ 以边界框底部中心坐标的形式附加值,并解释了一旦汽车从框架中消失后如何删除这些值。 DQ 的最大长度定义为 64,一旦达到该值,就不再接受更多值。演讲者还定义了调色板和 UI,以在检测到的对象周围创建时尚的边框。

  • 00:15:00 在本节中,视频分解了用于创建带有圆角矩形和文本标签的用户界面 (UI) 的代码,以及程序如何将检测到的对象附加到双端队列以生成小径。该代码还包括预处理和非最大回归以调整帧大小和执行检测。调用 Deep SORT 函数来分配唯一 ID 并确定类名,而 set.modern.names 有助于从 COCO 数据集中检索信息并生成边界框。

  • 00:20:00 在本节中,演讲者解释了他们使用 YOLOv8 和 DeepSORT 进行对象检测的代码,概述了脚本及其工作原理。他们演示了脚本的当前输出,并指出他们使用的是纳米模型,因此对象检测尚不完善。演讲者还提到他们将为 Europa 创建一系列计算机视觉讲座,并鼓励观众订阅更多内容。最后,他们展示了他们的脚本如何检测轨迹何时与直线相交,指示物体何时通过并允许实施车辆进出计数。

  • 00:25:00 在本节中,演示者解释了如何使用 YOLOv8 和 DeepSORT 将车辆计数功能添加到实时目标跟踪系统中。该系统在屏幕上使用一条线,每当车辆的轨迹与这条线相交时,计数就会增加。根据车辆的移动方向,计数可以增加车辆是进入还是离开该区域。演示者还展示了如何通过特定功能设置 UI。
Real-Time Object Tracking using YOLOv8 and DeepSORT | Vehicles Counting (Vehicles Entering& Leaving)
Real-Time Object Tracking using YOLOv8 and DeepSORT | Vehicles Counting (Vehicles Entering& Leaving)
  • 2023.01.11
  • www.youtube.com
#yolo #yolov8 #objectdetection #objectracking #opencvpython #opencv #computervision #machinelearning #artificialintelligence #deepsort #multiobjecttracking#...
 

使用 YOLOv8 进行实时对象分割和跟踪 |车辆计数(进出)



使用 YOLOv8 进行实时对象分割和跟踪 |车辆计数(进出)

本视频教程重点介绍使用 YOLOv8 和深度排序算法实现实时对象分割和跟踪。具体来说,它演示了如何计算和区分进入和离开给定区域的不同子类型的车辆。该教程涵盖了各个方面,包括速度估计、方向测量以及使用 ID 和轨迹对每辆车进行精确分割和跟踪。演示者还提供了在各种 IDE 上实现此功能的必要步骤,并为其 Patreon 支持者提供了最终代码。

  • 00:00:00 在视频的这一部分,演示者解释了如何使用 YOLOv8 和深度排序算法实现对象分割和跟踪。该视频演示了车辆分割和跟踪,包括统计进出车辆的数量,以及车辆的类型。该实施还包括计算车辆速度、为每辆车分配唯一 ID,以及定义路径。演示者提供了在各种 IDE 上实现此功能的必要步骤,包括 Anaconda Navigator、PyCharm、Spider 和 Visual Studio。需要安装所需的依赖项,例如库,以避免在运行 predict.5 脚本时出现任何错误。

  • 00:05:00 在本节中,视频教程重点介绍使用 YOLOv8 和深度排序实现分割和跟踪。 Deep sort 文件是从 Google Drive 下载的,并使用示例视频进行测试。修改脚本实现进出车辆计数,字典用于按子类型存储车辆计数。对象计数器一用于存储按子类型离开的车辆数,而检查计数器字典用于存储进入的车辆数。修改后的脚本根据车辆的子类型以及它们是进入还是离开框架来跟踪和计数车辆。

  • 00:10:00 在本节中,视频讨论了如何使用 YOLOv8 创建一个车辆计数系统,该系统带有一个对象计数器,可以区分进出给定区域的车辆子类型,例如汽车、大卡车和摩托车。该视频解释了速度估计功能的使用,以及如何创建一条线,当车辆经过时,该线会增加计数器。此外,视频定义了常量 PPM 或图片参数,这有助于测量图像中的像素数。

  • 00:15:00 在本节中,演讲者讨论了基于物体与相机之间距离的动态距离测量的概念。他们解释说,这可以使用一个公式来实现,该公式涉及以米为单位的距离等于距离像素除以 PPM(每米像素)乘以常数 3.6 除以每秒帧速率。然后演讲者继续编写一个函数来计算角度并根据距离和时间返回速度。他们还创建了另外两个函数 - set_d 和 CCW - 并编写了一个 get_direction 函数来计算基于 y 轴的对象的方向。
     
  • 00:20:00 在视频的这一部分,演示者回顾了他们使用 YOLOv8 进行实时对象分割和跟踪的代码。他们对脚本进行修改,包括添加方向结构和计算剩余代码。演示者还讨论了如何计算对象速度并将其附加到 ID 列表中。然后他们复制并粘贴交集代码并继续进行调整以修复代码中的错误。

  • 00:25:00 在这段视频中,演示者添加了一个计数器代码来计算进出车辆的数量。计数器代码显示车辆总数和子计数,其中包括进入的汽车、卡车和摩托车的数量。演示者还建议添加一个显示退出车辆的数量。 draw boxes 函数中发生错误,演示者通过声明一个全局变量来进行计数和倒计时来修复它。脚本成功运行,输出的演示视频显示了每辆车的速度估计和车辆总数以及进入的每种类型车辆的子计数。

  • 00:30:00 在本节中,演讲者讨论了他们使用 YOLOv8 进行车辆计数的实时对象分割和跟踪的结果。他们取得了精确的结果,甚至能够估计每辆车的速度,以及跟踪 ID 和轨迹。而且每辆车的检测和分割都已经很准确了,还提到了车辆的总数。他们已将此代码专门提供给他们的 Patreon 支持者,他们将可以访问他们共享的所有代码和项目。最后,他们邀请观众测试演示视频、在他们的网站上实施代码或加入他们的 Patreon 会员。
Real-Time Object Segmentation and Tracking using YOLOv8 | Vehicles Counting (Entering and Leaving)
Real-Time Object Segmentation and Tracking using YOLOv8 | Vehicles Counting (Entering and Leaving)
  • 2023.01.29
  • www.youtube.com
#yolo #yolov8 #objectdetection #objectsegmentation #objecttracking #computervision #machinelearning #artificialintelligence Real-Time Object Segmentation and...