【深度学习】Transformer简介

 

近年来,Transformer模型在自然语言处理(NLP)领域中横扫千军,以BERT、GPT为代表的模型屡屡屠榜,目前已经成为了该领域的标准模型。同时,在计算机视觉等领域中,Transformer模型也逐渐得到了重视,越来越多的研究工作开始将这类模型引入到算法中。本文基于2017年Google发表的论文,介绍Transformer模型的原理。

 

一、为什么要引入Transformer?

最早提出的Transformer模型[1]针对的是自然语言翻译任务。在自然语言翻译任务中,既需要理解每个单词的含义,也需要利用单词的前后顺序关系。常用的自然语言模型是循环神经网络(Recurrent Neural Network,RNN)和卷积神经网络(Convolutional Neural Network,CNN)。

其中,循环神经网络模型每次读入一个单词,并基于节点当前的隐含状态和输入的单词,更新节点的隐含状态。从上述过程来看,循环神经网络在处理一个句子的时候,只能一个单词一个单词按顺序处理,必须要处理完前边的单词才能开始处理后边的单词,因此循环神经网络的计算都是串行化的,模型训练、模型推理的时间都会比较长。

另一方面,卷积神经网络把整个句子看成一个1*D维的向量(其中D是每个单词的特征的维度),通过一维的卷积对句子进行处理。在卷积神经网络中,通过堆叠卷积层,逐渐增加每一层卷积层的感受野大小,从而实现对上下文的利用。由于卷积神经网络对句子中的每一块并不加以区分,可以并行处理句子中的每一块,因此在计算时,可以很方便地将每一层的计算过程并行化,计算效率高于循环神经网络。但是卷积神经网络模型中,为了建立两个单词之间的关联,所需的网络深度与单词在句子中的距离正相关,因此通过卷积神经网络模型学习句子中长距离的关联关系的难度很大。

Transformer模型的提出就是为了解决上述两个问题:(1)可以高效计算;(2)可以准确学习到句子中长距离的关联关系。

 

二、Transformer模型介绍

如下图所示,Transformer模型采用经典的encoder-decoder结构。其中,待翻译的句子作为encoder的输入,经过encoder编码后,再输入到decoder中;decoder除了接收encoder的输出外,还需要当前step之前已经得到的输出单词;整个模型的最终输出是翻译的句子中下一个单词的概率。

【论文阅读】Transformer简介

现有方法中,encoder和decoder通常都是通过多层循环神经网络或卷积实现,而Transformer中则提出了一种新的、完全基于注意力的网络layer,用来替代现有的模块,如下图所示。图中encoder、decoder的结构类似,都是由一种模块堆叠N次构成的,但是encoder和decoder中使用的模块有一定的区别。具体来说,encoder中的基本模块包含多头注意力操作(Multi-Head Attention)、多层感知机(Feed Forward)两部分;decoder中的基本模块包含2个不同的多头注意力操作(Masked Multi-Head Attention和Multi-Head Attention)、多层感知机(Feed Forward)三部分。

【论文阅读】Transformer简介

在上述这些操作中,最核心的部分是三种不同的Multi-Head Attention操作,该操作的过程如下图所示,可以简单理解为对输入feature的一种变换,通过特征之间的关系(attention),增强或减弱特征中不同维度的强度。模型中使用的三种注意力模块如下:

  • Encoder中的Multi-Head Attention:encoder中的multi-head attention的输入只包含编码器中上一个基本模块的输出,使用上一个基本模块的输出计算注意力,并调整上一个基本模块的输出,因此是一种“自注意力”机制;
  • Decoder中的Masked Multi-Head Attention:Transformer中,decoder的输入是完整的目标句子,为了避免模型利用还没有处理到的单词,因此在decoder的基础模块中,在“自注意力”机制中加入了mask,从而屏蔽掉不应该被模型利用的信息;
  • Decoder中的Multi-Head Attention:decoder中,除了自注意力外,还要利用encoder的输出信息才能正确进行文本翻译,因此decoder中相比encoder多使用了一个multi-head attention来融合输入语句和已经翻译出来的句子的信息。这个multi-head attention结合使用decoder中前一层“自注意力”的输出和encoder的输出计算注意力,然后对encoder的输出进行变换,以变换后的encoder输出作为输出结果,相当于根据当前的翻译结果和原始的句子来确定后续应该关注的单词。

【论文阅读】Transformer简介

除核心的Multi-Head Attention操作外,作者还采用了位置编码、残差连接、层归一化、dropout等操作将输入、注意力、多层感知机连接起来,从而构成了完整的Transformer模型。通过修改encoder和decoder中堆叠的基本模块数量、多层感知机节点数、Multi-Head Attention中的head数量等参数,即可得到BERT、GPT-3等不同的模型结构。

 

三、实验效果

实验中,作者在newstest2013和newstest2014上训练模型,并测试了模型在英语-德语、英语-法语之间的翻译精度。实验结果显示,Transformer模型达到了State-of-the-art精度,并且在训练开销上比已有方法低一到两个数量级,展现出了该方法的优越性。

与已有方法的对比实验,显示出更高的BLEU得分和更低的计算开销:

【论文阅读】Transformer简介

模块有效性验证,模型中每个单次的特征维度、多头注意力中头的数量、基本模块堆叠数量等参数对模型的精度有明显的影响:

【论文阅读】Transformer简介

参考文献

[1] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, Illia Polosukhin. Attention Is All You Need. NIPS 2017.

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/180299.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第十一章 docker swarm集群部署

文章目录 前言一、安装docker1.1 解压1.2 配置docker 存储目录和dns1.3 添加docker.service文件1.4 docker 启动验证 二、docker swarm 集群配置2.1 关闭selinux2.2 设置主机名称并加入/etc/hosts2.3 修改各个服务器名称(uname -a 进行验证)2.4 初始化sw…

【SpringBoot篇】Spring_Task定时任务框架

文章目录 🌹概述🌺应用场景🎄cron表达式🛸入门案例🎍实际应用 🌹概述 Spring Task 是 Spring 框架提供的一种任务调度和异步处理的解决方案。可以按照约定的时间自动执行某个代码逻辑它可以帮助开发者在 S…

PTA 六度空间

“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示…

Springboot+vue的新冠病毒密接者跟踪系统(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频: Springbootvue的新冠病毒密接者跟踪系统(有报告)。Javaee项目,springboot vue前后端分离项目 项目介绍: 本文设计了一个基于Springbootvue的新冠病毒密接者跟踪系统,采用M(model)V(v…

【实用】PPT没几页内存很大怎么解决

PPT页数很少但导出内存很大解决方法 1.打开ppt点击左上角 “文件”—“选项” 2.对话框选择 “常规与保存” (1)如果想要文件特别小时可 取消勾选 “将字体嵌入文件” (2)文件大小适中 可选择第一个选项 “仅最入文档中所用的字…

【数组栈】实现

目录 栈的概念及其结构 栈的实现 数组栈 链式栈 栈的常见接口实现 主函数Test.c 头文件&函数声明Stack.h 头文件 函数声明 函数实现Stack.c 初始化SLInit 扩容Createcapacity 压栈STPush 出栈STPop 栈顶元素STTop 判断栈是否为空STempty 栈内元素个数STSzi…

ABB机 器 人 操 作 培 训

目 录 1 培训手册介绍 ---------------------------------------------2 2 系统安全与环境保护 ---------------------------------------------3 3 机器人综述 ---------------------------------------------5 4 机器人示教 --------------------------------------------12…

普通平衡树

题意:略,题中较清晰。 用二叉查找树来存储数据,为了增加效率,尽量使左子树和右子树的深度差不超过一,这样可以时间控制在logn,效率比较高。 右旋和左旋,目的是为了维护二叉树的操作&#xff0…

CSGO搬砖项目全面讲解 ,CSGO搬砖注意事项

Steam/CSGO游戏搬砖全套操作流程之如何选品(第二课) 一个游戏只要能搬,只要体量不够大,很快就会货币价格暴跌,直接凉凉。市面上的能稳定手动搬砖的游戏越来越少。所以对于兼职赚点外快的散人搬砖党来说,找一…

【Vue入门篇】基础篇—Vue指令,Vue生命周期

🎊专栏【JavaSE】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 🎄欢迎并且感谢大家指出小吉的问题🥰 文章目录 🍔Vue概述🎄快速入门🌺Vue指令⭐v-…

微信小程序登录获取不到头像和昵称解决办法

微信小程序登录获取不到头像和昵称主要原因是:小程序wx.getUserProfile接口被收回! 大家可以按照文档操作↓ PS: 针对小程序wx.getUserProfile接口将被收回后做出的授权调整 小程序文档中提出的调整说明 对于此次变化,现将小程…

如何满足BMW EDI项目的PKT需求?

近期宝马BMW(以下简称BMW)在其部分供应商之间试点推进PKT项目,BMW为什么要启动 PKT 计划呢? 业务系统全面升级统一全球所有宝马工厂的流程 宝马内部的物流供货流程 近期BMW PKT需求主要针对其内部物流供货流程展开: …

Android : Spinner(列表选项框) + BaseAdapter -简单应用

​​容器与适配器:​​​​​ http://t.csdnimg.cn/ZfAJ7 示例图: 实体类 Demo.java package com.example.mygridviewadapter.entity;public class Demo {private String text;private int img;public Demo(String text, int img) {this.text…

QQ怎么备份聊天记录?3个方法教你快速备份!

QQ聊天记录作为用户和亲人、好友以及同事之间沟通的凭证,可以帮助我们回忆起过去的交流内容。如果我们不小心误删了QQ聊天记录或者更换了新手机,那么这时候就需要备份聊天记录。qq怎么备份聊天记录呢?本文将介绍3个简单方法,帮助您…

Oracle-客户端连接报错ORA-12545问题

问题背景: 用户在客户端服务器通过sqlplus通过scan ip登陆访问数据库时,偶尔会出现连接报错ORA-12545: Connect failed because target host or object does not exist的情况。 问题分析: 首先,登陆到连接有问题的客户端数据库上,…

va-Q-tec实现温度敏感产品运输过程质量控制温控无忧

摘要:温度敏感产品运输对供应链全流程的温度质量要求较高,往往需要借助特殊的温湿度监测技术产品。va-Q-tec与虹科Comet合作,采用虹科Comet的U系列温度记录仪,为集装箱运输过程提供完整的温控包装解决方案。 一、客户背景 va-Q-…

算法通关村第十二关-白银挑战字符串经典题目

大家好我是苏麟 , 今天带来字符串相关的题目 . 大纲 反转问题字符串反转K个一组反转仅仅反转字母反转字符串中的单词 反转问题 字符串反转 描述 : 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s的形式给出。 题目 : LeetCode 344. 反转…

【PPspliT】ppt转pdf-保留过渡动画

网址 http://www.maxonthenet.altervista.org/ppsplit.php 下载安装 使用 再次打开ppt,就能在上方的选项栏里头看到了:

【Unity】接入MAX聚合广告SDK Applovin + GoogleAdmob

版本: Unity:2019.4.35f1gradle plugin: 4.2.0 (实际要7.0 对应build_tools:34.0.0) gradle: 6.7.1 (实际要7.0 对应build_tools:34.0.0) jdk: 1.8.0_241build_tools: 34.0.0 ndk: android-ndk-r19 文档: 6.0.1(Andro…

使用宝塔安装Alist

废话不多说,直接上教程,根据我的步骤一步一步来,肯定可以成功! 我这边使用一键安装的时候,一致报错,提示证书过期,无奈我就开始了手动安装,下面的教程也是手动安装的教程 首先&…