自注意力机制(self-attention)
一堆向量 a set of vector : 词语、图(每个节点可以看作一个向量)
一对一:Sequence Labeling
self-attention会吃一整个sequence的咨询
全连接是定长的,attention是不定长的
α计算关联性(自己也得和自己计算关联性)
过程:
b1 b2 b3 b4 是一致同时计算出来的,并不是按顺序
q和k作dot-product得到α,再进行激活得到α',之后与v相乘,最后进行累加得到b
矩阵乘法上的运作:
每一个a分别产生q,k,v(query,key,value)
自注意力机制:少了位置信息
multi-head self-attention
应用:NLP,Speech,Image
Self-attention VS CNN
CNN:可以看作是一种简化版的self-attention
Self-attention是一种复杂化的CNN
Self-attention VS RNN
RNN无法平行化
Transformer
输入:输出 m:n
应用:语言辨识,机器翻译,语音翻译
seq2seq moudle
encoder:给一排向量输出另外一排向量
做两次layernorm
Add & Norm = Residual+Layer norm
第一次:residual = a(self-attention处理之后的输出)+b(self-attention处理之前的输入)
第二次:residual = a(self-attention处理之后的输出/FC处理之前的输入)+c(FC处理之后的输出)
重复n次
seq2seq
decoder
decoder看到的输入是自己前一个时间的输出,会把自己的输出当作接下来的输入
传递过程中出现误差该怎么办?
masked self-attention(不考虑右边的信息)
self-attention
为什么masked遮掩?
decoder输出的信息是一个一个产生的,他只能考虑自己左边的信息,没有办法考虑右边的信息
我们并不知道正确的输出长度
从begin开始到end结束
中间的信息
两个输入来自encoder,还有一个来自decoder的输出
cross attention过程
训练 training
每次decoder产生一个信息类似做过一次分类问题
minimize cross entropy