Transformer Network变压器网络

你已经了解了 self attention,你已经了解了 multi headed attention。在这个视频中,让我们把它们放在一起来构建一个变压器网络。您将看到如何将之前视频中看到的注意力机制配对来构建转换器架构。再次从句子 Jane Visite the feet on September 及其相应的嵌入开始。让我们来看看如何将句子从法语翻译成英语。我还在此处添加了句首和句尾标记。到目前为止,为了简单起见,我只讨论了句子中单词的嵌入但是在许多序列的序列翻译任务中,在句子的开头或 SOS(开始符) 和句子的结尾或我在此示例中拥有的 EOS(结束符) 令牌也将很有用

  1. Transformer 的第一步是将这些嵌入输入到一个编码器块中,该编码器块在那里具有多头注意力。所以这正是你在上一张幻灯片中看到的,你输入了从嵌入和权重矩阵 W 计算出的值 Q K 和 V。然后这一层产生一个矩阵,可以传递到一个前馈神经网络。这有助于确定句子中有哪些有趣的特征。在 Transformer 论文中,这个块,这个编码块重复 N 次,N 的典型值为 6

  2. 所以在通过这个块大约六次之后,我们将把编码器的笨拙输入到解码器块中。 让我们开始构建解码器块。 而解码器块的工作是输出英文翻译。 所以第一个输出将是句子标记的开始,我已经在这里写下了。 在每一步,解码器块都会输入我们已经生成的翻译的前几个词。 当我们刚刚开始时,我们唯一知道的是翻译将以句子标记开头。 因此,开始一个句子标记被输入到这个多头注意力块中。 而就这一个标记,SOS 标记看到的句子用于计算这个多头注意力块的 Q K 和 V。

  • 第一个块,输出用于为下一个多头注意块生成 Q 矩阵。编码器的输出用于生成 K 和 V。所以这里是第二个多头滞留块,输入 Q、K 和 V 和以前一样。为什么是这样的结构?也许这是一种直觉,希望这里的输入是您迄今为止对句子的任何翻译。所以这也将询问句子的开头是什么,然后它会从 K 和 V 中提取上下文,这是从句子的法语版本翻译过来的。然后尝试决定要生成的序列中的下一个单词是什么。为了完成解码器块的描述,多头延迟块输出馈送神经网络的值。这个解码器块也将重复 N 次,可能是六次,在你获取输出的地方,将它反馈给输入,然后让它经历六次。

  • 这个新网络的工作是预测句子中的下一个单词。所以希望它会决定英文翻译中的第一个单词是 Jane,然后我们所做的就是将 Jane 输入到输入中。现在下一个查询来自 SOS 和 Jane,它说,鉴于 Jane,最合适的昵称是什么。让我们找到正确的键和正确的值,让我们生成最合适的下一个单词,希望这会生成 Visite。然后再次运行这个神经网络生成Africa,然后我们将Africa反馈到输入中。希望它随后在 septembe和此输入中生成,希望它生成句尾标记,然后我们就完成了。

这些编码器和解码器块以及它们如何组合以执行序列和序列翻译任务是转换架构背后的主要思想。在本例中,您看到了如何将输入的句子翻译成另一种语言的句子,以获得关于如何将注意力和网络结合起来以允许同时计算的一些直觉。但是除了这些主要思想之外,还有一些额外的花里胡哨可以改变它。让我通过这些额外的花里胡哨来简要介绍这些步骤,使变压器网络工作得更好。

  • 第一个是输入的位置编码。如果你回忆一下自我注意方程,就没有任何东西可以表明一个词的位置。这个词,在句子中的第一个词,在句子中的最后一个词的中间。但是句子中的位置对于翻译来说可能非常重要。因此,您对输入中元素的位置进行编码的方式是使用这些正弦和余弦方程的组合

  • 例如,假设您的词嵌入是一个具有四个值的向量。在这种情况下,词嵌入的维度 D 是 4。所以 X1、X2、X3 假设它们是四维向量。在这个例子中,我们将创建一个嵌入在相同维度向量中的位置。也是四维的,我将把这个位置嵌入称为 P1。假设第一个单词 Jane 的位置嵌入。

  • 在的这个等式中,pos position 表示单词的数字位置。所以对于Jane这个词,pos等于1,我这里指的是编码的不同维度。所以第一个元素响应 I 等于 0。这个元素 i 等于 1,i 等于 2,i 等于 3。所以这些是变量 pos 和 i 进入下面这些方程,其中 pos 是单词的位置。 i 从 0 到 3,d 等于 4 作为该因子的维度。位置编码对正弦和余弦的作用是创建一个唯一的位置编码向量。这些向量之一对于每个单词都是唯一的。所以编码freak(法语输入) 位置的向量 P3,第三个词将是一组四个值。它们会有所不同,然后使用的四个值对 Jane 的第一个单词的位置进行编码。这就是正弦和余弦曲线的样子。是的,i = 0,i = 1,i = 2,我等于 3。因为你有这些项和分母,你最终得到 i = 0。我们会有一些像这样的正弦或曲线,i = 1 会是匹配余弦。

  • 所以在表面 9°。 i cos 2 我们最终会得到像这样的较低频率的正弦曲线,i cos 3 为您提供匹配的余弦曲线。

因此,对于 P1,对于位置 1,您可以读取用于填充这四个值的值。 而对于不同位置的不同单词,现在可能是横轴上的 3。 您读取一组不同的值并注意到前两个值可能非常相似,因为它们的高度大致相同。 但是通过使用这些多个正弦和余弦,然后查看所有四个值,P3 将是一个与 P1 不同的向量。 所以将编码P1的位置直接加到X1上就这样输入了。 因此,每个词向量也受到词在句子中出现的位置的影响或颜色

编码块的输出包含上下文语义嵌入和位置编码信息。 然后嵌入层的输出是 d,在这种情况下是 4 乘以您母亲可以采用的最大序列长度。 所有这些层的输出也是这种形状。

除了将这些位置编码添加到嵌入中之外,您还可以将它们通过具有残差连接的网络传递。这些残留连接类似于您之前在树脂中看到的连接。在这种情况下,它们的目的是在整个架构中传递位置信息。除了位置编码之外,transformer 网络还使用了一个非常类似于 bash 规范的层。在这种情况下,它们的目的是传递位置信息,即位置编码。转换器还使用了一个称为腺组(adenome)的层。这与您已经熟悉的national layer非常相似。

就本视频而言,请不要担心差异。将其视为与 bash 规范非常相似的角色,只是有助于加快学习速度。而这个 bash 规范层只是添加规范层在整个架构中重复。最后,对于解码器块的输出,实际上还有一个线性层,然后是一个 softmax 层,一次一个单词地预测下一个单词。

如果您阅读有关变压器网络的文献,您可能还会听到称为掩码多头注意(mask multi -head attention)的东西。我们应该只把它画在这里。掩码多头注意力仅在训练过程中很重要,在该过程中您使用正确的法语到英语翻译的数据集来训练您的变压器。所以之前我们逐步介绍了 Transformer 如何执行预测,一次一个词,但它是如何训练的?假设您的数据集具有正确的法语到英语翻译,Jane Visite freak on September 和 Jane visits Africa in September。在训练时,您可以访问完整的正确英文翻译、正确的输出和正确的输入。并且因为您拥有完全正确的输出,所以您实际上不必在训练期间一次生成一个单词。相反,掩码的作用是屏蔽句子的最后一部分,以模仿网络在测试时或预测期间需要做的事情。换句话说,掩码多头注意力所做的一切只是反复假装网络已经完美翻译说出前几个单词并隐藏其余单词,看看是否给出了完美的第一部分翻译,神经网络是否可以准确预测序列中的下一个单词。以上是对转换架构的总结

由于论文注意力就是你所需要的,所以这个模型还有很多其他的迭代。

第五课第四周笔记4:Transformer Network变压器网络的更多相关文章

  1. 第五课第四周笔记1:Transformer Network Intuition 变压器网络直觉

    目录 Transformer Network Intuition 变压器网络直觉 Transformer Network Intuition 变压器网络直觉 深度学习中最令人兴奋的发展之一是 Tran ...

  2. 第五课第四周笔记3:Multi-Head Attention多头注意力

    Multi-Head Attention多头注意力 让我们进入并了解多头注意力机制. 符号变得有点复杂,但要记住的事情基本上只是你在上一个视频中学到的自我注意机制的四个大循环. 让我们看一下每次计算自 ...

  3. 第五课第四周笔记2:Self-Attention 自注意力

    Self-Attention 自注意力 让我们跳进去谈谈transformer的self-attention机制.如果您能了解本视频背后的主要思想,您就会了解变压器网络工作背后最重要的核心思想. 让我 ...

  4. 第五课第四周实验一:Embedding_plus_Positional_encoding 嵌入向量加入位置编码

    目录 变压器预处理 包 1 - 位置编码 1.1 - 位置编码可视化 1.2 - 比较位置编码 1.2.1 - 相关性 1.2.2 - 欧几里得距离 2 - 语义嵌入 2.1 - 加载预训练嵌入 2. ...

  5. Python之路第一课Day8--随堂笔记(socket 承接上节---网络编程)

    本节内容 Socket介绍 Socket参数介绍 基本Socket实例 Socket实现多连接处理 通过Socket实现简单SSH 通过Socket实现文件传送 作业:开发一个支持多用户在线的FTP程 ...

  6. Elasticsearch7.X 入门学习第五课笔记---- - Mapping设定介绍

    原文:Elasticsearch7.X 入门学习第五课笔记---- - Mapping设定介绍 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本 ...

  7. 红帽学习笔记[RHCSA] 第五课[用户、权限相关]

    第五课 用户权限 查看文件的权限 [kane@localhost /]$ ll total 36 ----------. 1 root root 1751 Aug 22 20:58 ~ lrwxrwx ...

  8. 斯坦福 CS183 & YC 创业课系列中文笔记

    欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅读 ApacheCN 面试求职交流群 724187166 ApacheCN 学习资源 目录 Zero to One 从0到1 ...

  9. NeHe OpenGL教程 第四十五课:顶点缓存

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

随机推荐

  1. JDBC管理事务

    一.事务概念:打包一起的多个步骤的业务操作,要么同事成功,要么同时失败,则需要用事务管理: 二.代码实现

  2. go中如果想要实现别人写的接口,如何保证确实实现了那个接口而不是错过了什么?

    在类型的实现方法上定义通用代码指令 var _ 要实现的接口  = (receiver类型)(nil) 比如要定义一个web处理程序 type  handler_def struct{} var _ ...

  3. VMware ESXi 7.0 U2 SLIC 2.6 & Unlocker 集成 Intel NUC 网卡、USB 网卡和 NVMe 驱动

    ESXi 7 U2 标准版镜像集成 NUC 网卡.USB 网卡 和 NVMe 驱动. 请访问原文链接:https://sysin.org/blog/vmware-esxi-7-u2-nuc-usb-n ...

  4. 【多线程】Android多线程学习笔记——线程池

    Java线程池采用了享元设计模式,在系统中维持一定数量的线程,用于处理异步或并发需求,在平时处理异步或并发任务时被广泛使用.这里基于JDK1.8和Android28来整理一些关于线程池的知识点. 一. ...

  5. 使用PHP获取图像文件的EXIF信息

    在我们拍的照片以及各类图像文件中,其实还保存着一些信息是无法直观看到的,比如手机拍照时会有的位置信息,图片的类型.大小等,这些信息就称为 EXIF 信息.一般 JPG . TIFF 这类的图片文件都会 ...

  6. PHP中的那些魔术常量

    之前我们已经了解了一些常用的魔术方法,除了魔术方法外,PHP还提供一些魔术常量,相信大家在日常的工作中也都使用过,这里给大家做一个总结. 其实PHP还提供了很多常量但都依赖于各类扩展库,而有几个常量是 ...

  7. 小程序跳转H5及其他页面

    一.小程序和公众号 答案是:可以相互关联. 在微信公众号里可以添加小程序. 图片有点小,我把文字打出来吧: 可关联已有的小程序或快速创建小程序.已关联的小程序可被使用在自定义菜单和模版消息等场景中. ...

  8. Hadoop-3.1.3安装

    0.创建用户并付权限 sudo useradd iwbdsudo passwd iwbd 配置iwbd用户具有root权限 修改/etc/sudoers文件,找到下面一行(91行),在root下面添加 ...

  9. 告别Kafka Stream,让轻量级流处理更加简单

    一说到数据孤岛,所有技术人都不陌生.在 IT 发展过程中,企业不可避免地搭建了各种业务系统,这些系统独立运行且所产生的数据彼此独立封闭,使得企业难以实现数据共享和融合,并形成了"数据孤岛&q ...

  10. Java基础系列(14)- JavaDoc生成文档

    JavaDoc JavaDoc是一种将注释生成HTML文档的技术,生成的HTML文档类似于Java的API,易读且清晰明了 参数信息 @author 作者名 @version 版本号 @since 指 ...