当前位置: 首页 > article >正文

【NLP高频面题 - Transformer篇】Position encoding为什么选择相加而不是拼接呢?

**【NLP高频面题 - Transformer篇】Position encoding为什么选择相加而不是拼接呢? **

重要性:★

首先明确:Transformer 会对原始输入做嵌入(embedding),从而映射到需要的维度,可采用一个变换矩阵做矩阵乘积的方式来实现,Transformer 中的 position embedding 也是加在这个嵌入后的向量中的。

了解这一点后,我们开始尝试使用 concat 的方式在原始输入中加入位置编码:

给每一个位置 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)} piR(N,1) (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 [[x^i]^T,[x^p]^T ]^T [[xi]T,[xp]T]T 这个形式。

接着对这个新形成的向量做线性变换,即上述提到的 Transformer 对原始输入做的嵌入操作。记变换矩阵 W ∈ R ( d , d + N ) W\in R^{(d,d+N)} WR(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)} 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 + 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 Wxpi=[WI,WP][[xi]T,[xp]T]T=WIxi+WPxp=embedi+posi

由变换结果可知,在原输入上 concat 一个代表位置信息的向量在经过线性变换后等同于将原输入经线性变换后直接加上位置编码信息。

也就是说,可以用concat的形式来表示add,某种程度上两者是等价的,但是使用concat会使维度变大,增加计算量。


NLP 大模型高频面题汇总

NLP基础篇
BERT 模型面
LLMs 微调面

http://www.kler.cn/a/472244.html

相关文章:

  • 2. 模型和算法
  • thinkphp通过html生成pdf
  • C#设计模式(行为型模式):观察者模式
  • 国产编辑器EverEdit - 如何对汉字按笔划数排序?
  • 态势感知是自动化,势态知感是智能化
  • Excel表头/字段一致的表格拼接【python语言】
  • 【UE5 C++课程系列笔记】22——多线程基础——FRunnable和FRunnableThread
  • fmql裸跑编译过程记录
  • Allure 集成 pytest
  • 学习echarts折线图tooltip属性中formatter文字设置不同颜色的方法
  • 新型企业电站 源网荷储充一体化管理系统 EMS3.0具备哪些功能?
  • 太速科技-754-基于Agilex™ 7 FPGA F 系列的PCIe4.0X16 加速卡
  • 全新免押租赁系统打造便捷安全的租赁体验
  • Web3 游戏 2024:牛市下的缺席者?
  • 利用Spark实现WordCount(Scala语言)
  • 【C】文件操作
  • CUDA编程【7】 线程束
  • 青少年编程与数学 02-006 前端开发框架VUE 10课题、侦听器
  • STM32-笔记35-DMA(直接存储器访问)
  • Approaching a Chatbot Service - Part 3: Bot Model