All you need is attention(Tranformer) --学习笔记

本文深入探讨了Transformer模型,包括其对比RNN和CNN的优势、多头注意力机制、Self-Attention以及Position-wise Feed-Forward Networks。通过Transformer的内部结构,解释了如何利用Attention解决序列到序列任务中的长距离依赖问题,并介绍了位置信息的表示方法。
摘要由CSDN通过智能技术生成

1、回顾

传统的序列到序列的机器翻译大都利用RNN或CNN来作为encoder-decoder的模型基础。实际上传统机器翻译基于RNN和CNN进行构建模型时,最关键一步就是如何编码这些句子的序列。往往第一步是先将句子进行分词,然后每个词转化为对应的词向量,那么每个句子都可以由这些词向量来构造对应的句子的序列表示向量。
(1)RNN递归进行:

yt=f(yt−1,xt)

不管是LSTM、GRU还是SRU,缺点是无法并行计算,速度慢,并且RNN无法特别好地学习到全局的信息,仍然无法彻底解决长距离依赖问题。
(2)CNN卷积:
窗口式遍历,比如卷积核大小为3,那么它的窗口就是3,可以捕获:

yt=f(xt−1,xt,xt+1)

诸如其他卷积也一样可以捕获到相对应核大小的窗口信息,还有一种空洞卷积可以使跨度增大但有间隔的方式去捕获更多的全局信息。并且CNN方便并行。

2、Transformer

纯注意力机制可以一步到位可以获得全局信息,具体方案:

yt=f(xt,A,B)

在这里插入图片描述
上图结构在原论文中是如下复述的:
Encoder: 编码器由6个相同的层堆叠在一起,每一层又有两个支层。第一个支层是一个多头的内部注意机制,第二个支层是一个简单的全连接前馈网络。在两个支层外面都添加了一个residual的连接,然后进行了layer nomalization的操作。模型所有的支层以及embedding层的输出维度都是dmodel = 512.

备注:
剩余(residual)连接等同于“跳过连接”。它们被用来允许梯度通过网络直接流动,而不通过非线性激活函数。非线性激活函数,本质上是非线性的,导致梯度爆炸或消失(取决于权重)。

跳过连接从概念上形成了一个“总线”,它沿着网络向右流动,反过来,梯度也可以沿着它向后流动。

每个网络层的“块”,如conv层、poolings等,在总线上的某个点上使用值,然后在总线上添加/减去值。这意味着块确实会影响梯度,反过来也会影响正向输出值。

现在,用一个直接连接替换其中一个块。如果你喜欢,可以用一个标识块替换,或者根本就没有。这是一个剩余/跳过连接。实际上,剩余的conv单元可能是两个系列单元,中间有一个激活层。

Decoder: 模型的解码器也是堆叠了六个相同的层。不过每层除了编码器中那两个支层,解码器还加入了第三个支层,如图中所示同样也用了residual以及layer normalization。

3、Attention层

Attention层分成了一下两种形式:
(1)Multi-Head Attention
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值