新的深度学习模型被引入的速度越来越快,有时很难及时的了解所有新技术。 也就是说,已经证明一种特定的神经网络模型对于常见的自然语言处理任务特别有效。

该模型称为Transformer,我们将分为两个部分详细介绍它

第1部分:序列到序列学习和Attention机制

序列到序列(Seq2Seq)是一个神经网络,它将给定的元素序列(例如句子中的单词序列)转换为另一个序列。
Seq2Seq模型特别擅长翻译,将一种语言的单词序列转换为另一种语言的不同单词序列。这种类型的模型的一个流行选择是基于长期短期记忆(LSTM)的模型。使用依赖序列的数据,LSTM模块可以在记住(或忘记)发现重要(或不重要)的部分的同时赋予序列含义。

Seq2Seq模型由一个编码器和一个解码器组成。编码器采用输入序列并将其映射到更高维的空间(n维向量)中。该抽象向量被馈送到解码器,该解码器将其转换为输出序列。输出序列可以是另一种语言,符号,输入副本等。

想象编码器和解码器是只能说两种语言的人工翻译。他们分别会两个不同的母语(例如德语和法语),而第二语言则是假想的语言。为了将德语翻译成法语,编码器将德语句子转换为它知道的另一种语言,即虚构语言(比如第二语言都是英语)。由于解码器能够读取虚构的语言,因此它现在可以从该语言翻译成法语。该模型(由编码器和解码器组成)可以一起将德语翻译成法语!

假设最初,无论是编码器还是解码器,都不会流利地使用虚构语言(都还在学英语)。要学习它,我们将通过许多示例来训练他们(模型)。

我们需要更多的技术细节,以使“transformer”更容易理解:Attention(在之前的文章具体介绍过)。Attention机制着眼于输入序列,并在每个步骤中确定序列的其他部分很重要。听起来很抽象,但是让我用一个简单的例子来说明一下:阅读本文时,您始终专注于阅读的单词,但同时您的大脑仍将文本的重要关键字保留在内存中以提供上下文。

Attention机制在给定序列上的工作原理类似。对于人类编码器和解码器的示例,请想象,编码器不仅写下了虚构语言的句子翻译,还写下了对句子语义重要的关键字,并将其提供给解码器。除了常规翻译。这些新关键字使解码器的翻译更加轻松,因为它知道句子的哪些部分很重要,哪些关键术语为句子提供了上下文。

换句话说,对于LSTM(编码器)读取的每个输入,Attention机制会同时考虑其他几个输入,并通过为这些输入分配不同的权重来确定哪个输入很重要。然后,解码器将输入的句子和Attention机制提供的权重作为输入。

第2部分:Transformer

它使用了我们之前看到的transformer机制。像LSTM一样,Transformer是一种通过两个部分(编码器和解码器)将一个序列转换为另一序列的体系结构,但它与先前描述/现有的序列到序列模型不同,因为它并不暗示任何递归网络( GRU,LSTM等)。

到目前为止,循环网络被认为是捕获序列中及时依存关系的最佳方法之一。但是,工程师们发现,仅具有注意力机制而没有任何RNN(递归神经网络)的体系结构可以改善翻译任务和其他任务的结果!一个介绍自然语言任务的改进是由一个介绍BERT的团队提出的:BERT:深度双向变压器的预训练,以进行语言理解。(在之前的文章介绍过Bert可以去查看)

那么,什么是Transformer?

编码器在左侧,解码器在右侧。 编码器和解码器均由可以相互堆叠多次的模块组成,这在图中用Nx描述。 我们看到模块主要由多头attention和前馈层组成。 输入和输出(目标句子)首先被嵌入到n维空间中,因为我们不能直接使用字符串。

该模型的一个微小但重要的部分是不同单词的位置编码。 由于我们没有可以记住序列如何馈入模型的循环网络,因此我们需要以某种方式赋予序列中的每个单词/部分一个相对位置,因为序列取决于其元素的顺序。 这些位置将添加到每个单词的嵌入表示形式(n维向量)中。

让我们仔细看一下模型中的这些“多头attention”图块:


让我们从左侧的attention机制描述开始。 它不是很复杂,可以用以下等式描述:

Q是一个包含查询的矩阵(序列中一个单词的向量表示),K是所有键(序列中所有词的向量表示),V是值,它们也是所有查询的向量表示 序列中的单词。 对于编码器和解码器,多头attention模块,V由与Q相同的单词序列组成。但是,对于考虑到编码器和解码器序列的attention模块,V与Q表示的序列不同。

为了简化一点,我们可以说将V中的值与一些注意权重a相乘并相加,其中我们的权重定义为:

这意味着权重a由序列中的每个单词(由Q表示)如何受到序列中所有其他词(由K表示)的影响来定义(就是上下文)。

此外,将SoftMax函数应用于权重a,以使其分布在0到1之间。然后,将这些权重应用于V中引入的序列中的所有单词(对于编码器和解码器,向量与Q相同,但对于向量具有编码器和解码器输入的模块)。

右图描述了如何将这种注意力机制并行化为可以并行使用的多种机制。注意机制通过Q,K和V的线性投影重复多次。这使系统可以从Q,K和V的不同表示中学习,这对模型很有帮助。这些线性表示是通过将Q,K和V乘以在训练过程中获得的权重矩阵W来完成的。

对于attention模块在结构中的每个位置,那些矩阵Q,K和V是不同的,这取决于它们是在编码器,解码器中还是在编码器和解码器之间。原因是我们要参加整个编码器输入序列或一部分解码器输入序列。连接编码器和解码器的多头注意模块将确保将编码器输入序列与解码器输入序列一起考虑到给定位置。

训练

如何训练这种“野兽”?对Seq2Seq模型的训练和推断与通常的分类问题有点不同。transformer也是如此。

我们知道,要为翻译任务训练模型,我们需要两个互不相同的语言的句子。一旦有很多成对的句子,我们就可以开始训练模型。假设我们想将法语翻译成德语。我们的编码输入将是法语句子,而解码器的输入将是德语句子。但是,解码器输入将向右移动一个位置。 为什么?

一个原因是我们不希望我们的模型在训练期间学习如何复制解码器输入,但是我们希望了解给定编码器序列和模型已经看到的特定解码器序列,我们可以预测下一个字/字符。

如果我们不改变解码器的顺序,则模型将学习简单地“复制”解码器输入,因为位置i的目标字/字符将是解码器输入中的字/字符i。因此,通过将解码器输入移位一个位置,我们的模型需要预测仅在解码器序列中仅看到字/字符1,…,i-1的位置i的目标字/字符。这会阻止我们的模型学习复制/粘贴任务。我们用开始标记填充解码器输入的第一个位置,类似地,我们将句子结尾标记附加到解码器输入序列以标记该序列的结尾,并且还将它附加到目标输出语句。一会儿,我们将看到这对推断结果有何用。

对于Seq2Seq模型和Transformer都是如此。除了右移之外,transformer在第一个多头注意模块中的输入上加上一个Mask。这是特定于Transformer体系结构的,因为我们没有RNN可以顺序输入序列。在这里,我们将所有内容一起输入,如果没有mask,则多头attention会考虑每个位置的整个解码器输入序列。

我们想要进行损失计算的目标序列只是解码器输入(德语句子)而不进行移位,并且在末尾带有序列结束标记。

用这些模型推断不同于训练,这是有道理的,因为最后我们要翻译法语句子而不用德语句子。这里的窍门是为输出序列的每个位置重新馈送我们的模型,直到遇到句子结束标记。

更多分步方法将是:

  1. 输入完整的编码器序列(法语句子),并作为解码器输入,我们采用一个空序列,在第一个位置仅带有一个句子开始标记。这将输出一个仅包含第一个元素的序列。
  2. 该元素将被填充到我们的解码器输入序列的第二个位置,该位置现在有一个句子开始标记和一个第一个单词/字符。
  3. 将编码器序列和新的解码器序列输入模型。将输出的第二个元素放入解码器输入序列。

重复此过程,直到您预测句子的结尾标记,它标志着翻译的结束。

我们看到我们需要遍历我们的模型才能翻译我们的句子。

机器学习的transformer相关推荐

  1. 【李宏毅机器学习】TransFormer框架基础储备知识(p51) 学习笔记 | 全程手码,放心食用

    全文总结于哔哩大学的视频:李宏毅2020机器学习深度学习(完整版)国语 2020版课后作业范例和作业说明在github上:点击此处 李宏毅上传了2020版本的机器学习视频和吴恩达的CS229机器学习相 ...

  2. 【李宏毅机器学习】Transformer(p23) 学习笔记

    老二次元了... 文章目录 Transformer Sequence 用CNN取代RNN Self-Attention Self-attention is all you need. 流程 Self- ...

  3. 【机器学习】李宏毅——自监督式学习

    1.BERT简介 首先需要介绍什么是自监督学习.我们知道监督学习是有明确的样本和对应的标签,将样本丢进去模型训练并且将训练结果将标签进行比较来修正模型,如下图: 而自监督学习就是没有标签也要自己创建监 ...

  4. 机器学习的五大潜力趋势!

    摘要:过去一年,无论是在技术层面还是商业应用层面,机器学习和人工智能都有了巨大进展,那么到了 2023 年,又有哪些技术是最热门的呢? 链接:https://serokell.io/blog/ai-m ...

  5. Transformer(multi-head attention)

    文章目录 RNN CNN ATT self-attention(K/Q/V) Multi-head Attention 顺序问题 seq2seq with attention Transformer ...

  6. 快手基于 Flink 构建实时数仓场景化实践

    摘要:本文整理自快手数据技术专家李天朔在 5 月 22 日北京站 Flink Meetup 分享的议题<快手基于 Flink 构建实时数仓场景化实践>,内容包括: 快手实时计算场景 快手实 ...

  7. (一)深度学习项目代码结构

    1.代码结构 参考链接:李宏毅2021年机器学习HW2 Phoneme Classification 2.代码细节 获得运行设备 这两种写法的返回值都是字符串 #check device def ge ...

  8. 8篇报告|马斯克称Chat GPT好得惊人

    8篇报告|马斯克称Chat GPT好得惊人‼️ 最近,连续刷屏的AI应用ChatGPT火爆全球,成为科技圈第一大热潮. 马斯克在推特上评价 ChatGPT 称:"ChatGPT 好得惊人.我 ...

  9. 堪比当年的LSTM,Transformer引燃机器学习圈:它是万能的

    视学算法报道 转载自公众号:机器之心 作者:魔王 谷歌研究科学家 David Ha:Transformer 是新的 LSTM. 2017 年 6 月谷歌发布论文<Attention is All ...

  10. GNN与Transformer融合促进药物发现 | 2022几何图机器学习展望

    导读:几何机器学习和基于图的机器学习是当前最热门的研究课题之一.在过去的一年中,该领域的研究发展迅猛.在本文中,几何深度学习先驱 Michael Bronstein 和 Petar Veličkovi ...

最新文章

  1. liunx内核编译安装
  2. hdu4279 找规律+小想法
  3. eclipse安装weblogic Server服务器
  4. IntelliJ IDEA 使用随笔
  5. ensp 查看配置命令
  6. 学Python必须背的42个常见单词
  7. 精度提升第一步:形状各异测区的像控点布设方案
  8. [msi]安装包无法安装,提示没有找到源文件xxx.cab
  9. 干了四五年Android 开发了,如何突破成长中的技术瓶颈期?
  10. 拓端tecdat|R语言highfrequency高频金融数据导入
  11. Matlab线型、标记符号、颜色
  12. 一、绘制不同类别特征均值标准差直方图
  13. iceman写的关于Debug API的文章,特别是关于CONTEXT结构的描述,有空再翻译(转贴)
  14. 学习FPGA的网站推荐
  15. 你有价值,你的爱才有价值
  16. Flask异步渲染管理后台局部页面
  17. 洛谷-Cow Gymnastics B
  18. python合并pdf_python如何将多个PDF进行合并
  19. 关于R语言和社交网络分析的几篇文章
  20. 2.2 齐次方程组基础解系

热门文章

  1. 技术笔试面试题(下)
  2. 【Unity3D日常开发】应粉丝邀约,写一篇单例模式在Unity的实际应用,记得一键三连哦
  3. C2. Skyscrapers (hard version)(单调栈、dp)
  4. php 支付宝用户信息授权,支付宝登录获取用户信息授权
  5. 数据可视化——tableau 数据报表样例(报表模板)
  6. 佳能2900打印机与win10不兼容_佳能LBP2900 64位驱动下载|佳能LBP2900打印机64位驱动支持Win10/Win7 下载_当游网...
  7. 特斯拉开火,状告5名前员工、小鹏汽车、Zoox身陷漩涡...
  8. P1067 多项式输出 【模拟】
  9. PC设置切换Fn功能键
  10. 信号的频谱分析实验matlab,实验三 用FFT对信号进行频谱分析及MATLAB程序