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

BERT 作为Transformer的Encoder 为什么采用可学习的位置编码

摘要

BERT 在位置编码上与原始 Transformer 论文中的 sin/cos 公式不同,选择了可学习(learned)的位置嵌入方案。本文将从 Transformer 原始位置编码选项入手,分析 BERT 选择 learned positional embeddings 的四大核心原因,并通过实验和社区实证对比两者的性能差异,最后对比其他主流模型的做法。全文引用了业界高质量文献和社区讨论,共计 13 条引用,帮助读者全面理解这一设计抉择。


1. Transformer 原始位置编码选项

1.1 Sinusoidal vs. Learned

在《Attention Is All You Need》中,作者同时提出了固定正弦/余弦编码(sinusoidal)可学习查表编码(learned embedding)两种方案,并在实验中发现二者性能相当,无明显优劣

  • Sinusoidal 编码:根据位置和频率预计算,不参与训练;

  • Learned 编码:将位置号作为索引,初始化为随机向量,随模型一同更新。


2. BERT 选择可学习位置编码的主要原因

2.1 实现与推理效率

Sinusoidal 编码需在推理时频繁计算三角函数,而 Learned 编码只需一次向量查表相加,更省时

2.2 固定最大长度

BERT 在预训练阶段就将最大序列长度(如512)固定下来,不需要对超出训练长度的情况做泛化处理,查表方式只要裁剪到最大长度即可,无需 sin/cos 的“无限外推”功能

2.3 领域自适应能力

BERT 后续需针对不同领域或下游任务做多次微调(fine-tune)。Learned 编码能根据下游语料分布动态更新位置表示,比固定公式更具灵活性和表达力

2.4 参数代价微小

即便最大长度设为512,位置嵌入表也仅有 512×HiddenSize(如768)≈40万维参数,在千亿级模型中占比几乎可以忽略,却换来更灵活的表达


3. 实践效果对比

  • 多项实验证明,Learned 和 Sinusoidal 在下游任务(分类、问答、序列标注等)上的性能几乎不分伯仲,甚至略有优势;同时 Learned 方案在训练和推理的整体资源消耗上也更可控【

  • Hugging Face 社区反馈:Learned embeddings 在某些场景下收敛更快,且不需要针对不同任务手动设计位置函数,可实现“一次预训练,多次微调”流程的高效落地


4. 与其他模型对比

  • GPT 系列 同样采用 Learned 位置嵌入,原因与 BERT 类似:固定最大长度,追求生成时的高效与灵活

  • 对超长文本支持(如 Transformer-XL、Longformer)则更倾向使用相对位置编码稀疏注意力等技术,以兼顾泛化和效率,解决 Learned 编码不能外推到新序列长度的问题


小结

尽管 BERT 架构来源于 Transformer 的编码器部分,但在位置编码的实现上,BERT 以“一次预训练、多次微调”“固定最大长度”“极小参数开销”以及“推理高效” 为考量,果断选择了可学习查表(训练的位置编码)的方式,而非 sin/cos 固定公式。此设计既保证了性能,又简化了工程实现,契合 BERT 在工业界广泛落地的需求。


参考文献

  1. Vaswani A. et al., Attention Is All You Need, 2017. 【sinusoidal vs learned】 

  2. Why BERT use learned positional embedding?, Cross Validated, 2019. 

  3. Cheng YQ, 位置编码(positional encoding), CSDN, 2018. 

  4. dzljoy2, 大模型位置编码_bert位置编码, CSDN, 2023. 

  5. Why use learnable positional encoding instead of sinusoids?, AI.StackExchange, 2023. 

  6. Why positional embeddings are implemented as embeddings, Hugging Face Discuss, 2019. 

  7. Tavares G., Sinusoidal Embeddings, Medium, 2024. 

  8. muyuu, Learned Positional Embedding, CSDN, 2019. 

  9. nn.Embedding layer for positional encoding, StackOverflow, 2022. 

  10. Comparing positional encodings, apxml.com, 2023. 

  11. Understanding BERT Embeddings, Tinkerd, 2022. 

  12. On Position Embeddings in BERT, OpenReview, 2019. 

  13. Transformer 通俗笔记, 集智斑图, 2022. 

相关文章:

  • 企业级 Hosts 自动化管理实战:基于 HTTP 检测的高可用域名解析方案
  • 使用 LibreOffice 实现各种文档格式转换(支持任何开发语言调用 和 Linux + Windows 环境)[全网首发,保姆级教程,建议收藏]
  • GMSL:汽车里的音视频传输
  • lambda架构和kappa架构区别
  • JAVA基础——程序流程控制(分支结构)
  • 在 Excel 中使用东方仙盟软件————仙盟创梦IDE
  • linux关闭某端口暂用的进程
  • LinkedList源码分析
  • Jenkins+Docker+Harbor快速部署Spring Boot项目详解
  • 基于正点原子阿波罗F429开发板的LWIP应用(3)——Netbiosns功能
  • Python爬虫(30)Python爬虫高阶:Selenium+Scrapy+Playwright融合架构,攻克动态页面与高反爬场景
  • 采集需要登录网站的教程
  • [每日一题] 3355. 零数组变换 i
  • [ 计算机网络 ] 深入理解TCP/IP协议
  • MySQL 8.0 OCP 1Z0-908 161-170题
  • C++23 新增扁平化关联容器详解
  • 数据挖掘:从数据堆里“淘金”,你的数据价值被挖掘了吗?
  • 题海拾贝:P2285 [HNOI2004] 打鼹鼠
  • Linux线程互斥与同步(上)(29)
  • vue3 + echarts(5.6.0)实现渐变漏斗图
  • 媒体刊文:“假官号”层出不穷,平台要当好把关人
  • 王毅同巴基斯坦副总理兼外长达尔会谈
  • 上海发布台风红色预警?实为演练,今日下午局部中雨下班请注意
  • 江苏省人民检察院副检察长丁海涛调任省委政法委副书记
  • 总书记回信二周年之际,上海如何将垃圾分类深度融入城市发展?
  • 上海将建设万兆小区、园区及工厂,为模型训练数据的传输提供硬件支持