非常著名的Transformer
一句话总结:替代传统的序列转化模型,只用attention(不使用rnn/cnn),可以并行化训练;Attention机制在输入和输出序列中都不会受距离的影响
抛弃循环recurrence模型,只用attention,抽取输入和输出序列之间的全局依赖关系(全局语义信息)
传统的优化方法:1. 计算量(指数增长) 2. 远距离依赖仍然无法捕捉
Transformer计算量减少,但是同时也减少了有效的(分辨率)resolution, Multihead attention来解决这个问题
第一个只用self-attention来算输入和输出序列的representation的模型
自回归:t-1会作用到t的输出
stacked self-attention
encoder decoder stacks
6个一模一样的层 维度统一成512维
残差连接+层归一化
decoder的self-attention做了微调,不能attend到之后的位置 右移一步, mask
attention就是把一个query和键值对映射到输出
query一个key,然后算出相似度,这个相似度作为权重,乘上value
得到value的加权和
点乘和加法都可以,但是点乘是矩阵运算更快
没有缩放因子,softmax的区域会推到梯度非常小的地方(饱和区)
multihead attention可以attend到不同位置的不同表示子空间(不同子空间语义)
重点:
1. encoder-decoder attention: query是前一个decoder输出,key和value是encoder输出,每一个decoder位置可以attend到整个输入序列
2. encoder自己有self-attention,q,k,v都是encoder前一层的输出,每一个位置可以attend到所有其他位置
3. decoder也有self-attention,每一个位置可以attend到之前(包括自己)的位置,在softmax之前mask掉非法连接
全连接层:两个线性层夹着ReLU层,可以看做两个kernel size为1的卷积
输入和输出token用参数可学习的embedding
position encoding可以用可学习的embedding
3个优点
计算量
并行化
长距离依赖