【论文阅读】Transformer阅读笔记
迪丽瓦拉
2025-05-29 15:56:35
0

Attention is all you need

nips

abstract

这个模型仅仅依赖于注意力机制,而没有用循环或卷积

提出了一个模型,在机器翻译这个任务上效果比较好,然后有比较好的泛化性

后续有bert,gpt;在图片上面视频上面可以用

Conclusion

把之前所有的循环层,全部换成了multi-headed self-attention

不仅仅在机器翻译这个方向上,还可以用在其他方向

introduction

2017年 RNN:LSTM,GRU

输出结构化,一般会用编码器和解码器的架构

rnn并行度比较差,历史信息是一步一步向后传递的

transformer是可以变形的,不再使用时序,纯用attention,并行度是比较高的

背景

如何使用卷积神经网络替换掉循环神经网络

卷积神经网络的问题

注意力机制可以一次看到所有的像素

卷积可以做多个输出通道,多头可以模拟多输出通道的效果

自注意力机制

模型架构

原始输入句子,编码器输出每一个词的向量表示

解码器里,词是一个一个生成的,过去时刻的输出可以作为当前时刻的输入(自回归)

编码器:输入编码,注意力层,残差连接,前馈神经网络,normalization

编码器

6个layer

一个layer有两个sub-layer: multi-head attention, fully connected feed-forward network

对每一个子层用残差连接 最后进入layer norm

batch norm是对每一个feature做normalization, layer norm是对每一个样本做normalization

对每一层,维度都是512

只有两个参数:d多少层、N维度有多大

解码器

n=6 每个层有两个子层

解码器做了一个自回归

带掩码的注意力机制

子层的定义:注意力层

注意力函数是query和key value对

output是value的加权和

权重等价于query和key的相似度,如果query和某个key更相似,那么那个key对应的value的权重会比较大一些

scaled dot-product attention

query和key做内积,作为他们的相似度

相似度算出来再除以根号dk,再放进softmax得到一个非负的加起来等于1的权重

query可以画成一个矩阵

通过两次矩阵乘法,可以并行计算矩阵元素

一般有两种注意力机制:加法的注意力机制(可以处理q、k不等长的情况)、点积的注意力机制

为什么是scaled,要除以一个根号dk,一般dk取512

在算输出的时候,不要用到后面的attention,所以要用mask,换成一个负数,进softmax就会变成0

子层的定义:multi-head

qkv进线性层,投影到比较低的维度

可以投影到多个不同的模式

然后做注意力机制

不同的输出 然后加起来concat

再接一个线性层

在实际中一般用8个头

如何使用注意力

三种不一样的注意力层

  1. encoder里的multi-header注意力

编码器的输入,句子长度是n,编码器的输入是n个长为d的向量

注意力层有三个输入:qkv

  1. 解码器的不同是mask

后面的东西要设成0

  1. 第三个不再是自注意力了

可以去挑你感兴趣的东西,attention可以在编码器和解码器中交换信息

position-wise feed-forward networks

中间隐藏层把维度扩大4倍

然后用一个残差把维度回去

MLP:每个mlp对每一个输入做运算,然后就得到一个输出

attention把序列里的信息抓取出来,做一次aggregation

投影MLP,对每个点独立做就可以了,因为输入向量的序列信息已经抽取完成,MLP以后就是我们要的语义空间的向量

rnn的思想:一般的MLP要把上一个向量的输出作为下一个向量的输入

不同的点在于如何传递序列的信息,在transformer是通过attention全局的拉到整个序列的信息

position encoding

attention是没有时序信息的

position encoding在输入里加入时序信息

任何一个词用一个长为512的向量来表示

position encoding把这个位置的信息+那个向量

就完成了在输入里加入信息

为什么用自注意力?

自注意力层的算法复杂度、顺序计算、信息从一个数据点到另一个数据点要多远

现在基于transformer的模型都是特别大特别贵

训练

任务:英语翻德语

bpe是可以把英语的词根提出来,token的字典,在英语德语之间是共享的

编码器和解码器的embedding可以用同一个东西

tpu比较适合做大的矩阵乘法

对每一个带权重的使用了大量的dropout对模型做正则化

label smooth:softmax是很难逼近于1,所以训练是比较难的,只要置信度是0.1就可以了

总结

之前视觉用cnn,nlp用rnn

但是transformer不仅可以在nlp,cv上也可以用

transformer可以把不同的数据融合起来,抽取到同一个语义空间,用文本、语音去训练一个更好更大的模型

attention可能用了一个归纳偏执,所以可以有一般性的结论,但是缺点是要用大模型,训练比较贵

相关内容