Transformer论文精读

Transformer:Attention is all you need

Abstract:

在主流的序列转录模型(sequence transduction models:给一个序列,生成另一个序列),主要依赖循环或者卷积神经网络,一般是用encoder和decoder的架构。表现最好的模型通常在encoder和decoder之间加入一个注意力机制。

我们提出的一个简单的架构,Transformer,仅仅依赖注意力机制,没有用循环或者卷积神经网络。

在机器翻译任务上表现很好

Introduction:

Background:(相关工作)

1.如何使用卷积神经网络替换掉循环神经网络,这样做可以减少时序计算。但卷积神经网络对比较长的序列难以建模。如果对于跨度很长的序列,需要很多卷积层。但如果使用注意力机制,只用一层就可以。但卷积的好处是可以有多个输出通道,一个通道可以识别不同的模式。所以提出了多头注意力机制。

2.自注意力机制

3.memory network

Model Architecture

img

大多数神经序列转录模型都是一个encoder-decoder架构,这个encoder将一个输入(x1,…,xn)映射为Z=(z1,…,zn)。其中x1是一个词,z1是其对应的向量。编码器的输出(z1,…,zn)会作为解码器的输入。解码器的输出为一个长为m的序列(y1,…,ym)【例如输入10个英文单词,但对应的中文可能只有5个词】

解码器是一个自回归架构,过去时刻的输出又是当前时刻的输入。例如:预测y1,需要输入Z,预测y2,需要输入Z和y1。且输出是一个词一个词。

Encoder

编码器由六个一致的层堆叠形成,每层有两个子层,第一个是多头注意力机制,第二层是一个简单的MLP(positionwise fully connected feed-forward network)。在两个子层间有残差连接。最后是一个layer normalization。每个子层的输出为:LayerNorm(x+Sublayer(x))

在这里插入图片描述

因为残差连接输入和输出的维度要求是一样的,所以这里规定所有层的输出维度为512,包括embedding和两个子层。所以在Encoder中只有两个参数,层数N和维度d。

batch norm(对特征归一化):将一个小批量二维矩阵的数据,每一列转换为均值为0,方差为1的数据。做法是,将该特征列数据:

(每个数据 - 该列均值 / 该列方差)

layer norm(对样本归一化): 将一个小批量二维矩阵的数据,每一行转换为均值为0,方差为1的数据。

layer norm的好处是计算均值和方差较为稳定。因为每个样本的长度这里是不固定的,在batch norm中会很不稳定。

在这里插入图片描述

Decoder

解码器的基本结构和编码器类似,也是6个层堆叠形成,不同的是,每个子层有三部分组成。且每个子层间有残差连接,最后是一个layer normalization。解码器的第一个层是一个mask(掩码),其作用是确保预测t时刻的输出时,输入数据均来自t时刻之前。

Attention

主要是一个注意力函数,其作用是将一个query和一系列key-value对映射为一个output。所有这些query、key、value、output都是向量。output是value的一个加权和,所以output的维度和value是一样的。每个value对应的权重是由其key和query的相似度计算得来。不同注意力机制的权值计算方式不同。

Scaled Dot-Product Attention

1.queries和keys都是维度为 d k d_k dk的向量。values维度为 d v d_v dv

2.用query和所有key做点乘

3.分别除以 d k \sqrt{d_k} dk

4.用softmax转换为概率

实际运算时,会以矩阵的方式执行

在这里插入图片描述

有两种通用的注意力机制,分别是additive attention和dot-product(multiplicative)attention。Dot-product attention和这里的是一致的,除了加入了除以 d k \sqrt{d_k} dk 原因在于,当query和key的向量维度较小时,乘积结果一般不会过大或者过小,因此softmax的结果也不会集中在0或者1附近。但维度较大时,乘积结果过大或者过小,softmax后会靠近1或0,在这些区域,梯度较小。

additive attention的权值计算采用单隐藏层的前馈神经网络。两种机制的复杂度相似,但后者在时间和空间上效率更高。

在这里插入图片描述

Mask:因为注意力机制会看到所有时刻的信息,但在预测时刻t的输出时,只需要t时刻之前的信息。所以mask将 Q K d k \frac{QK}{\sqrt{d_k}} dk QK的t时刻之后的值全部变为一个非常小的负数,这样在Softmax后,这些位置的权值就为0。

Multi-Head Attention
for i in h:
	先将V、K、Q映射到低维 #每次映射都会学到不一样的方法,在投影后的空间中可以匹配不同模式
	head_i = attention(V、K、Q)  #将投影后的V、K、Q输入Attention
Concat(head_1,...,head_h) W^O #将每个头的结果concat,并将最后的结果再次投影到低维空间 
	

Position-wise Feed-Forward Networks

简单说就是一个单隐藏层的MLP,Position-wise指的是,这个MLP是针对每个词来做,每个词上都有一个MLP。

在这里插入图片描述

其中x作为encoder的输出,是一个词的向量,本文中长512,W1会将其映射到2048,W2又映射为512

Embedding and Softmax

embedding模型出现三次,分别在encoder和decoder以及softmax前的Linear层。且这三处模型拥有相同的权值,并且乘了 d m o d e l \sqrt{d_{model}} dmodel ,为了和后面的Positional Encoding在量级上匹配。

因为对于维度较大向量,归一化后,每个位置的值都比较小,而后续需要和Position 向量相加,后者范围在(-1,1),需要保证两者数量级一致。

Positional Encoding

因为输入的是一个序列,但Attention本身是不会涵盖时序信息的,本质是对输入向量的一个加权和,意味着如果将输入词打乱,得到的结果均相同。

这里的做法是,对每个词在句子中的位置,生成一个和Embedding同维度的向量,来表示位置信息。

在这里插入图片描述

最后将embedding和位置向量相加

Why self-attention

在这里插入图片描述

比较的第一列是每层模型的复杂度,第二列是每个操作需要等待前面的多长时间,越小越好,第三列是每个信息从一个数据点走到另一个数据点要多远,越小越好。

自注意力的矩阵相乘的时间复杂度 O ( n 2 d ) O(n^2d) O(n2d)。因为矩阵乘法,所以操作等待时间很短,而且Attention的输出是由输入的加权和组成,所以可以获取来自任意位置的信息。

最后的受限的自注意力,是指query只跟最近的r个邻居算相似度

Training Data and Batching(实验)

在WMT 2014英语-德语数据集,包含450万个句子对。将英语和德语的词根一起作为一个词典,包含37000个token,这样可以在 encoder和decoder中贡献权重。

2.再将三者送入之前

Conclusion

第一个仅仅依赖注意力机制的序列转录模型,用多头注意力(multi-headed self-attention)取代了在encoder-decoder架构中被通常使用的循环层。

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

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

相关文章

【Gitlab】Gitlab MAC M1通过Docker Desktop安装教程

目录 一、拉取镜像 二、配置容器 2.1 配置Volumes 2.2 配置Gitlab 2.3 配置完成,重启GitLab容器 2.4 查看GitLab的root密码 三、brew安装gitlab 3.1 安装命令 3.2 启动命令 参考资料 一、拉取镜像 docker pull yrzr/gitlab-ce-arm64v8 二、配置容器 2.1 …

wps:基本使用【笔记】

wps:基本使用【笔记】 前言版权推荐wps:基本使用如何去除复制文本的样式显示空格、换行、分节符快捷键设置字体添加章节添加奇数页分节符设置页边距设置页眉页脚设置页码 最后 前言 2024-6-5 23:10:12 以下内容源自《【笔记】》 仅供学习交流使用 版权…

折腾日记:如何在Mac上连接Esp32

个人博客地址 最近购买了一块Esp32单片机,在Mac环境上进行开发,并且成功点亮LED灯和连上屏幕,为什么会上手选择Esp32开发板,主要考虑它自带Wi-Fi和蓝牙,单价也不高,就算后面不玩了,也能转成物联…

【CS.AL】八大排序算法 —— 快速排序全揭秘:从基础到优化

文章目录 1. 快速排序简介1.1 定义1.2 时间复杂度1.3 相关资源 2. 最优的Partition算法 🔥2.1 Introsort简介2.2 过程示例 3. 非递归快速排序3.1 实现 4. 递归快速排序4.1 实现 5. 有问题的Partition5.1 实现 6. 三中位数主元选择6.1 实现 7. 总结 1. 快速排序简介 …

Typescript 中 tsconfig.json 无法写入文件,因为它会覆盖输入文件

先来看看问题 在开发ts项目的时候,包错提示无法写入文件 tsconfig.json无法写入文件"url"因为它会覆盖输入文件 这是tsconfig.json文件配置问题,需要加入下面的配置就好了: {"compilerOptions": {"outDir": …

python爬虫入门教程(一)

上一篇文章讲了爬虫的工作原理,这篇文章以后就要重点开始讲编程序了。 简单爬虫的的两个步骤: 使用HTTPRequest工具模拟HTTP请求,接收到返回的文本。用于请求的包有: requests、urllib等。 对接收的文本进行筛选,获取想要的内容。用户筛选文…

操作系统期末复习整理知识点

操作系统的概念:①控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;②提供给用户和其他软件方便的接口和环境;③是计算机中最基本的系统软件 功能和目标: ①操作系统作为系统资源…

专业场景化ChatGPT论文润色提示词指令,更精准、更有效辅助学术论文撰写

大家好,感谢关注。我是七哥,一个在高校里不务正业,折腾学术科研AI实操的学术人。可以添加我(yida985)交流学术写作或ChatGPT等AI领域相关问题,多多交流,相互成就,共同进步。 在学术写…

JVM类加载机制详解(JDK源码级别)

提示:从JDK源码级别彻底剖析JVM类加载机制、双亲委派机制、全盘负责委托机制、打破双亲委派机制的程序、Tomcat打破双亲委派机制、tomcat自定义类加载器详解、tomcat的几个主要类加载器、手写tomcat类加载器 文章目录 前言一、loadClass的类加载大概有如下步骤二、j…

Spring Boot通过自定义注解和Redis+Lua脚本实现接口限流

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

【CS.AI】AI引领编程新时代:深度探索GitHub Copilot

文章目录 引言0. TOP TAKEAWAYS 重要要点1. Copilot的基本功能2. 技术原理3. 优势与局限优势局限 4. 使用体验4.1 初次使用4.2 在 JetBrains 全家桶中使用 GitHub Copilot1. 安装插件2. 配置插件3. 使用 GitHub Copilot 4.3 日常开发4.4 体验与反馈 5. 对开发者生态系统的影响5…

深度学习500问——Chapter10:迁移学习(1)

文章目录 11.1 迁移学习基础知识 11.1.1 什么是迁移学习 11.1.2 为什么需要迁移学习 11.1.3 迁移学习的基本问题有哪些 11.1.4 迁移学习有哪些常用概念 11.1.5 迁移学习与传统机器学习有什么区别 11.1.6 迁移学习的核心及度量准则 11.1.7 迁移学习与其他概念的区别 11.1.8 什么…

【设计模式】行为型设计模式之 状态模式,带你探究有限状态机FSM的三种实现方式

什么是有限状态机 Finite state Machine FSM 简称状态机:状态机由三部分组成,状态(State) 事件(Event) 和动作(Action)组成。 其中事件也被称为转移条件,事件触发状态的转移和动作的执行。不过动作不是必须的,也可能只存在状态转…

人工智能与能源约束的矛盾能否化解

以下文章来源:澎湃新闻 人工智能技术在台前展示的是比特世界的算力、算法和数据,但其“轻盈的灵魂”背后则是土地、能源和水等物理世界“沉重的肉身”。根据本文三种情境的模拟测算,未来人工智能发展需要可持续的巨量能源支撑,能源…

DS:树与二叉树的相关概念

欢迎来到Harper.Lee的学习世界!博主主页传送门:Harper.Lee的博客主页想要一起进步的uu可以来后台找我哦! 一、树的概念及其结构 1.1 树的概念亲缘关系 树是一种非线性的数据结构,它是由n(n>0)个有限节点…

社区物资交易互助平台的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,基础数据管理,论坛管理,公告信息管理 前台账户功能包括:系统首页,个人中心,论坛,求助留言板,公…

OpenCV 双目相机标定

文章目录 一、简介1.1单目相机标定1.2双目相机标定二、实现代码三、实现效果参考资料一、简介 1.1单目相机标定 与单目相机标定类似,双目标定的目的也是要找到从世界坐标转换为图像坐标所用到的投影P矩阵各个系数(即相机的内参与外参)。具体过程如下所述: 1、首先我们需要…

王学岗鸿蒙开发(北向)——————(四、五、六)ArkUi声明式组件

普通组件 1,注意,如上图,build只能有一个根节点 2,Entry表示程序的入口 Component表示自定义的组件 Preview表示可以预览 3,图片存放的地方 4, Image组件最好只给宽度,给了高度又给宽度容易失真。 build() {Row() {/…

论文降痕指南:如何有效降低AIGC率

随着 AI 技术迅猛发展,各种AI辅助论文写作的工具层出不穷! 为了防止有人利用AI工具进行论文代写,在最新的学位法中已经明确规定“已经获得学位者,在获得该学位过程中如有人工智能代写等学术不端行为,经学位评定委员会…

使用 ESP32 和 PlatformIO (arduino框架)实现 Over-the-Air(OTA)固件更新

使用 ESP32 和 PlatformIO 实现 Over-the-Air(OTA)固件更新 摘要: 本文将介绍如何在 ESP32 上使用 PlatformIO 环境实现 OTA(Over-the-Air)固件更新。OTA 更新使得在设备部署在远程位置时,无需物理接触设…