Self-Attention for CNN
2021-07-21 16:13:27
# 机器学习
$$Self-Attention(X)_t= softmax (A_t:)XWval$$
$$A := XWqryW_{key}^TXw_{val}$$
$X$为一个像素向量,$shape$大概长$(T , D_{in})$这其中$T$为像素的数量,$D_{in}$应该为channel维度。
因此对于这样的输入序列,就算顺序被打乱,输出仍然是相同的
但在CV任务里,像素的分布是图片的信息之一,将一张图片的像素随机打乱后,就完全是另一张图片了。
因此要加入位置编码,输入关于位置的信息。
$$A : = ( X + P ) W _ { q r y } W _ { k e y } ^ { T } ( X + P ) ^ { T }$$
进一步,把self-attention扩展到多头注意力
多头注意力:把原本的 $W_q,W_k,W_v$拆成多个矩阵,再将输出拼接在一起,进行一次线性变换得到最终的output。
$$M H S A ( X ) : = \underset{h\in[N_h]}{concat} \quad [ Self-Attention( X )] \quad W _ { o u t } + b _ { o u t }$$