背景
transformer的提出对NLP领域的研究有很大的促进作用,得益于attention机制,特别是self-attention,就有研究学者将attention/self-attention机制引入计算机视觉领域中,也取得了不错的效果[1][2]。该论文[4]侧重于从理论和实验去验证self-attention[3]可以代替卷积网络独立进行类似卷积的操作,给self-attention在图像领域的应用奠定了坚实的基础
论文理论部分
(1)多头自注意机制
定义 X ∈ R T × D i n X\in \mathbb{R}^{T\times D{in}} X∈RT×Din为输入矩阵,包含 T T T个 D i n D{in} Din维的token,在NLP中,token对应着序列化的词,同样地也可以对应序列化的像素(关键对应:像素对应词)
self-attention layer从 D i n D{in} Din到 D o u t D{out} Dout的计算如上图所示, A A A为attention scores,softmax将score转换为attention probabilities。 该层的参数包含查询矩阵(query matrix) W q r y ∈ R D i n × D k W{qry}\in \mathbb{R}^{D{in}\times Dk} Wqry∈RDin×Dk, 关键词矩阵(key matrix) W k e y ∈ R D i n × D k W{key}\in \mathbb{R}^{D{in}\times D_k} Wkey∈RDin×Dk, 值矩阵(value matrix) W v a l ∈ R D i n × D o u t W{val}\in \mathbb{R}^{D{in}\times D{out}} Wval∈RDin×Dout, 都用于对输入进行变化,基本跟NLP中的self-attention一致,词序列对应于像素序列。
因为只考虑相关性,self-attention一个很重要的属性是,不管输入的顺序如何改变,输出都是不变的(引出位置编码),这对于希望顺序对结果有影响的case影响很大,因此在self-attention基础上为每个token学习一个positional encoding参数, P ∈ R T × D i n P\in \mathbb{R}^{T\times D_{in}} P∈RT