【機器學習2021】自注意力機制 (Self-attention)
Transformer: Attention is all you need
Self-attention input可以是hidden layer的output
1. Find the relevant vector in a sequence
计算相关度(relevant) α \alpha α的方法: Dot-product & Additive
每一个 α \alpha α 乘上不同的矩阵得到 q , k , v q, k, v q,k,v
其中,矩阵 W q , W k , W v W^q, W^k, W^v Wq,Wk,Wv是网络learn出来的
(self-attention中这是唯三需要learn的参数,其它都不用
2. 计算attention score(一排 α \alpha α)
其他所有变量对于该变量的相关度 α \alpha α,包括自己
这里都是Dot-product,直接q点乘k
可以变成矩阵相乘(下图右下),得到相关度矩阵A
3. 取softmax, α \alpha α 变成 α ’ \alpha^{’} α’( A A A 变成 A ’ A^{’} A’)
A’ :Attention matrix
用softmax没什么道理,Relu都可以的
4. 基于attention score提取重要的相关信息
计算了
b
=
∑
a
1
,
i
′
v
i
b = \sum a_{1,i}^{'}v^i
b=∑a1,i′vi
,其中 v v v由 a a a计算得到 (记得对自己也要算)
attention越大, b b b 会越接近其中的 v v v
Self-attention 是包括了 CNN
Self-attention更加flexible,所以:
小数据上CNN好,大数据上Self-attention好
Self-attention 取代了 RNN (maybe)
- Self-attention的注意力全局,RNN记忆力较短
- RNN非平行化,按顺序生成;Self-attention一次平行处理完(更快了)
f-attention的注意力全局,RNN记忆力较短 - RNN非平行化,按顺序生成;Self-attention一次平行处理完(更快了)