原理
背景:
结构:
- 注意decode的时候,除了encoder的编码C,还有前一时刻的输出y
- 基于attention的模型,一般都是encoder和decoder结构
- attention主要是关注输出的每一个step会focus在输入seq中的哪一个step
论文:attention is all you need
变种:
- 针对相关性计算公式可以变化,一般是相似距离
- 根据decoder不同的输出计算相关性,有si-1,也有si的
- 使用不同,有哪加权后的c更新h,也有拿c和ht-1作为下一个时刻的输入
- 还有计算相似性时encoder的h的范围长度
通用表示
- 其中K和V是一样的,都是encoder部分所有h组成的矩阵
- Q是decoder的h,
- QK表示加权后的系数,然后乘以V得到加权后的向量C
seq2seq+attention
- attention基本都是用在seq2seq结构上
- 一个encoder网络,一般是一个lstm,得到每一个step的输出;然后decoder网络的输入就是encoder的每一个step输出加上attention机制。
普通的seq2seq:
attention的seq2seq:
Self-Attentionn
背景: 替换传统的RNN+Attention结构,原结构计算耗时。self-attetion利用矩阵计算,理论上RNN能做的事情(处理序列),self-attention都可以替代掉,且速度更快。
每一个单词都会编码成q,k,v三个向量,然后乘以3个矩阵变成Q,K,V,3个矩阵是网络学的参数矩阵
QKV矩阵形式的计算,直接计算每个向量和所有向量的attention