文章目录
文章前言
- 该篇博客只为了记录自己学习Transformer的笔记,供自己日后复习,也给需要学习Transformer的小伙伴一点参考。
- 博客的资料来自《Attention Is All You Need》以及Datawheal的学习资料
- 如果觉得有帮助到大家的,欢迎动动小手最下方一键三连哈谢谢
从问题出发来了解背景
问题一.为什么要提出Transformer模型
Transformer模型是基于注意力机制的,不用到RNN和CNN等神经网络结构,同时更加并行,训练时间更少。固有的序列性质排除了训练示例中的并行化, 因为内存限制限制了示例的批处理,使得这个约束在较长的句子中尤为致命。Transformer采取的这种注意力机制允许对依赖关系进行建模,而不去考虑它们在输出或者输入中的距离。
问题二.Transformer与LSTM最大的区别
LSTM的训练是迭代的,是一个字接一个字的来,当前这个字过完LSTM单元才可进行下一个字。
而Transformer的训练是并行的,所有字是同时训练的。这样就加快了计算效率,transformer使用了位置编码来理解语言的顺序,使用Self-Attention和全连接层来进行计算。
问题三.Transformer模型核心Self-Attention简介
自注意(Self-attention),有时也称为内部注意(intra-attention),是一种将单个序列的不同位置联系起来,以计算该序列的表示的注意机制。自我注意已经成功地用于各种任务,包括阅读理解、抽象总结、文本蕴涵和学习任务独立的句子表征。Transformer是第一个完全依靠自我注意来计算其输入和输出的表示而不使用序列对齐的rnn或卷积的转导模型。
从整体宏观上来理解Transformer
一.总的模型结构
Transformer模型主要由编码器(Encoder)和解码器(Decoder)构成,其中编码器和解码器可以有N个。
Encoder负责把自然语言序列映射为隐藏层,含有自然语言序列的数学表达,然后Decoder把隐藏层层再映射为自然语言序列,从而使得我们解决各种问题。
Encoder(编码器)和Decoder(解码器)
-
Encoder的输入是一个向量,输出也是一个向量。第一个Encoder输入的是词向量,后面层的Encoder的输入是前一个Encoder的输出。
-
Encoder由两部分组成:
Self-Attention Layer
Feed Forward Neural Network(全连接前馈神经网络,FFNN)
-
Decoder和Encoder类似,就只比Encoder多了一层Encoder-Decoder Attention层,这个层能帮助解码器聚集于输入句子的相关部分。