**【NLP高频面题 - Transformer篇】Position encoding为什么选择相加而不是拼接呢? **
重要性:★
首先明确:Transformer 会对原始输入做嵌入(embedding),从而映射到需要的维度,可采用一个变换矩阵做矩阵乘积的方式来实现,Transformer 中的 position embedding 也是加在这个嵌入后的向量中的。
了解这一点后,我们开始尝试使用 concat 的方式在原始输入中加入位置编码:
给每一个位置 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)} pi∈R(N,1) (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 [[x^i]^T,[x^p]^T ]^T [[xi]T,[xp]T]T 这个形式。
接着对这个新形成的向量做线性变换,即上述提到的 Transformer 对原始输入做的嵌入操作。记变换矩阵 W ∈ R ( d , d + N ) W\in R^{(d,d+N)} W∈R(d,d+N) , d 就是需要嵌入到的维度(这里为了简便,直接假设原输入的维度与嵌入维度一致,都是 d ),它也可以表示为 [ W I , W P ] [W^I, W^P ] [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 + p o s i W \cdot x_{p}^i = [W^I, W^P ] \cdot [[x^i]^T, [x^p]^T ]^T = W^I \cdot x^i + W^P \cdot x^p = embed^i + pos^i W⋅xpi=[WI,WP]⋅[[xi]T,[xp]T]T=WI⋅xi+WP⋅xp=embedi+posi
由变换结果可知,在原输入上 concat 一个代表位置信息的向量在经过线性变换后等同于将原输入经线性变换后直接加上位置编码信息。
也就是说,可以用concat的形式来表示add,某种程度上两者是等价的,但是使用concat会使维度变大,增加计算量。
NLP 大模型高频面题汇总
NLP基础篇
-
【NLP 面试宝典 之 模型分类】 必须要会的高频面题
-
【NLP 面试宝典 之 神经网络】 必须要会的高频面题
-
【NLP 面试宝典 之 主动学习】 必须要会的高频面题
-
【NLP 面试宝典 之 超参数优化】 必须要会的高频面题
-
【NLP 面试宝典 之 正则化】 必须要会的高频面题
-
【NLP 面试宝典 之 过拟合】 必须要会的高频面题
-
【NLP 面试宝典 之 Dropout】 必须要会的高频面题
-
【NLP 面试宝典 之 EarlyStopping】 必须要会的高频面题
-
【NLP 面试宝典 之 标签平滑】 必须要会的高频面题
-
【NLP 面试宝典 之 Warm up 】 必须要会的高频面题
-
【NLP 面试宝典 之 置信学习】 必须要会的高频面题
-
【NLP 面试宝典 之 伪标签】 必须要会的高频面题
-
【NLP 面试宝典 之 类别不均衡问题】 必须要会的高频面题
-
【NLP 面试宝典 之 交叉验证】 必须要会的高频面题
-
【NLP 面试宝典 之 词嵌入】 必须要会的高频面题
-
【NLP 面试宝典 之 One-Hot】 必须要会的高频面题
-
…
BERT 模型面
LLMs 微调面
-
【NLP 面试宝典 之 LoRA微调】 必须要会的高频面题
-
【NLP 面试宝典 之 Prompt】 必须要会的高频面题
-
【NLP 面试宝典 之 提示学习微调】 必须要会的高频面题
-
【NLP 面试宝典 之 PEFT微调】 必须要会的高频面题
-
【NLP 面试宝典 之 Chain-of-Thought微调】 必须要会的高频面题
-
…