transformer中使用的position embedding为什么是加法
给每一个位置 x i ∈ R ( d , 1 ) x^{i} \in R^{(d, 1)}xi∈R(d,1) concat 上一个代表位置信息的 one-hot 向量 p i ∈ R ( N , 1 ) p^{i} \in R^{(N, 1)} \quadpi∈R(N,1) (N代表共有 N \mathrm{N}N 个位置)形成 x p i ∈ R ( d + N , 1 ) x_{p}^{i} \in R^{(d+N, 1)}xpi∈R(d+N,1), 它也可以表示为 [ [ x i ] T , [ x p ] T ] T \left[\left[x^{i}\right]^{T},\left[x^{p}\right]^{T}\right]^{T}[[xi]T,[xp]T]T 这个形式。
接着对这个新形成的向量做线性变换, 即上述提到的 Transformer 对原始输入做的嵌入操作。记 变换矩阵 W ∈ R ( d , d + N ) , d W \in R^{(d, d+N)}, dW∈R(d,d+N),d 就是需要嵌入到的维度(这里为了简便, 直接假设原输入的维度与 嵌入维度一致, 都是 d ) d)d), 它也可以表示为 [ W I , W P ] \left[W^{I}, W^{P}\right][WI,WP], 其中 W I ∈ R ( d , d ) , W P ∈ R ( d , N ) W^{I} \in R^{(d, d)}, W^{P} \in R^{(d, N)}WI∈R(d,d),WP∈R(d,N) 。 现在进行变换:
W ⋅ x p i = [ W I , W P ] ⋅ [ [ x i ] T , [ x p ] T ] T = W I ⋅ x i + W P ⋅ x p = e m b e d i + W \cdot x_{p}^{i}=\left[W^{I}, W^{P}\right] \cdot\left[\left[x^{i}\right]^{T},\left[x^{p}\right]^{T}\right]^{T}=W^{I} \cdot x^{i}+W^{P} \cdot x^{p}=e m b e d^{i}+W⋅xpi=[WI,WP]⋅[[xi]T,[xp]T]T=WI⋅xi+WP⋅xp=embedi+ pos i ^{i}i
由变换结果可知, 在原输入上 concat一个代表位置信息的向量在经过线性变换后等同于 将原输 入经线性变换后直接加上位置编码信息。