摘要:
- (序列转录模型:给一个序列,生成一个序列 eg:给一个中文,生成一个英文)
- 在主流的序列转录模型中,主要使用的是带有encoder和decoder的复杂的循环或者是卷积神经网络,表现的比较好的模型中间会使用attention的机制。
- 但是transformer的模型只使用了attention的机制,并用实验表明模型具有更好的并行性,而且需要的训练时间更少,并且transformer模型运用在一些泛化的模型上是比较好的
结论
- transformer模型是第一个仅仅使用注意力机制的模型,把之前的循环层换成multi-head attention 和 self-attention.(第一段);
- 对于翻译的任务,transformer模型表现的是比较好的(第二段);
- 同时作者认为transformer模型不仅仅运用到文字方面,可能未来会运用到图像,音频和视频等领域。
导言
- 当前时序模型使用最多的是rnn,lstm和gru。接下来说有两个主流的模型,一个是语言模型,一个是encoder-decoder模型(如果输出的结构化的数据比较多的时候)(第一段)
- rnn的特点,在rnn里,给他一个序列,rnn做的是从左往右一步步往前做,如果给他的是一个序列,他就一个词一个词的看,对于第t个词,会计算一个隐藏状态,ht,对于ht是由前面一个词的隐藏状态ht-1和当前第t个词共同决定的,这样就会把前面学到的历史信息方法存下;
- rnn的问题:rnn是一个词一个词实现的过程,无法并行,计算性能比较差;历史信息是一步步向后传递的,如果时序比较长,比较早期的时序信息就可能会丢掉;如果不想要丢掉,这样就要准备比较大的ht,并且每一步都要存储历史信息,比较占用内存的开销。
- attention在rnn上的运用
- 最后提出transformer是一个新的模型,不再使用循环网络,只使用attention,并行度高
相关工作
- (第一段)首先提出的是如何使用cnn来替换rnn,使得减少时序的计算,但使用cnn对于比较长的是时序难以建模,因为cnn做计算的时候使用的是一个比较小的窗口,比如3*3的像素块,如果两个像素隔得比较远,就需要很多的层进行卷积,一层层的将两个像素融合起来;
- 但是如果使用的是transformer里面的attention,一层就可以看到整个序列。卷积比较好的地方是可以做多个输出通道,每一个通道可以识别不同的模式,如果在transformer实现这种多通道的效果,提出了一种multi-head attention,实现多输出通道的效果。
- (第二段)self-attention并不是这篇文章的创新
- (第三段)memory networks
- (第四段)transformer是第一个只依赖于attention实现encoder-decoder的模型
模型架构
- encoder-decoder: encoder输入(x1,……xn)(可以是一个句子,如果是句子,那么xt就是句子中的第t个词),然后经过encoder之后,输出的是z=(z1……,zn),z1就是第一个词的对应的向量表示。原始的输入变成机器学习可以理解的向量。 decoder拿到encoder的输出,生成一个长为m的序列(n和m的大小可以相同可以不相同),与encoder不同的是,decoder是一个一个词生成的,而对于encoder可能是一次性看完整个句子。decoder的这种方法叫做自回归,前一个输出作为下一个的输入。生成yt的时候,可以拿到y1到yt-1的信息。
- layerNorm与batchNorm
- Attention:attention是一个将query和key-value对进行映射输出的一个函数。输出就是value的权重的加权和,而权重就是query和key的相似度。文章中使用的是注意力是Scaled Dot-Product Attention。
- 两种比较常用的自注意力机制,一种是additive attention,可以处理query和key不等长的情况,一种是dot-product attention,本文使用的方法和dot-product attention相似。
- Multi-Head Attention: 把整个query key value投影到低维,投影h次 ,再做h次的注意力函数,然后每一次的输出并在一起,再投影回来得到最终的输出。
- 注意力在模型中有三次应用:
- encoder的注意力(自注意力k,q,v都是自己):输入为n,输出为n,输出是输入的加权的和(输出内容的包含序列的语义特征)
- decoder的注意力(带有masked 自注意力) t时刻不会看到t后面的东西
- decoder(cross attention)的注意力(这里就不是自注意力):encoder的输出作为cross-attention的k和v,decoder上一层的输出作为cross-attention的q
- Position-wise Feed-Forward Networds,其实就是mlp。一个mlp对每一个词作用一次,mlp作用在最后一个维度 映射语义空间
- embedding and softmax 编码器需要一个embedding,解码器也需要一个embedding,softmax前也需要一个embedding
- positional encoding 因为attention是没有时序信息的,就是给一段话打乱顺序之后得到的attention的结果是一样的,所以需要加入时序信息。rnn中上一个的输出作为下一个的输入实际上就是一个时序的关系。attention中是在输入里加入时序信息。长为512的表示位置信息的向量加入数据中
- why self-attention
计算复杂度,并行度,同一个点到另一个点要走多少步 self-attention的优势
- training
- 做实验,英转德 英转法 运行方面使用的是gpu 参数
- 正则化:1、residual dropout 2、label smoothing