Transformer中使用的position embedding为什么是加法而不是concat

transformer中使用的position embedding为什么是加法

给每一个位置 x i ∈ R ( d , 1 ) x^{i} \in R^{(d, 1)} xiR(d,1) concat 上一个代表位置信息的 one-hot 向量 p i ∈ R ( N , 1 ) p^{i} \in R^{(N, 1)} \quad piR(N,1) (N代表共有 N \mathrm{N} N 个位置)形成 x p i ∈ R ( d + N , 1 ) x_{p}^{i} \in R^{(d+N, 1)} xpiR(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)}, d WR(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)} WIR(d,d),WPR(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}+ Wxpi=[WI,WP][[xi]T,[xp]T]T=WIxi+WPxp=embedi+ pos i ^{i} i
由变换结果可知, 在原输入上 concat一个代表位置信息的向量在经过线性变换后等同于 将原输 入经线性变换后直接加上位置编码信息。

参考

你可能感兴趣的:(NLP,transformer,深度学习,人工智能)