天天看点

论文笔记——Attention Is All You Need(Transformer)动机模型总结

文章目录

  • 动机
  • 模型
    • Encoder
    • Decoder
  • 总结

之前看了Google发表的Transformer的相关论文,虽然距离论文发表已经过去了三年,但是Transformer的效果仍然没有被超越。为了让自己之后能够迅速回忆起Transformer的相关内容,所以记录了这篇论文笔记记录一下自己阅读论文的笔记。

动机

在Transformer提出之前,正常情况下都是使用RNN模型来处理机器翻译任务。使用RNN来做机器翻译任务存在两个缺点:

(1)由于输入的sequence长度很长,所以对于当前词来说对其影响最大的是邻近的词。但是一个句子中对一个单词有影响的单词不一定就在其附近

(2)其次使用RNN模型其计算速度过慢,通常输出一个端到端的句子就需要耗费极大的内存同时难以进行并行化计算

而Google提出的Transformer模型就是为了解决这两个缺点:

1.使用Attention机制代替LSTM的各种控制单元,让模型去学习句子中各个单词的相互影响

2.Transformer由于具有参数共享的相同模型层,所以相较于RNN具有极高的并行化操作

模型

Transformer的总结架构如下

论文笔记——Attention Is All You Need(Transformer)动机模型总结

简单记录一下Transformer的架构(之后进行详细的补充)

总体来看Transformer分为两个部分:Input Module 与 Output Module

本质上Transformer就是个 Encode-Decode 的过程

Encoder

Input Module包括 N=6 个编码器(N=6实验效果最好)

Encode就是一个Attention的过程,三个矩阵 Q K V 就是这个Encoder的核心。

Input的原始输入是经过Embedding层后的词向量矩阵(一个句子)

经过三个权重矩阵得到每个词向量的 q 、k、 v (矩阵就是用来并行化计算的)

然后使用self-attention机制得到每个词向量的表示 z

使用残差网络加上原始向量再进行正则化喂入前向传播网络,就这样经过6层Encoder就得到输入句子的表示

Decoder

这一部分等之后再进行补充

总结

Transformer的一些细节在此就不再赘述,同时PyTorch也对Transformer进行了很好的封装(当然也封装的很死)。总的来说Transformer可以说是在AI相关领域完成任务很好的模型,根据李宏毅老师的说法,在科研界CNN与RNN能做的任务基本被Transformer洗过了一遍,由此可见Transformer的强大,当然Transformer在很多地方还是不能取代之前两个模型的。

附上一篇讲解Transformer非常好的博客Transformer详解

继续阅读