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

 

用于深度学习研究的 Tensorflow - 第 1 讲



用于深度学习研究的 Tensorflow - 第 1 讲

视频“用于深度学习研究的 Tensorflow - 第 1 讲”介绍了 TensorFlow 教程,涵盖了深度教程的需要,解释了库的基础知识和实际应用。该讲座涵盖了如何从深度学习的角度使用 TensorFlow 构建和构建模型。本教程还介绍了 TensorBoard 中用于可视化计算图模型的工具,包括如何使用节点、边和会话进行操作,这些工具通过运行子图提供高效的计算选项。讲师推荐从零开始学习TensorFlow,构建自定义模型和高效处理资源,具备在CPU、GPU、Android或iOS上运行的能力,同时提供部署模型的能力。

  • 00:00:00 在本节中,演讲者介绍了 TensorFlow 教程,解释说需要不太浅的视频教程并解决其他教程遗漏的要点。他宣布讲座将遵循斯坦福大学 CS 20 的内容,并使用 Chip Huyen 制作的幻灯片,其中包含他的个人想法。此外,他指出,TensorFlow 是谷歌开发的数值计算库,可以进行图形和数值计算,适合构建从逻辑回归到深度学习模型的各种机器学习模型。 TensorFlow 还提供了在 CPU、GPU、android 或 iOS 上部署模型的能力。

  • 00:05:00 在本节中,演讲者讨论了检查点的概念 - 保存的模型状态,可以在出现中断的情况下从同一点继续。强调了深度学习框架中差异化的重要性,演讲者建议尝试手动编写反向传播层以了解 Tensorflow 为流程带来的便利。 Tensorflow 的流行归功于它被一个庞大的社区使用,图像风格迁移、手写体生成和 StackGANs 等各种项目都被讨论。本讲座旨在从深度学习的角度涵盖 Tensorflow 的计算图模型、构建函数和结构化模型。最后,演讲者建议使用 Tensorflow 网站作为最新 API 和库的来源。

  • 00:10:00 在本节中,演讲者讨论了从头开始学习 TensorFlow 的重要性。虽然高级抽象可以处理更复杂的任务,但了解代码背后的工作原理对于创建自定义模型至关重要。演讲者解释说,TensorFlow 将计算的定义与其执行分开,组装计算图并使用会话来执行操作。本节介绍如何在 TensorFlow 中定义操作来创建可以使用内置工具 TensorBoard 进行可视化的图形。使用的示例代码显示了运算符和张量的节点,其中边缘值表示张量值。

  • 00:15:00 在本节中,讲师讨论了 TensorFlow 图中的节点和边,以及使用会话在图中运行计算。节点可以是运算符、变量或常量,而边是张量。会话用于实例化图形和运行计算,会话负责必要的资源。使用会话运行图中的特定节点将计算该图并返回节点的值,讲师通过使用加法的示例对此进行了演示。会话对象封装了运算符和张量对象在其中执行的资源环境。讲师还提到使用“with”语句作为明确关闭会话的替代方法。
     
  • 00:20:00 在本节中,视频解释了 Tensorflow 中惰性求值的概念。它指出,当在 Tensorflow 中创建图形时,它不会预先计算或缓存在某处,而是在需要时懒惰地进行计算。惰性求值的强大之处在于并不是所有的东西都需要计算,所以当我们深入研究模型时,它可以节省大量的计算。当调用会话 dot run 方法时,第一个参数是 fetches 列表中需要计算的节点列表,Tensorflow 计算所有这些不同的节点并将结果作为列表返回。

  • 00:25:00 在本节中,讲师讨论了在 TensorFlow 中将计算建模为图形的好处,包括跨多个 CPU 或 GPU 并行运行子图的能力。他们解释了如何使用命令 TF device GPU 指定要在特定 GPU 上运行的特定图,以及如何在 TensorFlow 中创建多个图,这在集成学习等不同模型并行运行的情况下可能很有用。讲师还指出,TensorFlow 中的会话在资源使用方面可能很贪婪,因此在使用多个图时可能需要谨慎管理资源。

  • 00:30:00 在本节中,讲师讨论如何在 TensorFlow 中创建和操作图形。他们解释说可以创建多个会话,但在它们之间传递数据可能很复杂。为简单起见,建议只使用一个会话。要向图形添加节点,使用 TF dot Graph API,其中实例化的图形可以设置为默认值。当会话被实例化时,图形可以作为参数传递,整个执行环境围绕它创建。避免混合两个图很重要,要获取默认图的句柄,请使用 API TF dot get underscore default。

  • 00:35:00 在本节中,演讲者讨论了在 TensorFlow 中使用图形的优势。好处之一是能够运行子图甚至单个运算,而不必运行整个图,从而使计算更加高效。 TensorFlow 还具有分布式模式,当使用子图描述计算时,允许跨不同设备和机器运行计算。本节的要点是在会话中设置计算图和运行子图的重要性。
Tensorflow for Deep Learning Research - Lecture 1
Tensorflow for Deep Learning Research - Lecture 1
  • 2017.01.29
  • www.youtube.com
These series of tutorials on tensorflow are based on the publicly available slides from the Stanford University class - CS20SI -being offered in the winter o...
 

用于深度学习研究的 Tensorflow - 第 2 讲



用于深度学习研究的 Tensorflow - 第 2 讲

TensorFlow for Deep Learning Research 讲座涵盖了广泛的主题,包括基本操作、张量类型、占位符和延迟加载。强调了利用 TensorBoard 可视化正在运行的图形的重要性,并讨论了 TensorFlow API 的各种函数,包括随机洗牌、随机裁剪、TF.dot 多项式和随机伽玛函数。该视频还涵盖了为不同数据类型定义 0-ness 的概念、初始化变量、为其赋值,以及使用 TensorFlow 交互式会话的好处。最后,详细介绍了 TensorFlow 中占位符的使用,并讨论了使用具有未定义形状的占位符时的潜在问题。

演讲者还讨论了 TensorFlow 中占位符的使用,包括如何提供多个数据点和使用免费字典。然后讲座转到延迟加载,其中计算被推迟到运行时,以避免由循环中相同操作的多个节点引起的图形膨胀。将操作对象的定义与变量定义和计算函数的计算和结构化代码分开,有助于避免在 TensorFlow 中调用函数时出现问题。演讲者还介绍了优化器如何在使用属性有效构建 TensorFlow 代码的同时最小化交叉熵并更新权重和偏差。

  • 00:00:00 在讲座的这一部分中,讲师涵盖了基本操作、张量类型、占位符和延迟加载。他们演示了如何使用 TensorBoard 以及使用 TensorBoard 可视化的简单图形程序来可视化 TF 图。该过程涉及将 TF 表摘要文件写入器添加到会话上下文,提供写入事件的位置,指定要写入的内容,然后在完成后关闭写入器。他们还展示了如何通过添加名称参数使图形更具可读性。

  • 00:05:00 在本节中,演讲者强调了利用 TensorBoard 可视化正在运行的图形的重要性,这是 TensorFlow 中的一项自动功能,在其他框架中并不容易使用。然后,讲座深入研究了 TF.constant 函数的签名,以及如何指定或推断其值、形状和数据类型。此外,演讲者还解释了将 verify_shape 设置为 true 或 false 时会发生什么,以及 TensorFlow 如何处理常量的唯一名称。最后,讲座演示了如何创建向量和矩阵,将它们相加,并使用 TensorBoard 可视化图形。

  • 00:10:00 这节课介绍了 TensorFlow 中广播的主题,并展示了它与 NumPy 的相似之处。通过向矩阵添加和乘以常数的示例来展示广播。还涵盖了创建预填充某些值的张量的概念,无论是零还是一,以及如何使用 TF.fill 方法创建填充自定义值的张量。强调了为这些张量正确设置数据类型的重要性。总的来说,讲座强调了理解 TensorFlow 与其他基于数字的库(如 NumPy)之间异同的重要性。

  • 00:15:00 在本节中,演讲者讨论了一些可以在 Tensorflow 中使用的不同类型的约束和序列。一个例子是使用 linspace 创建一系列等距间隔,其中起始值和终止值是浮点数 32 或浮点数 64。另一个例子是随机正态函数,它通过从正态分布中采样来生成指定形状的张量。截断正态相似,但样本在均值的两个标准差范围内。最后,随机洗牌被讨论为一种在特定维度上洗牌张量值的方法。演讲者建议练习这些功能以发展肌肉记忆并避免不断依赖文档。

  • 00:20:00 在本节中,讲师讨论了 Tensorflow API 中的各种函数,首先是随机混洗函数,该函数默认在第四维上混洗数据,使其对图像数据集很有用。 random crop 函数从张量中裁剪指定形状的连续数据块。 TF.dot 多项式函数从具有给定 logit 张量和样本数的多项式分布中采样。最后,讨论随机伽马函数,这是统计中的另一种分布,具有两个参数:形状和贝塔。

  • 00:25:00 在本节中,演讲者讨论了使用 TensorFlow 函数生成随机生成的常量和序列以进行深度学习研究。引入了 set_random_seed 函数,它允许用户为整个图设置随机馈送,使结果更具确定性随机性,并使用户能够一致地重复实验。演讲者还解释了用于基本运算的各种 TensorFlow 函数,例如逐元素加法、矩阵乘法和模运算。此外,演讲者还强调了一些原生 Python 类型,例如布尔值和字符串,可以与 TensorFlow 一起使用。

  • 00:30:00 在讲座的这一部分,演讲者讨论了在 TensorFlow 中为不同数据类型(例如向量、矩阵和字符串)定义 0-ness 的概念,以及每种类型的预期输出。它们还涵盖了 TensorFlow 数据类型,其中包括 slow 32 64 到 8 16 32 64,以及它们如何与 NumPy 互换使用。此外,演讲者告诫不要在 TensorFlow 中使用常量,因为它们存储在图形定义中,这可能会在以后引起问题。

  • 00:35:00 在本节中,演讲者讨论了 TensorFlow 变量的使用,并解释说用户可以使用 TFDOTvariable 以及值和可选名称来定义变量。大小是根据输入的值推断出来的,用户可以选择使用 TF.global_variables_initializer() 函数来初始化他们的变量。演讲者警告说,未初始化的变量会导致错误,但如果需要,用户可以只初始化变量的一个子集。此外,演讲者解释说,常量与变量不同,常量是一个运算符,而变量是一个具有多种功能和方法供用户调用的类。

  • 00:40:00 在本节中,视频解释了在 TensorFlow 中初始化变量的不同方法,其中一种方法是使用特定值对变量调用“赋值”操作。这种方法在使用迁移学习训练模型时非常有用,其中某些层是从预训练模型中分配值,而其他层是随机初始化的。该视频还讨论了如何初始化单个变量以及如何使用“eval”方法获取变量的值。此外,视频还解释了在给变量赋值时,如果变量之前没有被初始化也没关系,“assign”操作可以在赋值之前初始化变量。

  • 00:45:00 在本节中,视频介绍了变量的初始化和赋值。初始化器 op 将变量的初始值分配给变量本身。此外,assign op 将变量的当前值加、减或乘以一个新值,而 assign sub op 从当前值中减去新值。多个会话将维护自己的变量和初始化副本,在处理多个会话时小心管理和遵循执行路径以避免意外结果很重要。最后,未初始化的变量不会对赋值或操作产生任何影响,应关闭所有会话以释放资源。

  • 00:50:00 在本节中,演讲者讨论了 TensorFlow 库中变量的初始化。运行 TensorFlow 时,代码中使用的所有变量都必须进行初始化。当使用多个变量时,这可能会有风险,因为它们可能相互依赖。在这些情况下,应该使用变量初始化值来确保变量的值在使用它来初始化另一个变量之前是安全的。演讲者接着解释了使用 TensorFlow 交互式会话的好处以及如何使用会话来评估代码中的一系列操作。最后,演讲者讨论了控制依赖性,这是一种确保在调用最终操作之前执行所有相关操作的方法。这在包含许多操作的复杂机器学习模型中很有用。

  • 00:55:00 在本节中,视频讨论了 TensorFlow 中的占位符,它允许在不知道将在计算中使用的数据值的情况下组装图形。占位符充当将计算的实际值的占位符,它们是使用 TF.placeholder 运算符定义的,具有已定义的类型和形状。在运行涉及占位符的操作时,必须使用占位符及其值创建一个字典,然后将该字典输入到 session.run() 调用中。值得注意的是,虽然占位符可以将形状设置为无,但某些操作确实需要定义形状,这可能会导致错误。

  • 01:00:00 在本节中,视频讨论了占位符以及它们如何成为有效的一流操作,可以在 TensorBoard 中可视化。本节还介绍了如何输入多个数据点以及如何对图中的任何变量或常量使用免费字典。然后视频转到延迟加载,对象仅在需要时才创建,正常加载是在执行之前在图形中创建节点。延迟加载的概念有助于内存管理,尤其是在处理大型数据集时。

  • 01:05:00 在本节中,演讲者解释了延迟加载及其对 TensorFlow 的影响。延迟加载是一种将计算推迟到运行时而不是图构建时的技术——这可能导致计算图中同一操作的多个节点,尤其是在循环中。为了避免图膨胀和其他相关问题,演讲者建议将操作对象的定义与操作的计算和运行分开。此外,演讲者强调了结构化代码的重要性,以便变量定义在一个地方,计算函数在另一个地方。

  • 01:10:00 在本节中,讲师解释了在使用 TensorFlow 进行深度学习研究时如何构建代码以避免调用函数的问题。讲师使用 Python 属性演示了如何定义内部属性,例如“start_prediction”、“optimized”和“error”。代码块的第一部分在添加操作之前计算数据大小、目标大小、权重和偏差。此操作的结果输出被添加到图中。 “优化”函数遵循相同的模式,在第一次调用时创建初始节点,并在后续调用时返回这些节点的句柄。

  • 01:15:00 在本节中,演讲者讨论了优化器如何最小化交叉熵并更新 TensorFlow 中的权重和偏差。首次调用优化器时,TensorFlow 进行反向传播并更新导致损失的变量。当随后调用优化器时,TensorFlow 已经有了图并计算传入节点以最小化和更新权重,而无需调用任何其他节点。属性的使用有助于更有效地构建 TensorFlow 代码。下一讲将提供一个例子来更好地理解这个过程。
Tensorflow for Deep Learning Research - Lecture 2
Tensorflow for Deep Learning Research - Lecture 2
  • 2017.02.05
  • www.youtube.com
This is the second lecture in the series of tutorials on tensorflow and is based on the publicly available slides from the Stanford University class - CS20SI...
 

用于深度学习研究的 Tensorflow - 第 3 讲



用于深度学习研究的 Tensorflow - 第 3 讲

关于用于深度学习研究的 TensorFlow 的第三讲涵盖了使用 MNIST 数据集的线性回归和逻辑回归。讲师展示了如何通过为输入数据创建占位符、为权重和偏差初始化可训练变量、提出预测、计算损失以及将优化器定义为具有特定学习率的梯度下降来在 TensorFlow 中训练线性回归模型。该讲座还解释了小批量随机梯度下降和记住变量形状的重要性。模型的准确率计算方法是将TF argmax函数得到的最大值的指标与目标变量y进行比较,使用TF reduce sum和TF float计算预测正确的次数,除以测试总数例子。最后,讲师指出,该模型并不被认为是强大的,并且有更强大的模型,例如产生更高准确度的卷积层。

  • 00:00:00 在本节中,演讲者开始了有关用于深度学习研究的 TensorFlow 的第三堂课,并首先回顾了上一堂课的材料。他们解释了 TensorFlow 如何将计算图的定义与其执行分开,以及如何通过向其中添加各种操作来组装图。然后,他们讨论 TF 常量、变量和占位符及其在图中的功能。演讲者强调了避免延迟加载的重要性,而是将图的组装和执行分开以获得最佳效率。然后他们介绍了线性回归的第一个例子,并解释了如何根据数据集中的自变量来预测因变量 Y。演讲者建议听众跟着例子自己解决问题。

  • 00:05:00 在本节中,讲师解释了线性回归的基础知识,并演示了如何在 TensorFlow 中训练线性回归模型。使用简单的线性模型,其中 y 的预测值是 W 乘以 X,再加上 B。损失计算为 Y 的预测值与实际值之间的差值,训练通过优化W 和 B 的可训练变量。讲师然后分享线性回归示例的代码,其中输入数据是火灾次数,输出目标变量是给定样本中的测试次数。该代码演示了如何为输入数据创建占位符、初始化 W 和 B 的可训练变量、提出预测、计算损失以及将优化器定义为具有特定学习率的梯度下降。

  • 00:10:00 在本节中,讲师描述了在 TensorFlow 中训练模型以进行深度学习研究的过程。创建模型并设计损失函数后,下一步是启动会话并运行模型定义的时期数。每个时期都涉及在整个会话中重复运行训练数据并更新变量以最小化损失。该过程通过 TensorBoard 可视化,生成的模型可用于预测任何给定输入值的输出。讲师还注意到数据中存在影响模型预测的异常值。

  • 00:15:00 在这一节中,讲师解释了优化器在 TensorFlow 中训练模型的作用,并列出了几个优化器,包括梯度下降、grad momentum、Adam、RMSprop、proximate gradient 和 proximate a grad。讲师强调了测试模型在以前未见过的数据上的性能的重要性,以确保模型具有通用性。为了解决平方误差损失函数对异常值的敏感性,讲师介绍了 Huber 损失函数并解释了它的工作原理。讲师还提供了有关如何在 TensorFlow 中编写 Huber 损失函数的说明。

  • 00:20:00 本节讲师讲解深度学习中常用的损失函数Huber loss的实现。 Huber 损失用于回归问题,通过查找预测和标签之间的残差来工作。如果残差小于 Delta 值,则返回一个名为 Small Res 的函数。但是,如果它大于 Delta,则返回 Large Res。然后讲师开始讨论使用 MNIST 数据集的逻辑回归。 Logistic 回归用于分类问题,其工作原理是将 logit 计算为 X 到 W 加 B。然后将其结果传递给 softmax 函数,产生概率分布。这种情况下使用的损失函数是交叉熵损失,它衡量两个概率分布之间的距离。

  • 00:25:00 在本节中,讲师解释了小批量随机梯度下降的概念以及在训练深度学习模型时批量的使用。这样做有助于充分利用 GPU 内存,并且在我们无法使用完整训练集时效率很高。本教程包括为模型创建占位符、为输入和输出特征初始化权重和偏差值以及使用 tf.random.normal 函数创建带张量流的模型进行初始化的步骤。还强调了在创建变量时记住这些变量形状的重要性,特别是最后输入的特征维度和类数。

  • 00:30:00 本节讨论了维度为10的简单DF模型,其中使用交叉熵损失函数计算损失。优化器被定义,一旦模型被训练,它就会被测试以找到正确预测的总数。正确的预测是使用 logits 批处理和 softmax 函数计算的,其中概率值被馈送到模型并与实际标签进行比较以计算正确的预测值。建议不要在测试集上运行优化器,以免过拟合。

  • 00:35:00 在本节中,演示者解释了如何计算模型的准确性。 TF argmax 函数用于获取行中的最大值,它返回具有最高概率的数字的索引。我们将该指数与目标变量 y 进行比较。然后,我们使用 TF reduce sum 和 TF float 计算正确预测的数量。最后,我们将正确预测的数量除以测试示例的总数以获得准确率,对于这个特定的线性模型,准确率是 90%。演示者还指出,该模型并不被认为是强大的,并且有更强大的模型,例如卷积层,可以产生更高的精度。
Tensorflow for Deep Learning Research - Lecture 3
Tensorflow for Deep Learning Research - Lecture 3
  • 2017.02.15
  • www.youtube.com
This is the third lecture in the series of tutorials on tensorflow and is based on the publicly available slides from the Stanford University class - CS20SI ...
 

用于深度学习研究的 Tensorflow - 第 4 讲



用于深度学习研究的 Tensorflow - 第 4 讲

在 TensorFlow for Deep Learning Research 系列的第 4 讲中,演讲者深入研究了基于深度学习的自然语言处理中的词嵌入。本讲座解释了学习 NLP 问题的词嵌入的概念,并描述了在神经网络中将词表示为数值向量的过程。本讲座讨论了使用基于 AI 的 CBOW 和 skip gram 生成词向量的不同方法,以及使用负采样和 NCE 解决 softmax 中的计算复杂性问题。此外,讲师重点介绍了在 TensorFlow 中嵌入变量以及使用 t-SNE 以降维方式可视化高维词向量的过程。最后,讲座以对所涵盖概念的总结和对下一课的简要介绍结束,下一课将侧重于构建单词模型。

  • 00:00:00 在本节中,讲师讨论了基于深度学习的 NLP 中词嵌入的概念。词嵌入是一种在神经网络中将词表示为数字的方法,它捕获词之间的语义关系。目的是建立一个模型,在将它们投影到二维空间时,可以将相似的概念(例如国家)聚集在一起。讲师还解释了通过计数学习词嵌入的过程,并介绍了使用神经网络反向传播的更新方法。

  • 00:05:00 在本节中,演讲者讨论了使用共现矩阵将单词表示为向量的方法。然而,共现矩阵非常大且稀疏,难以处理。为了解决这个问题,演讲者建议使用截断 SVD 来找到矩阵的低秩近似。这涉及将矩阵分解为三个矩阵,并仅选择右奇异向量的前 K 个用作表示。然而,SVD 是一项计算成本高昂的操作,尤其是对于大型词汇表而言,这使其难以扩展。此外,向词汇表中添加一个新词需要重新进行整个计算。

  • 00:10:00 在本节中,视频讨论了使用基于 AI 创建的方法生成词向量的两种方法:连续词袋 (CBOW) 和 skip gram。 CBOW 使用目标词周围的上下文来预测中心词,而 skip gram 使用中心词来预测上下文词。 one-hot 向量用于表示每个单词,并通过一个简单的神经网络创建权重矩阵来学习单词向量。通过选择窗口大小并将窗口移动到文本上来选择训练样本。神经网络被训练为在给定句子中间的特定单词的情况下查找上下文中任何其他单词的概率。

  • 00:15:00 在讲座的这一部分,演讲者解释了词嵌入技术,该技术涉及将词表示为向量,使它们可以被神经网络解释。该技术涉及从上下文中随机选择一个词,并使用权重矩阵来学习词向量,然后将其与输出矩阵配对以创建词汇表中词的概率分布。 softmax 函数用于对标量输出分布进行归一化,因此具有相似上下文的词将具有相似的概率分配给它们。通过使用这种方法,讲座中的一个例子展示了 intelligent 和 smart 这两个词如何出现在相似的上下文中,因此这两个词的词向量将非常相似。

  • 00:20:00 在本节中,讲师讨论了 softmax 引起的计算复杂性问题的潜在解决方案。通常用于解决此问题的两种方法是负采样和噪声对比度估计 (NCE)。尽管 NCE 可以在理论上保证近似 softmax,但两种方法在实际应用中产生的结果相似。然后,讲座深入探讨了经验分布和知识分布的定义,目标是借助模型参数来近似经验分布。最后,讲师介绍了NCE作为一种减少语言模型估计问题的方法。

  • 00:25:00 在本节中,演讲者解释了他们将如何使用代理二进制分类为二分类训练问题生成数据。他们从 P tilde C 中抽取一个中心词,然后从 PT little P tilde W 逗号 C 中抽取一个真实样本。他们将使用 QW 生成 K 个噪声样本,并为它们分配标签 D,该标签等于 0 以指示这些数据点是噪声。然后,他们通过创建两个分布的混合来计算二类数据中 D、逗号 W 的联合概率。使用条件概率的定义,他们可以将其转化为 D 的条件概率,在 D 为 0 和 1 的两种情况下给定 W 和 C。

  • 00:30:00 在本节中,演讲者讨论了配分函数的昂贵计算问题以及如何使用噪声对比估计 (NCE) 解决该问题。 NCE 建议为每个经验上下文词添加配分函数作为参数,并通过反向传播来学习它。通过将Vc参数固定为1,将P tilde W comma C替换为u theta W comma C除以配分函数除以Vc,得到一个二分类问题。目标是最大化 D 关于 K 个负样本的条件似然,可以写成对数概率。演讲者解释了 NCE 如何用蒙特卡洛近似值代替期望值,从而降低该过程的计算成本。

  • 00:35:00 在本节中,讨论了使用噪声对比估计 (NCE) 代替负采样 (NS)。 NCE能够将语言建模目标简化为一个二元分类问题,并且表明该目标将在模型参数的同一点上实现。提供了用于 NCE 损失的 TensorFlow API 以及名称范围的使用,这允许将节点分组在一起以便在 TensorBoard 中更好地可视化。变量名称的范围也在名称范围功能的上下文中进行了解释。

  • 00:40:00 在本节中,讲师讨论了在 TensorFlow 中嵌入变量以进行深度学习研究的过程。通过在特定范围内嵌入变量,它们成为 TensorFlow Board 中分组良好的可视化的一部分。讲师还解释了如何使用称为 t-SNE 的技术可视化词向量,并提供了绘制 TC 以进行可视化的方法。通过从嵌入矩阵中学习到的高维向量,使用 t-SNE 将维度降为 2D 或 3D,显示单词之间的最近邻关系。最后,讲师概述了用于单词工作模型的代码。

  • 00:45:00 在本节中,讲师讨论了为输入和输出定义占位符、为 NCE 损失构建变量以及定义嵌入和嵌入矩阵的过程。使用 50,000 的词汇量和 128 的批量大小,该讲座定义了一个嵌入矩阵,该矩阵为每个词学习一个 128 维的词向量。还解释了 skip-gram 中的推理过程,为了便于解释,讲座一次集中在一个单词上。然后使用 TensorFlow API 定义损失函数,讲座提供了关键变量的细分,例如负样本和训练步骤数。

  • 00:50:00 在本节中,演讲者讨论了如何使用 NCE(噪声对比估计)来创建有助于解决 softmax 复杂性的二元分类问题。为代理分类创建的 64 个负例和一个正例中的每一个都对应一个词向量。 TensorFlow 自动微分用于更新二元分类器的权重,以将一个正例与 64 个负例分开。本讲座以迄今为止涵盖的概念摘要结束,包括词向量、NCE、嵌入矩阵和主成分分析 (PCA)。下一课将重点介绍在构建单词模型时管理不同的程序和实验。
Tensorflow for Deep Learning Research - Lecture 4
Tensorflow for Deep Learning Research - Lecture 4
  • 2017.03.04
  • www.youtube.com
This is the fourth lecture in the series of tutorials on tensorflow and is based on the publicly available slides from the Stanford University class - CS20SI...
 

用于深度学习研究的 Tensorflow - 讲座 5_1



用于深度学习研究的 Tensorflow - 讲座 5_1

TensorFlow for Deep Learning Research 系列的第五讲涵盖了几个主题,包括如何有效地管理深度学习实验、TensorFlow 中自动微分的重要性以及训练模型和保存变量的过程。演讲者解释说,TensorFlow 等深度学习框架提供了自动微分功能,使用户可以更轻松地编写模型代码,而无需处理梯度。虽然手动计算梯度不是必需的,但对于简单的函数和网络来说计算梯度仍然很有帮助。还涵盖了使用子类和必要的占位符和提要技术创建命名实体识别模型,以及在 TensorFlow 中保存和恢复变量以及跨不同会话和机器保存模型的过程。

  • 00:00:00 在本节中,演讲者讨论了如何管理深度学习实验以及 TensorFlow 中自动微分的重要性。他们解释说,在编写模型时,您将尝试各种事情并开始和重新开始训练,因此适当的管理至关重要。 TensorFlow 等深度学习框架提供了自动微分功能,使用户无需处理实际梯度即可轻松编写模型代码。演讲者提供了一个示例,在该示例中,TensorFlow 的“梯度”操作允许针对作为第二个参数提供的列表中的每个张量查找 Y 的梯度。他们还提到 TensorFlow 和深度学习中的一切都基于数值微分。

  • 00:05:00 在这一节中,演讲者讨论了在 TensorFlow 已经具有点梯度功能的情况下是否有必要学习如何手动计算梯度。他建议,虽然这不是必需的,但为简单的函数或网络计算梯度仍然很有帮助,尤其是在编写自定义层或处理梯度爆炸或消失梯度等梯度问题时。他还建议以更面向对象的方式构建模型,使其更易于使用,并将模型完全移出函数。演讲者提到 CS 244 D 分配结构作为如何封装深度学习模型组件的示例。

  • 00:10:00 在本节中,演讲者讨论了创建深度学习模型的模型方面。他们解释说,模型是编写完整推理的地方,接受输入并执行前向传递以给出输出,然后添加损失操作,创建损失标量,将预测输出与占位符的真实输出标签进行比较。演讲者建议将所有内容抽象为一个基类,并为特定类型的模型(例如语言模型)创建子类。最后,他们解释了如何使用子类和所需的 API(如占位符和提要技术)创建命名实体识别模型。

  • 00:15:00 在本节中,我们将了解使用 TensorFlow 训练深度学习模型的过程以及如何有效地管理实验。该过程涉及创建变量矩阵并获取训练数据的嵌入,然后在循环中运行训练数据的时期,从而训练嵌入矩阵。为了保存进度,train.saver 的 TF 将图中的变量保存在二进制文件中,可以在以后的运行中调用这些变量以从停止的地方开始。代码示例展示了如何实例化保护程序对象并循环遍历训练步骤以运行优化器,保存会话和一些目录名称。

  • 00:20:00 在本节中,演讲者深入探讨了 TensorFlow 的 Save 类及其相关变量的细节。全局步长变量定义为从 0 开始的不可训练代码变量,每次调用训练操作时都可以递增,方法是在“最小化”函数中提供它。此外,“max to keep”变量限制保存到最近的检查点的数量,“keep checkpoint every”变量控制保存检查点的频率,这对于长时间的训练周期很有用。

  • 00:25:00 在本节中,讲师讨论如何在 TensorFlow 中保存和恢复变量。他解释说,用户可以指定变量列表或字典来保存特定变量,而不是保存所有内容。这样做的好处是节省空间并提高吞吐量,尤其是在进行迁移学习时。要恢复变量,用户可以调用 tf.latest_checkpoint 函数,该函数将检查特定目录中的最新检查点,并使用 session.restore() 函数从那里恢复。讲师还提到,用户可以在 TensorFlow 0.11 及更高版本中通过创建具有与变量对应的键和值的集合,然后使用所有默认值实例化保存器对象来保存图形。

  • 00:30:00 在讲座的这一部分中,讲师解释了如何跨不同会话甚至不同机器保存和恢复 TensorFlow 模型。这些步骤包括运行全局变量初始值设定项、保存会话以及利用“导出元图”方法创建保存的图文件。如果原始图不可用,可以恢复保存的图,并且可以在完全不同的进程或机器中重新初始化变量。讲师还提到了 TF.summary,将在下一个视频中介绍。
Tensorflow for Deep Learning Research - Lecture 5_1
Tensorflow for Deep Learning Research - Lecture 5_1
  • 2017.03.18
  • www.youtube.com
This is the first part of the fifth lecture in the series of tutorials on tensorflow and is based on the publicly available slides from the Stanford Universi...
 

用于深度学习研究的 Tensorflow - 讲座 5_2



用于深度学习研究的 Tensorflow - 讲座 5_2

该视频教程讨论了 TF 摘要操作的实现,它允许在 TensorBoard 中可视化数据。本教程涵盖三种类型的摘要操作 - TF.summary.scalar、TF.summary.histogram 和 TF.summary.image - 并解释了如何将它们合并为一个并使用 FileWriter 类将它们写入事件文件。讲师演示了如何使用名称范围在 TensorBoard 中可视化图形,并定义了测试编写器和训练有素的编写器来将摘要写入单独的文件。他们强调利用 TensorBoard 的可视化功能来更好地了解模型的性能。总的来说,TensorBoard 是跟踪训练进度的重要工具,用于添加和合并操作的 API 非常简单。

  • 00:00:00 在本节中,视频教程讨论了如何使用 TF 摘要操作,这些操作是将信息附加到计算图中的节点以生成摘要数据以在 TensorBoard 中进行可视化的功能。本教程涵盖三种类型的摘要操作: TF.summary.scalar,用于附加到图中的标量值节点,例如损失、交叉熵和学习率; TF.summary.histogram,用于可视化张量的分布,例如特定层的权重;和 TF.summary.image,用于可视化图像、输入,甚至一些中间层。本教程解释了如何将所有摘要操作合并为一个并使用 FileWriter 类将它们写入事件文件。

  • 00:05:00 在本节中,演讲者解释了如何在 TensorFlow 中设置文件编写器和摘要,以便在 TensorBoard 上可视化数据。他们建议将 writer 设置为以特定的时间间隔运行,因为在每一步运行它可能会产生过多的数据。通过为文件编写者提供图形对象,计算图可以保存为图形定义并在 TensorBoard 上可视化。演讲者演示了如何通过在 x 轴上选择特定步骤以查看 y 轴上的相应值来在 TensorBoard 上可视化标量和直方图。他们鼓励用户利用 TensorBoard 的可视化功能来更好地了解其模型的性能。

  • 00:10:00 在本节中,讲师讨论定义一个名为 variable_summary 的函数,该函数接受一个张量并添加一个摘要节点。函数涵盖均值、标准差、最大值、最小值和直方图;从命名的角度来看,每个变量都将被限定范围。他们还讨论了分布中无序的概念,当模型训练不足时损失最高,并且随着步长的增加,损失会减少。不同的文件编写器可以用于不同的实验,它们可以保存在日志装置中。密集住所选项允许在不同的选项中进行选择和切换。

  • 00:15:00 在本节中,视频重点介绍了在 TensorFlow 中实现摘要操作和使用名称范围进行可视化。该代码定义了交叉熵和准确性的名称范围,以帮助在 TensorBoard 中可视化图形。合并的操作是通过调用 TF.summary.merge_all 获得的,并且在运行会话时使用此操作。该代码还定义了一个测试编写器和一个训练有素的编写器,用于将生成的摘要写入单独的文件。对于每个步骤,代码都会训练模型并编写摘要。如果步骤数 mod 10 等于零,则将摘要写入测试编写器,而对于所有其他步骤,将其写入受过训练的编写器。

  • 00:20:00 在本节中,演讲者讨论了运行 TensorBoard 以同时可视化测试编写器和训练编写器中的事件的方法。命令“s about -- clock there is equal to the path”有助于可视化一切,当前主机是localhost冒号六零零六,可以通过浏览器导航。此外,TF 点摘要点图像默认有一个名称 tensor max outputs,它解释了一个具有形状路径大小高度宽度和通道的四维张量。最大输出参数决定了将在 TensorBoard 上渲染和显示多少偏移后图像。总体而言,TensorBoard 是跟踪训练进度的重要工具,用于添加和合并各种操作的 API 非常简单。
Tensorflow for Deep Learning Research - Lecture 5_2
Tensorflow for Deep Learning Research - Lecture 5_2
  • 2017.04.03
  • www.youtube.com
This is the second part of the fifth lecture in the series of tutorials on tensorflow and is based on the publicly available slides from the Stanford Univers...
 

作为计算图的反向传播背后的直觉



作为计算图的反向传播背后的直觉

本视频解释了反向传播作为计算图背后的直觉。演讲者讨论了如何使用代理函数来估计将输入映射到输出的经验函数,目标是找到使损失函数最小化的参数。反向传播允许通过图形的反向传递计算损失函数相对于每个参数的梯度。计算图中每个门的局部梯度,它们可用于计算最终输出相对于每个输入的梯度。演讲者还解释了如何处理分支和向量化操作的梯度,以及如何确保在计算导数时维度有效。

  • 00:00:00 本节,反向传播使神经网络的训练能够快速收敛,深入理解它可以对研究人员有所帮助。本讲座首先解释神经网络的目标是找到将输入映射到输出的函数,用 F(x) 表示,这是一个可能无法发现的经验函数。该讲座概述了使用代理函数 G(x,θ) 来估计 F,其中 θ 表示神经网络参数,目标是找到使损失函数 J 最小化的参数。该讲座然后讨论了反向传播技术如何允许网络通过图形的反向传递计算损失函数相对于每个参数的梯度来找到最佳参数。

  • 00:05:00 在本节中,演讲者讨论了寻找 G 关于 theta 的导数,这对于训练神经网络至关重要。使用的示例是 X、Y 和 Z 的简单函数,其中必须计算 F 相对于 X、Y 和 Z 的偏导数。引入了局部梯度的概念,它是给定操作的输出相对于输入的导数。然而,需要链式法则来计算关于远距离变量的最终输出,在本例中为 X、Y 和 Z。

  • 00:10:00 在本节中,我们将了解如何使用梯度的反向流动在计算图中找到梯度。输出节点的梯度通常为 1,为了计算每个节点的梯度,我们将局部梯度与从前一个节点接收到的梯度相乘。然后程序可以计算 del X 的 del F、Del Y 的 del F 和 Del V 的 del F 的最终梯度。重要的是要记住,我们总是根据最终损失函数计算梯度,这在神经网络的情况下,是 J 损失函数。最后,我们将了解神经网络中的神经元如何在前向传播过程中执行简单的功能,以及在反向传播过程中如何在本地计算和使用梯度。

  • 00:15:00 在本节中,演讲者将反向传播背后的直觉解释为神经元的计算图。局部梯度是通过向后函数与 del Z 乘以 Del X 和 del Z 乘以 Del Y 值获得的。反向流向神经元的输出方向,向它发送数据的其他神经元通过 Del X 得到 Del J。计算图技术还用于更复杂的函数,例如 sigmoid 函数,其中向后梯度是用数值计算的。每个节点的局部梯度是通过对函数求导,然后将其与梯度流相乘来计算的。

  • 00:20:00 在本节中,演讲者解释了如何计算计算图中每个门的局部梯度,以及如何使用它们来获得最终输出相对于每个输入的梯度。视频中使用的例子涉及一个由多个门组成的小型计算图,例如加法门和乘法门,演讲者通过这个例子解释了反向传播算法背后的直觉。演讲者详细介绍了如何计算图中每个门的局部梯度,并展示了如何将它们组合起来计算最终输出相对于每个输入的梯度。

  • 00:25:00 在本节中,演讲者讨论了作为计算图的反向传播背后的直觉。他们解释了如何为不同类型的门计算梯度,例如加法门和乘法门,以及计算反向流时出现的模式。演讲者还解释了如何为每个门定义前向和后向函数,一旦定义,这些函数就可以用于任何计算图,从而使过程更加高效。

  • 00:30:00 在本节中,反向传播中前向和反向传播的概念将作为计算图进行讨论。前向传递计算输出,该输出成为下一个节点的输入,直到达到损失。在backward pass中,DZ初始设置为1,反向计算。在处理向量时,使用雅可比矩阵获取局部梯度,并在链式法则中使用左乘法。 Del X 的 Del L 或 Del Y 的 Del L 是使用两个雅可比矩阵计算的,即 Del X 的 del Z 或 Del Y 的 del Z 和 Del V 的 del L。

  • 00:35:00 在本节中,演讲者解释了如何使用计算图计算给定函数的前向传播和反向传播。使用示例函数,演讲者逐步介绍了创建中间变量和计算前向传递的过程。然后,演讲者展示了如何通过计算每个门的输入和输出的梯度来计算反向传播。演讲者强调牢记 sigmoid 函数的导数的有用性。

  • 00:40:00 在本节中,演讲者解释了如何处理反向传播中分支和矢量化操作的梯度。当发生分支时,会添加梯度,并且在计算函数的梯度时,可以重复使用之前的中间梯度。矢量化运算,例如矩阵乘法,可以通过分别计算每个元素的梯度并使用矩阵运算将它们组合来类似地处理。梯度的维数由正在执行的操作的输出维数决定。

  • 00:45:00 在本节中,演讲者使用 TensorFlow 中的矩阵乘法示例,解释了在函数中计算 del D/del W 和 del D/del X 时如何确保维数有效。 W 和 DD 的维度是已知的,并且由于进行乘法运算的唯一方法是使用 W dot dot dot X,因此最好记住这个公式。演讲者提醒观众理解 TensorFlow 中的计算图操作很重要,即使像 TensorFlow 这样的框架抽象出了这种复杂性。在处理自定义层时,这些知识将被证明是有用的,这需要用户编写他们的前向和后向传递。
Intuition Behind Backpropagation as a Computational Graph
Intuition Behind Backpropagation as a Computational Graph
  • 2017.03.13
  • www.youtube.com
Here I go into details on how to visualize backpropagation as a computational graph. As part of my other tutorials on tensorflow, we have discussed as to how...
 

将计算机视觉的深度学习产品化



将计算机视觉的深度学习产品化

Jumio 的首席技术官兼首席科学家 Lavash Patel 讨论了他们的公司如何使用 AI 和 ID 专家的组合来建立在线信任并验证 ID 文件的真实性。由于 ID 和子类型的多样性,以及需要纠正和拒绝不可读图像,身份验证过程具有挑战性。为了保持准确性,采用了人在回路中的方法,其中 AI 模型检测问题,然后人类对结果进行健全性检查。 Patel 还讨论了 Jumio 如何使用混合主动学习算法将深度学习生产化,该算法适应新的子类型并通过自我再训练来改进。此外,他还强调了清洁数据在人脸识别中的重要性,以及在处理用于机器学习目的的敏感数据时保持 PCI 合规性。

  • 00:00:00 在本节中,Jumio 的首席技术官兼首席科学家 Lavash Patel 介绍了该公司通过 AI 和 ID 专家的组合在线建立信任以验证 ID 文件的真实性的业务。由于他们接受来自各种渠道的流量,包括手机、网络摄像头和简单的 API 调用,因此这种验证过程的问题变得具有挑战性。为解决这些问题,Jumio 混合使用分类和 Facemash 模型来帮助验证 ID 的真实性和摄像头前人员的身份。

  • 00:05:00 在本节中,鉴于存在各种 ID 和子类型,演讲者讨论了使用 AI 进行身份验证的挑战。强调了校正或对齐图像的重要性,以及拒绝由于模糊或眩光导致的不可读图像的需要。批准 ID 图像是一个比拒绝更严格的过程,因为每个组件都必须通过才能被视为有效。为了保持严格的准确性和拒绝欺诈用户,采用了一种人在回路中的方法,其中使用 AI 模型来检测问题,并使用人类对结果进行健全性检查。这种方法在转换和欺诈检测方面实现了行业领先的准确性。

  • 00:10:00 在本节中,演讲者讨论了计算机视觉产品化深度学习的分类方面。虽然图像分类在过去几年中已使用预训练网络(如 Inception Version 4 或 Viji 16)得到解决,但由于聚合标签而不是颗粒标签,问题略有不同。有超过 1 亿张标记图像,发现不同的类别已成为一个变形的类别发现问题,主动学习可以解决这个问题。混合主动学习涉及一个无监督学习或内置聚类的步骤,从最流行的带有标记示例的类开始,以获得少数类。

  • 00:15:00 在本节中,演讲者解释了如何使用混合主动学习算法将计算机视觉的深度学习生产化。该算法为每个类别收集大量样本,并训练分类器将图像自信地分类为 50 个类别,并输出置信水平。然后,该算法会自动对分类器不信任的图像进行聚类,人工代理会检查它们以在必要时添加新类。一旦创建了模型,它就会作为 API 部署,如果有合规性规定,可能会添加日志记录、监控和健康检查。此外,演讲者指出,该算法会适应新的子类型,并通过自我再训练不断改进,就像检测到拼写错误的新 ID 时所做的那样,而人工代理拒绝了它。

  • 00:20:00 在本节中,演讲者讨论了他们如何通过始终拥有冠军模型并根据与冠军相比的表现来评估新模型来生产新模型。这种方法还允许使用持续收集和清理数据集的混合主动学习基础设施进行持续改进。生产流水线对数据集的清洁度很敏感,训练的目标错误率不超过 20%。整个过程还必须符合 PCI 和 GDP,这意味着所有内容都必须加密并带到数据中,而不是将数据带到训练中。然后,演讲者介绍了第二个关于面部匹配的案例研究,他们利用年龄、性别和种族方面的数据偏差来将自拍与 ID 相匹配。

  • 00:25:00 在本节中,演讲者讨论了一种可能的方法,通过在深度卷积网络中使用人脸嵌入和三元组损失函数来解决检测欺诈用户的问题。该过程涉及使用面部检测器裁剪面部并使用公共数据集训练模型,然后对生产数据进行微调。该模型通过主动学习的过程进行微调,这涉及使用受监督的基础设施来收集信息样本并不断扩充数据。演讲者强调了主动学习在广泛用例中的有效性。

  • 00:30:00 在本节中,演讲者强调了干净数据在计算机视觉中的重要性,尤其是在人脸识别中。他强调,生产深度学习涉及的不仅仅是建模,甚至像分类这样的简单问题最终也会在生产阶段出现许多复杂问题。协作智能或人在回路中的工作流程也有助于改进算法,并且在人脸识别中尤为重要,因为它需要干净的数据集。演讲者还提到,他们的公司正在为位于维也纳和蒙特利尔的研发团队招聘人才。

  • 00:35:00 在本节中,演讲者讨论了在处理用于机器学习和 AI 目的的敏感数据时保持 PCI 合规性的挑战。发言人解释说,数据必须仅用于其预期目的,并且高度安全的位置和程序必须到位,以防止任何未经授权的访问。演讲者还解释说,数据放在 PCI DMZ 内的 Amazon S3 存储桶中,并为机器学习目的创建混淆图像,然后对其进行远程监督以确保个人数据不会泄露。
Productionalizing deep learning for Computer Vision
Productionalizing deep learning for Computer Vision
  • 2018.10.16
  • www.youtube.com
In this conference talk, I explore how we use deep learning algorithms for smarter data extraction, fraud detection, and risk scoring to continuously improve...
 

盖尔维斯:像变形金刚一样思考



盖尔维斯:像变形金刚一样思考

Gail Weiss 在此视频中讨论了变换器编码器的概念,解释了它们处理序列并将其编码为向量的能力。 Weiss 重点介绍了几项探索变压器编码器的优势和局限性的研究,并引入了一种称为受限访问序列处理语言 (RASP) 的编程语言来表示变压器编码器的能力。在深入研究使用序列运算符和库函数来计算逆选择器和翻转选择器之前,她还讨论了多头注意力、选择模式和 softmax 在特定条件下的挑战。 Weiss 提供了关于为转换器创建最佳程序的见解以及来自通用和三明治转换器的见解,最终讨论了选择谓词和二元与三阶关系。

他还谈到了在 transformer 模型中使用高阶注意力的潜在好处和缺点,以及剩余连接在维护整个层中的信息方面的重要性。她还讨论了偏离 RASP 模型的非常深的转换器的潜在问题,并建议使用更长的嵌入来克服信息的模糊性。

  • 00:00:00 在视频的这一部分,Gail Weiss 介绍了变压器编码器的概念,它是设计用于处理序列的神经网络的一部分。她解释说,transformer 编码器采用给定的序列并将其编码为一组向量,其中包括一些流行的示例,包括 BERT。 Weiss 然后强调了几项研究,这些研究探索了 transformer 编码器的优势和局限性,包括它们识别正式语言和执行计算的能力。虽然这些研究提供了对 transformer 编码器能力的见解,但 Weiss 指出,它们并没有提供关于 transformer 如何实际处理任务的清晰直觉。

  • 00:05:00 在本节中,Gail Weiss 解释说循环神经网络 (RNN) 类似于有限状态机,它根据输入向量定义状态之间的转换,同时根据达到的状态输出最终分类。通过使用我们对确定性有限自动机的理解来分析它们的表达能力,他们深入了解如何使用 RNN,从而能够将 RNN 转换为加权有限自动机、确定性有限自动机或加权确定性有限自动机。然而,这种直觉对于 Transformers 并不存在,因此需要提出一个模型来为 Transformer 编码器提供类似的目的。与 RNN 不同,Transformer 编码器一次获取全部输入,并通过应用处理固定次数的深度网络并行处理所有输入标记。虽然 Transformers 中没有状态,但有一种通过一组操作处理和传播信息的感觉。

  • 00:10:00 在本节中,Gail Weiss 解释了如何将变压器编码器表示为一种称为受限访问序列处理语言 (RASP) 的编程语言,该语言描述了序列运算符 (S-ops) 的创建。 S-ops 表示将操作应用于序列的变换器编码器层,创建更多处理信息。 RASP 提供了两个常量,令牌和索引,它们从任何输入序列创建新的字符序列和索引,然后将元素前馈网络应用于进入转换器编码器层输入的每个向量。程序员负责应用操作的逻辑或合理计算,因为它们可以是任何按元素的操作。

  • 00:15:00 在视频的这一部分,Gail Weiss 介绍了多头注意力的概念,它是 transformer 编码器层的一部分,不是元素级的。她首先解释单头注意力及其工作原理,方法是对向量序列应用两个线性变换,创建一组查询和一组键。键描述了它必须提供的信息,查询描述了每个位置需要的信息。通过查询与每个键的标量积,对权重进行归一化,得到每个位置的输出。 Weiss 还澄清了一个关于允许模型具有更多参数的键和值的中间转换的问题。

  • 00:20:00 在本节中,演讲者讨论了多头自注意力以及如何使用它来将多个操作压缩到一个层中。该过程涉及将输入向量拆分为等长向量,并将每个块传递到不同的头中。一旦应用了多个头,它们就会连接起来形成多头自注意力的输出。虽然不同的头之间没有依赖关系,但是一个层可以做多个操作,因为它有多个不同的头。这个过程允许程序员担心注意力头而不是多头自注意力,这是编译器的问题。

  • 00:25:00 在本节中,Gail Weiss 提供了有关如何为转换器编码某些选择模式的示例。以根据他们用零、一或二来描述自己来选择职位为例,Weiss 表示第一个职位选择最后两个职位,第二个职位什么都不选,第三个职位只选择第一个职位。 Weiss 还解释说,可以选择各种类型的比较,例如大于或等于、小于或等于或不等于,并且选择器可以组合在一起。然而,Weiss 指出,选择模式对转换器的抽象取决于正在执行的操作的合理性,而这取决于程序员来确保。

  • 00:30:00 在本节中,演讲者讨论了在特定条件下使用 softmax 的挑战,即略微关注不符合选择标准的剩余位置。为了解决这个问题,演讲者建议如果增加这些嵌入的大小,softmax 将开始逼近“小于或等于”和“超过”位置的硬选择。然后介绍了聚合的概念,以及如何使用平均值选择和加权代币。演讲者提供了一个 token 反转的例子,以及他们如何创建一个反转选择器并聚合 tokens 以使用单词“hello”输出“olleh”的示例来获得反转的输入序列。

  • 00:35:00 在本节中,演讲者讨论了如何在变换器中使用长度运算符,即使它不是输入的一部分,以及选择决策如何成对地防止可能隐藏任意功率的任意强大的选择操作。演讲者还谈到了其他变压器组件,例如跳跃或残差连接,它加回了嵌入的值,以及 RASP 模型中不存在的层范数。此外,演讲者还提到使用函数和组合选择器是为了方便避免重复代码。

  • 00:40:00 在本节中,演讲者讨论了使用 val、min 和 max 等序列运算符来检查哪些索引在某个范围内。他们还提到了库函数的实用性,例如选择器宽度在实现输入序列中的就地直方图和计数标记等功能时的实用性。此外,演讲者还描述了他们如何使用选择器和指示函数计算序列的长度,并指出层归一化会使此类计算复杂化。最后,他们提出了一种替代解决方案,涉及一个反馈网络来计算逆,但承认它可能仍会受到层归一化的影响。

  • 00:45:00 在本节中,Gail Weiss 讨论了变换器如何学习计算逆和翻转选择器,即使在处理相对较短的序列时也是如此。她进一步解释说,Ras 程序分析可用于确定何时应用计算反向以及何时应用翻转选择器,同时确保选择和聚合对只是注意力头。最后,她探索了一个实际的 transformer 如何在两层中执行反向计算,这一结果得到了以下结果的支持:在 20 个 epoch 后,transformer 在反转长度高达 100 的输入序列时成功达到了 99.6% 的准确率。

  • 00:50:00 在本节中,Gail Weiss 讨论了为变压器创建最佳程序,这需要两层才能有效地执行任务。即使程序减少到一层并增加两倍的参数或使用两个头,它也无法获得高精度,因为它不知道如何处理不断变化的序列长度。此外,两层的注意力模式相同,第一层使用统一注意力来计算序列长度,第二层使用相同的反向注意力模式。此外,Weiss 演示了一个就地直方图,其中涉及选择标记并输出该标记在输入序列中出现的次数。通过将每个标记集中在与自身相同的标记上或序列标记开头的第一个位置,他们只使用一个注意力头来训练转换器,从而更容易计算逆元素和其他元素。

  • 00:55:00 在本节中,Gail Weiss 谈到了来自 Universal Transformer 和 Sandwich Transformer 的见解,这两者都影响了思考和使用 Transformer 模型的方式。她解释说,RASP 中的每个序列运算符都是有限次数运算的结果,因此该语言并非无限强大,而是有限次数的 O(n^2) 计算。她还谈到了转换器编码器中注意力头的计算成本,以及使用 n^2 计算可能不值得的原因。然后对话转向围绕选择谓词和二元与三阶关系的讨论。

  • 01:00:00 在本节中,Gail Weiss 讨论了具有更高阶注意力的变压器模型功率的潜在增加,例如三阶而不是二阶。她解释说,这样的模型可能会计算具有大于 O(n^2) 操作的函数,从而增加其功能。但是,这在计算上也会更加昂贵。 Weiss 还强调了 transformer 模型中残差连接的重要性,作为在整个层中保留和重用信息的一种方式,并建议删除它们会大大降低性能,即使它们可能不会显示为不同的操作。
     
  • 01:05:00 在视频的这一部分,Gail Weiss 讨论了非常深的变压器可能出现的潜在问题,以及它们如何偏离 RASP 模型。她提到了她在 ICML 中读到的一篇论文,内容涉及从变压器中删除某些信息的重要性,这可能会导致其快速丢失信息。但是,她还指出,如果信息被认为是重要的,则可能会保留这些信息。 Weiss 还讨论了使用很长的嵌入来克服 transformer 深入时信息中的模糊问题的想法。
Gail Weiss: Thinking Like Transformers
Gail Weiss: Thinking Like Transformers
  • 2022.02.25
  • www.youtube.com
Paper presented by Gail Weiss to the Neural Sequence Model Theory discord on the 24th of February 2022.Gail's references:On Transformers and their components...
 

Matt Zeiler 的可视化和理解深度神经网络



Matt Zeiler 的可视化和理解深度神经网络

Matt Zeiler 讨论了用于图像和视频中对象识别的卷积神经网络 (CNN) 的可视化和理解。他描述了与人类和灵长类动物相比,深度神经网络在识别物体方面的表现如何,并展示了 CNN 如何通过层层学习来识别物体。 Zeiler 解释了改进 CNN 架构的过程,并讨论了在使用有限数据进行训练时的局限性。最后,他回答了有关在较高层中使用较低层以及卷积在神经网络中的应用的问题。

  • 00:00:00 在本节中,Matt Zeiler 描述了一种可视化用于识别图像和视频中的对象的卷积网络的技术,这使他们能够了解每一层正在学习什么并获得洞察力以提高性能。卷积神经网络自 80 年代末以来一直存在,新方法使用与以前非常相同的架构。该领域的突破是由 Geoff Hinton 的团队完成的,因为他们的神经网络将通用基准 ImageNet 上的错误率降低了 10%,而不是通常的 26%,从而提高了识别任务的性能。

  • 00:05:00 在本节中,Matt Zeiler 讨论了最近的研究,这些研究将深度神经网络的性能与灵长类动物和人类在物体识别方面的性能进行了比较。一项研究涉及记录猴子大脑中电极在呈现图像时的放电情况,并将其识别准确度与深度神经网络和人类的识别准确度进行比较。结果表明,当图像呈现时间少于 100 毫秒时,人类、深度神经网络和猴子的 IT 皮层表现几乎相同。此外,Zeiler 还讨论了 D 卷积网络,这是一种无监督学习模型,用于在使顶级特征稀疏的同时重建图像,目的是了解卷积网络实际学习的内容。

  • 00:10:00 在本节中,Matt Zeiler 解释了使卷积网络中的操作可逆以实现良好重建的重要性,尤其是在处理多层信息时。他展示了网络中最高层是如何可视化的(使用 50,000 张图像的验证集),方法是一次选择具有最强激活的单个特征图,并将其用作卷积网络顶部的输入,以重建可视化自下而上。第一层特征图的可视化显示过滤器由不同方向和频率的定向边缘和颜色边缘组成,这是研究人员之前预期的。然而,更高层的可视化通过显示跨多个图像的最强激活和不变量,提供了关于网络如何学习和分类不同对象的新见解。

  • 00:15:00 在本节中,Zeiler 解释了第二层神经网络的发展,它展示了一组比第一层复杂得多的模式。第二层中存在边缘、平行线、曲线、圆圈和彩色块等结构的组合。通过池化,它可以从图像中处理更广泛的内容。看看第三层,Zeiler 展示了它如何学习对于构建对象表示至关重要的对象部分,例如狗脸或人脸。分组特征仍然存在于第三层,但作为语义更相关的网格分组或特定面部结构。

  • 00:20:00 在本节中,解释了神经网络如何在遍历各层时学习识别特定对象。在网络的第四层,连接变得更加特定于对象,任务中不明确的类别(如草)成为一个特征。该模型还学习识别多个特征,例如不同品种的狗或不同方向的不同类型的键盘。最后一个卷积层变得更大,因为它越接近分类层,边界效应对卷积层的影响越大。最后一层的内容变得高度特定于对象,因为模型必须决定图像属于哪个类别,并且该层中仅存在 256 个特征。

  • 00:25:00 在本节中,Matt Zeiler 讨论了一项实验,以确认可视化是在图像的相关部分触发的。他们在图像上滑动了一个平均像素为 128 的零块,并记录了模型的激活或概率。通过挡住博美犬的脸,他们发现博美犬的概率明显下降,而当脸被挡住时,最有可能的类别是网球。有趣的是,他们发现第五层已经学习了一个文本检测器,因为它在阻挡图像中的任何文本时显着降低了该特征,提供了一个概念,即该层可以将文本与其他类相关联。最后,他们使用了多伦多小组的模型,该模型在 2012 年赢得了 ImageNet 挑战,并发现第一层过滤器的归一化存在巨大差异。

  • 00:30:00 在这部分视频中,Matt Zeiler 讨论了改进深度神经网络架构的过程。他解释说,在解决重归一化问题后,很明显第一层过滤器太大,导致过滤器失效。第二层也有很多 blocking artifacts,导致它丢失信息,导致他们使卷积中的步幅更小并去除 blocking artifacts,并增加第二层的灵活性。这些修改帮助他们赢得了 2013 年的 ImageNet 比赛,这些方法在后来的比赛中再次使用,取得了不错的成绩。 Zeiler 还讨论了这些神经网络在确定显着性方面的泛化能力和用途。

  • 00:35:00 在本节中,Zeiler 讨论了仅使用少量训练数据时深度模型的局限性,指出模型难以正确学习特征。他解释说,这些模型擅长识别通常对物体识别很重要的特征,并且这可以转移到其他任务,只需几个例子,如各种表格和图表所示。此外,Zeiler 通过查看所有中间层和不同类型的分类器来检查训练深度模型的重要性。最后,Zeiler 建议利用经过训练的模型来清理收集的标签数据是可能的,并且有可能改进训练模型。

  • 00:40:00 在本节中,Zeiler 回答了一个问题,即在分类方面表现不错的神经网络的较低层是否可以用于较高层或接近分类输出。他解释说,由于重复提取,更高层可能有更多信息,但不同类型的信息也可能有所帮助。然后话题转向不同层的性能和训练大型神经网络的硬件注意事项。 Zeiler 还讨论了神经网络识别不太具体类的能力,例如微妙的情绪或手势,以及不同层大小的映射。

  • 00:45:00 在本节中,演讲者解释了如何将卷积应用于神经网络中的图像和其他层。卷积的应用取决于两个参数:过滤器的大小和应用过滤器的位置之间的步幅。在较低的层中,演讲者解释说使用两个步幅是因为空间内容太多并且每个位置的计算都太昂贵了。但是,这样做会导致信息丢失。演讲者还提到,神经网络的前几层没有无监督学习,像“abandoned”这样的描述性词语已经融入到词汇表中。
Visualizing and Understanding Deep Neural Networks by Matt Zeiler
Visualizing and Understanding Deep Neural Networks by Matt Zeiler
  • 2015.02.02
  • www.youtube.com
Matthew Zeiler, PhD, Founder and CEO of Clarifai Inc, speaks about large convolutional neural networks. These networks have recently demonstrated impressive ...