Transformer论文阅读

news2024/11/24 20:46:21

Transformer论文阅读

    • 摘要
    • 结论
    • 1 Introduction (导言)
    • 2 Background
    • 3 Model Architecture
      • 3.1 Encoder and Decoder Stacks
        • Encoder
        • Layer Norm
        • Decoder
      • 3.2 Attention
        • 3.2.1 Scaled Dot-Product Attention
        • 3.2.2 Scaled Dot-Product Attention
        • 3.2.3 Applications of Attention in our Model
      • 3.3 Position-wise Feed-Forward Networks
      • 3.4 Embeddings and Softmax
      • 3.5 Positional Encoding
    • 4 Why Self-Attention
    • 5 Training

摘要

​ 主流序列转录模型使用rnn或cnn,使用encoder和decoder,在好的模型中通常也会使用注意力机制。本文提出一个简单的架构,仅仅依赖注意力机制,并行度更好,训练更快。在机器翻译上结果很好。

结论

1.本文提出的Transformer是第一个纯注意力机制的序列转录模型,使用multi-head self-attention替代了之前的r循环层RNN结构。

2.在机器翻译上,比其他架构都要快,效果较好。

3.使用在其他数据领域上,文本以外的数据。

1 Introduction (导言)

1.RNN、CNN以及encoder-decoder架构

2.RNN特点缺点:对第t个词会计算隐藏状态ht,由前一个词的ht-1和当前词t决定。

  • 时序一步步计算,难以并行
  • 历史信息一步步向后传续,时序信息较长时,容易遗忘

3.attentionj机制在rnn上的应用。

4.提出新的架构transformer

2 Background

如何使用CNN 替换RNN减少时序计算,对长序列难以兼容;CNN计算通过较小的窗口,长距离需要交多卷积层。但卷积优点多通道机制,可以识别不同的模式。提出多头注意力机制multi-head self-attention,模拟CNN多通道输出的效果。

3 Model Architecture

1.encoder-decoder

编码器:input为(x1,…xn),输出为z=(z1,…zn)的向量

解码器:拿到encoder输出,生成长为m的序列(y1,…ym),词一个个生成,自回归auto-regressive的方式来输出的,过去时刻的输出也会作为当前时刻的输入。

2.Transformer是一个encoder-decoder的架构,主要组成是self-attention和point-wise fully connected layer,结构如下:

在这里插入图片描述

3.1 Encoder and Decoder Stacks

Encoder

1.Encoder由N=6个一模一样的层组成;

2.每个层包含2个子层:①multi-head self-attention layer,②position-wise fully connected feed-forward network (就是个MLP);

3.每个子层,使用residual connection和layer norm来处理,子层的输出都可以表示为:LayerNorm(x + Sublayer(x))

为了方便残差连接,所有的层都使用d=512作为输出维度。

Encoder就俩超参数:N和d。这种设计直接影响了后面各种基于Transformer的模型设计,比如BERT,GPT等等,都主要调节这两个参数。

Layer Norm
  • Batch Norm

在这里插入图片描述

  • Layer Norm
    在这里插入图片描述

因为序列的长度会变化,如果使用batch norm的话,可能导致均值方差波动很大,从而影响效果,而layer norm则是逐个样本去进行的,就不会受影响。

Decoder

1.跟Encoder一样由N=6个一模一样的层构成;

2.每个层包含3个子层,比Encoder中多了一个multi-head attention layer;

3.为了防止Decoder在处理时之后输入,使用了一个mask的注意力机制。保证在t时间不会看到t时间以后输入。

3.2 Attention

将query和一些key-value对映射成一个输出的函数。

output是value的加权和,output D=value D

value的权重,value对应的key和查询的query的相似度计算而来。
在这里插入图片描述

3.2.1 Scaled Dot-Product Attention

queries 和 keys维度相等都是dk。value和output维度为dv。query和每个key做内积再除以根号dk ,在利用softmax得到一个权重。

在这里插入图片描述

常用两种注意力机制:

additive attention加性注意力机制,处理query和key代码不等长情况;

dot-product Attention点积注意力机制

与dot-product Attention区别和原因:

多了一个scale项

1.当dk不是很大,影响较小

2.当dk较大时,内积的值的范围就会变得很大,值较大的差距也会拉大,做出的softmax加靠近语义,其他值更加靠近0。值更加向两端靠拢,此时梯度较小。

在这里插入图片描述

在计算权重输出时,不要用到后面的值。加入mask,对于Qt和Kt之后计算的值,赋值为非常大的负数,在softmax时会变为0。

3.2.2 Scaled Dot-Product Attention

整个query、key、value投影到一个低维度 ,投影h次,再做h次注意力机制,每个输出contact 再投影回来得到最终输出。

在这里插入图片描述

投影到低维w,h次机会学习不同投影的方法,使得在投影进去的度量空间中能匹配不同模式需要的相似函数。类型与CNN多个输出通道。

3.2.3 Applications of Attention in our Model

三种使用情况

1.encoder,key、query、value是同一个。自注意力机制。

2.decoder, 自注意力机制+mask

3.decoder, 多头注意力机制,key 、value来自encoder输出,query是解码器下一个attention输入

3.3 Position-wise Feed-Forward Networks

对每个position(词)都分开、独立地处理。

在这里插入图片描述

attention:把整个序列信息抓取做aggregation。因此,投影做mlp中,只需要对每个点独立做就可以了。
在这里插入图片描述

Transformer是通过attention来全局地聚合序列的信息,通过MLP进行语义空间的转换;
RNN把上一时刻的信息传入下一时刻的单元,通过MLP进行语义空间转换。二者本质区别在于如何使用序列的信息。

3.4 Embeddings and Softmax

embedding:任何一个词,学习成一个向量d来表示

三个embedding:对input和output的token进行embedding,以及在softmax前面的Linear transformation中使用embedding

三个embedding使用相同的权重。

embedding都乘上了,

1.embedding学习时将每个向量的L2 norm,权重值归一化

2.维度越大的向量归一化后其单个值越小

3.时序信息是递增的整数

乘以根号d后放大,让embedding的数值范围position embedding的数值范围在一个scale
d m o d e l \sqrt{d_{model}} dmodel

3.5 Positional Encoding

attention没有序列信息,输入加入时序信息

周期不同的sin和cos函数来计算得到每个position的Embedding:
P E ( p o s , 2 i ) = s i n ( p o s / 1000 0 2 i / d m o d e l ) PE(pos,2i)=sin(pos/10000^{2i/d_{model}}) PE(pos,2i)=sin(pos/100002i/dmodel)

P E ( p o s , 2 i + 1 ) = c o s ( p o s / 1000 0 2 i / d m o d e l ) PE(pos,2i+1)=cos(pos/10000^{2i/d_{model}}) PE(pos,2i+1)=cos(pos/100002i/dmodel)

position encoding跟embedding相加,输入到模型中。

4 Why Self-Attention

1.计算复杂度

2.顺序的计算

3.两点传递信息的最大距离

在这里插入图片描述

5 Training

1.数据:英语-德语WMT2014,bpe,英语-法语

2.硬件:8个P100 GPU

3.优化器:adam.β1 = 0.9, β2 = 0.98 and = 10-9. lr 根据模型宽度的-0.5次方,warmup
在这里插入图片描述

4.正则化:

(1)Residual dropout:对每个子层的输出上进入残差和layer norm之前使用dropout;embedding层、positional encodings层使用dropout,Pdrop=0.1

(2)Label Smoothing :value ls = 0.1

下表展示了不同的模型结构超参数的性能差别:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HAProxy + Vitess负载均衡

一、环境搭建 Vitess环境搭建: 具体vitess安装不再赘述,主要是需要启动3个vtgate(官方推荐vtgate和vtablet数量一致) 操作: 在vitess/examples/common/scripts目录中,修改vtgate-up.sh文件,…

嵌入式Qt 布局管理器QBoxLayout

一.存在问题 二.布局管理器 三.布局接口函数的使用 TestBtn1.setText("Test Button 1"); TestBtn1.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); TestBtn1.setMinimumSize(160, 30); 使用setSizePolicy,那么 TestBtn1按钮 就会随着…

TypseScript再学习之类型别名和接口(10)

先看类型别名:使用关键字 type 声明,注意有等于号额 // 类型别名 使用关键字 type 声明,注意有等于号额 type Cat {name: string; }; let huahua: Cat {name: "花花", };type和interface不同之处在于:interface 是可以自动合并类型的&#…

源支付V7开源版2.99,修复各种提示错误

源支付V7开源版2.99,修复各种提示错误 加密说明:200拿来的,只有8.1这个文件加密,其他文件无任何加密,已修复各种提示错误 测试其他开源版安装提示错误,有几个文件是加密的 注:开发不易&#…

基于stm32的h5新建工程

目录 基于stm32的h5新建工程前言实验目的原理图部分搭建工程引脚配置界面:时钟配置界面工程选项卡: 编写代码实现点灯本文中使用的测试工程 基于stm32的h5新建工程 本文目标:基于stm32的基础实验 按照本文的描述,应该可以跑通实…

python学习16:python中的布尔类型和条件语句的学习

python中的布尔类型和条件语句的学习 1.布尔(bool)类型的定义: 布尔类型的字面量:True表示真(是、肯定) False表示假(否、否定) True本质上是一个数字记作1,False记作0 …

码支付个人支付宝永不掉线使用教程

​支付宝免CK添加操作稍微繁琐点,请耐心观看 此通道必须关闭你的余额宝自动转入功能,否则可能造成不跳转 支付宝添加的所有通道均支持H5免输入收款 第一步:打开支付宝开发平台,然后用你的支付宝注册登陆:https://op…

Node.js的Event Loop:六个阶段详解

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Ypay源支付码支付最新PC三合一监控软件实测有效

Ypay源支付码支付最新PC三合一监控软件实测有效 【免费授权】源支付正版授权_ 打造更专业的免签支付系统

深入理解HDFS工作原理:大数据存储和容错性机制解析

** 引言: ** 在当今数据爆炸的时代,存储和管理大规模数据成为了许多组织面临的重要挑战。为了解决这一挑战,分布式文件系统应运而生。Hadoop分布式文件系统(HDFS)作为Apache Hadoop生态系统的核心组件之一&#xff…

C语言-写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。

0xaaaaaaaa...等是什么&#xff1f;-CSDN博客https://blog.csdn.net/Jason_from_China/article/details/137179252 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #define SWAP(num) (((num & 0xAAAAAAAA) >> 1) | ((num & 0x55555555) << …

本地虚拟机服务器修改站点根目录并使用域名访问的简单示例

说明&#xff1a;本文提及效果是使用vmware虚拟机&#xff0c;镜像文件是Rocky8.6 一、配置文件路径 1. /etc/httpd/conf/httpd.conf #主配置文件 2. /etc/httpd/conf.d/*.conf #调用配置文件 调用配置文件的使用&#xff1a; vim /etc/httpd/conf.d/webpage.conf 因为在主配…

拌合楼管理软件开发(十三) 对接耀华XK3190-A9地磅(实战篇)

前言: 实战开整 目前而言对于整个拌合楼管理软件开发,因为公司对这个项目还处于讨论中,包括个人对其中的商业逻辑也存在一些质疑,都是在做一些技术上的储备.很早就写好了串口与地磅对接获取代码,也大概知道真个逻辑,这次刚好跟库区沟通,远程连接到磅房电脑,开始实操一下. 一、地…

mybatis的基于注解和xml的两种实现方式详解

文章简介 本文介绍了springbootmybatis实现数据库操作的两种实现方式&#xff0c;经测试均可运行使用。整体而言注解更加简便&#xff0c;但面对一些复杂查询&#xff0c;可能需要使用到注解方式。 注解方式 pom依赖&#xff1a; <dependencies><!--连接数据库--&…

BitVM2:比特币上的无需许可验证

1. 引言 前序博客有&#xff1a; 基于BitVM的乐观 BTC bridgeBitVM&#xff1a;Bitcoin的链下合约Bitcoin Bridge&#xff1a;治愈还是诅咒&#xff1f; 最初的 BitVM 设计仅限于两方设置。BitVM2结合了并行和冗余实例&#xff0c;以引入基于 1-of-n 诚实假设的多方配置。这…

排序第五篇 归并排序

一 简介 归并排序(Merge Sort) 的基本思想是&#xff1a; 首先将待排序文件看成 n n n 个长度为1的有序子文件&#xff0c; 把这些子文件两两归并&#xff0c; 得到 n 2 \frac{n}{2} 2n​ 个长度为 2 的有序子文件&#xff1b; 然后再把这 n 2 \frac{n}{2} 2n​ 个有序的子…

【数据结构与算法篇】动态顺序表及相关OJ算法题

【数据结构与算法篇】动态顺序表及相关OJ算法题 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;数据结构与算法&#x1f345; 目录 【数据结构与算法篇】动态顺序表及相关OJ算法题 1. 动态顺序表的实现 1.1 SeqList.h 头文件声明 1.…

【C语言终章】预处理详解(上)

【C语言终章】预处理详解&#xff08;上&#xff09; 当你看到了这里时&#xff0c;首先要恭喜你&#xff01;因为这里就是C语言的最后一站了&#xff0c;你的编程大能旅途也将从此站开始&#xff0c;为坚持不懈的你鼓个掌吧&#xff01; &#x1f955;个人主页&#xff1a;开敲…

【Effective Web】文件上传

文章目录 前言一、选择本地文件1.设计一个上传文件按钮2.FileReader读取文件内容 二、使用拖拽方式1.设计一个拖拽容器2.拖拽文件的相关事件回调 三、使用粘贴方式1.设计一个粘贴容器2.paste事件回调 四、总结 前言 前端无法像app一样直接操作本地文件&#xff0c;对本地文件的…

「Android高级工程师」BAT大厂面试基础题集合-下-Github标星6-5K

C、 com.android.provider.contact D、 com.android.provider.contacts 11.下面关于ContentProvider描述错误的是&#xff08;&#xff09;。 A、 ContentProvider可以暴露数据 B、 ContentProvider用于实现跨程序共享数据 C、 ContentProvider不是四大组件 D、 ContentP…