Transformer在2017年由Google在题为《Attention Is All You Need》的论文中提出。Transformer是一个完全基于注意力机制的编解码器模型,它抛弃了之前其它模型引入注意力机制后仍然保留的循环与卷积结构,而采用了自注意力(Self-attention)机制,在任务表现、并行能力和易于训练性方面都有大幅的提高。
transformer过程
在 Transformer 出现之前,基于神经网络的机器翻译模型多数都采用了 RNN的模型架构,它们依靠循环功能进行有序的序列操作。虽然 RNN 架构有较强的序列建模能力,但是存在训练速度慢,训练质量低等问题。
与基于 RNN 的方法不同,Transformer 模型中没有循环结构,而是把序列中的所有单词或者符号并行处理,同时借助自注意力机制对句子中所有单词之间的关系直接进行建模,而无需考虑各自的位置。具体而言,如果要计算给定单词的下一个表征,Transformer 会将该单词与句子中的其它单词一一对比,并得出这些单词的注意力分数。注意力分数决定其它单词对给定词汇的语义影响。之后,注意力分数用作所有单词表征的平均权重,这些表征输入全连接网络,生成新表征。
和经典的 seq2seq 模型一样,Transformer 模型中也采用了 encoer-decoder 架构。上图的左半边用 NX 框出来的,就代表一层 encoder,其中论文里面的 encoder 一共有6层这样的结构。上图的右半边用 NX 框出来的,则代表一层 decoder,同样也有6层。
定义输入序列首先经过 word embedding,再和 positional encoding 相加后,输入到 encoder 中。输出序列经过的处理和输入序列一样,然后输入到 decoder。
最后,decoder 的输出经过一个线性层,再接 Softmax。
这便是 Transformer 的整体框架。
[整理] 聊聊 Transformer
从头开始了解Transformer
BERT大火却不懂Transformer?读这一篇就够了
可视化理解Transformer结构
《Attention is All You Need》浅读(简介+代码)
详解Transformer (Attention Is All You Need)
深度学习中的注意力机制
Attention? Attention!
理解NLP中网红特征抽取器Tranformer
为节约而生:从标准Attention到稀疏Attention
OpenAI提出新方法Sparse Transformer,大幅度提高长程序列数据建模能力
放弃幻想,全面拥抱Transformer!NLP三大特征抽取器(CNN/RNN/TF)比较
经典算法·从seq2seq、attention到transformer
Google机器翻译新论文-更好更高效的演化transformer结构,提升机器翻译到新水平
Transformer 模型的 PyTorch 实现
搞懂Transformer结构,看这篇PyTorch实现就够了(上)
推理速度快千倍!谷歌开源语言模型Transformer-XL