Transformer的个人笔记

0. 引言

Google的论文《Attention is all you need》一提出,为nlp的很多任务翻开了新的一页。无论是知乎还是博客上都有很多生动具体的见解,我这里会结合自己阅读论文以及代码实现,对Transformer的一些个人理解和个人思考。

先来看一下这篇论文的摘要:

首先在性能上来看,他的提升真的很给力,进行了大幅度的提升,主要提升是在机器翻译任务上。
最明显的特点是区分CNN/RNN,在前向传播上只使用了Attetion机制来模拟语言模型的一种结构。

1. 传统的Seq2seq缺点

RNN网络存在很明显的缺点:

  1. 首先很难像CNN一样并行化处理,这样无法捕捉并行化特征。
  2. 其次很难想CNN一样做的很深,像CNN一样做很多层在RNN中实现效果不好
  3. 长距离依赖问题一直没有得到很好的解决,很难建立指代信息。

2. Transformer的优点

我们首先开门见山,说一下Transfomer的优势:

  1. 高度并行化网络,训练速度提升
  2. 层次化信息的捕捉,编码段端或者解码端都可以做到六层,可以做到比较深。(残差网络)
  3. 上下文信息的丰富和引入(self-attention)

Transformer本质上还是一个seq2seq的模型,由encoder和decoder组成。encoder和decoder都是基于自注意力机制构成的结构(非RNN)。编码器和解码器都是一组编码组件和一组解码组件,原论文中所提出的具体数目是6个

3. Transformer的流程

3.1 word embedding + position embedding

将每个输入的词汇转化成向量,也称为词嵌入/词向量(word embedding),嵌入仅发生在最底部的编码器中。Transformer抛弃了RNN,而RNN最大的优点就是在时间序列上对数据的抽象,所以文章中作者提出两种Positional Encoding的方法,将encoding后的数据与embedding数据求和,加入了相对位置信息。

3.2 Encoder (Multi-head self-attention + Feed Forward Neural Network)

对于每个编码器来说,他们的结构均相同(但它们不共享权重)。
每一层都分为两个子层:
 编码器的输入首先流经自注意力层,该层可以编码出同一个句子中不同词语之间的关系。
 自注意力层的输出之后便是一个简单的全连接神经网络

Transformer的关键属性:每个位置的单词都流经编码器中自己的路径(计算无先后关系)。所以,运算速度比一般的循环神经网络(RNN)要快很多。

如何计算自注意力?对于每个单词,创建一个查询向量、键向量和一个值向量,称为 Q K V QKV QKV

如何计算自注意力?通过将q向量与各个单词的k向量的乘积来计算分数。分数越高,说明关系越密切。将分数缩小,然后通过 s o f t m a x softmax softmax计算对应概率。将每个 V V V向量乘以概率值加权求和,生成向量前馈到神经网络。

(实际运算中,以矩阵形式运行,加快运算速度)。

多头机制:论文通过添加一种称为“多头”注意力的机制,进一步完善了自注意力层。扩展了模型专注于不同层面的能力。提供了多个“表示子空间”。在多头机制下,有多组查询/键/值权重矩阵(Transformer使用八个头,因此每个编码器/解码器最终得到八组)。

3.3 Decoder (Masked Multi-head attention + Encoder-decoder attention + Feed Forward Neural Network)

解码器:还有encoder和decoder之间的注意力层,来帮助解码器将注意力放在输入语句的相关部分上(类似于seq2seq模型中的注意力)。

为什么要加masked?因为transformer模型训练的时候,直接把ground truth整个序列作为decoder端的输入。

编码器,解码器如何协同工作?
编码器首先处理输入序列。顶部编码器的输出转换为注意力向量K和V的集合。每个解码器将在其“编码器-解码器注意”层中使用它们,这有助于解码器将注意力集中在输入序列中的适当位置。(解码器结构:自注意力+编码器-解码器注意+前馈层)

在这里插入图片描述

解码器中的自注意力层与编码器中的自注意力层的不同:掩码:在解码器中,仅允许自注意力层参与输出序列中的较早位置;“编码器-解码器注意”层的工作方式与多头自注意力类似,不同之处在于它从编码器的输出中获取键和值矩阵(context)

3.4 Linear & SoftMax

在这里插入图片描述

最终的线性层和Softmax层(词典大小的多分类)。

4 Self-ATT常见问题和BERT 常见问题

以后面试的时候会整理(WX收藏夹)

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值