基于 Attention 的 Transformer 已经从 NLP 领域逐渐要统治图像,点云领域,本文详述了其原理机制,以及在图像,点云中的一些应用。
1. Attention to Transformer[1]
1.1. Attention
Attention 的机制在于能自动关注到输入序列中的重要部分。如图 1. 左图,设输入 query \(Q\in\mathbb{R} ^ {N\times d _ k}\),key-value \(K\in\mathbb{R} ^ {N _ k\times d _ k}, V\in\mathbb{R} ^ {N _ k\times d _ v}\),那么 Attention 映射方程 \(\mathcal{A}(\cdot)\) 将其映射为输出 \(\mathbb{R} ^ {N\times d _ k}\)。具体的: \[\begin{align} \mathcal{A}(Q,K,V) &= \mathrm{score}(Q,K)V \\ &= \mathrm{softmax}\left(\frac{QK ^ T}{\sqrt{d _ k}}\right)V \end{align} \tag{1}\] 当 \(d _ k\) 较大时,\(QK ^ T\) 的幅值会较大,导致 softmax 的反传梯度会趋于很小,为了降低这种影响,引入尺度变换 \(\frac{1}{\sqrt{d _ k}}\)。以上矩阵运算的维度变化为: \[\begin{align} \mathrm{score}(\cdot):&\;\; \mathbb{R} ^ {N\times d _ q}, \mathbb{R} ^ {N _ k\times d _ k} \rightarrow \mathbb{R} ^ {N\times N _ k},其中\; d _ k=d _ q=d _ m\\ \mathcal{A}(Q,K,V):&\;\; \mathbb{R} ^ {N\times d _ k}, \mathbb{R} ^ {N _ k\times d _ k}, \mathbb{R} ^ {N _ k\times d _ v} \rightarrow \mathbb{R} ^ {N\times d _ k} \end{align} \tag{2}\] 如图 1. 右图,实践中,采用 MultiHead Attention 形式,在不同的子空间不同的位置编码中学习特征,然后再作整合: \[ \mathrm{MultiHead(Q,K,V)} =\mathrm{Concat(head _ 1,..., head _ h)}W ^ o \tag{3}\] 其中 \(\mathrm{head _ i} = \mathcal{A}(QW _ i ^ Q,KW _ i ^ K,VW _ i ^ V)\),参数 \(W _ i ^ Q\in\mathbb{R} ^ {d _ m\times d _ k},W _ i ^ K\in\mathbb{R} ^ {d _ m\times d _ k},W _ i ^ V\in\mathbb{R} ^ {d _ m\times d _ v}\);\(W ^ o\in\mathbb{R} ^ {hd _ v\times d _ m}\),为了与 Attention 计算复杂度类似,令 \(d _ k=d _ v=d _ m/h\)。
1.2. Transformer
如图 2. 所示,Transformer 结构有 Encoder,Decoder 构成,基本层由 Multi-head Attention 和 point-wise Fully Connected Layer 构成,称之为 Multi-head Attention: \[\begin{align} \mathcal{A} ^ {MH}(X,Y)=\mathrm{LayerNorm}(S + \mathrm{rFF}(S)) \\ S = \mathrm{LayerNorm}(X+\mathrm{Multihead(X,Y,Y)}) \end{align} \tag{4}\] 其中 \(\mathrm{rFF}\) 表示 row-wise fead-forward network。N 个该基础层叠加组成 Encoder 网络,其维度变换为: \[\mathcal{A} ^ {MH}:\; \mathbb{R} ^ {N\times d _ m}, \mathbb{R} ^ {N _ k\times d _ m} \rightarrow \mathbb{R} ^ {N\times d _ m} \tag{5}\]
1.3. Positional Encoding
由于 Transformer 对输入没有提取序列信息的能力,所以需要对输入作位置编码。位置编码可以通过学习得到,也可以用函数编码: \[\begin{align} PE _ {pos,2i} &= sin(pos/10000 ^ {2i/d _ {model}}) \\ PE _ {pos,2i+1} &= cos(pos/10000 ^ {2i/d _ {model}}) \end{align} \tag{6}\]
其中 pos 表示位置,i 表示特征维度。
1.4. Why Self-Attention
如图 3. 所示,Attention 相比 Recurrent,Convolution,其在计算复杂度,并行化,输入序列间的最大距离上有较好的优势。
2. Vision Transformer[2]
图 4. Vision Transformer
3. DETR[3]
图 6. DETR