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

news2025/5/22 20:21:05

摘要

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. 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2383361.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python数据可视化高级实战之一——绘制GE矩阵图

目录 一、课程概述 二、GE矩阵? 三、GE 矩阵图的适用范围 五、GE 矩阵的评估方法 (一)市场吸引力的评估要素 二、企业竞争实力的评估要素 三、评估方法与实践应用 1. 定量与定性结合法 2. 数据来源 六、GE矩阵的图形化实现 七、总结:GE 矩阵与 BCG 矩阵的对比分析 (一)GE…

StreamSaver实现大文件下载解决方案

StreamSaver实现大文件下载解决方案 web端 安装 StreamSaver.js npm install streamsaver # 或 yarn add streamsaver在 Vue 组件中导入 import streamSaver from "streamsaver"; // 确保导入名称正确完整代码修正 <!--* projectName: * desc: * author: dua…

CSS【详解】弹性布局 flex

适用场景 一维&#xff08;行或列&#xff09;布局 基本概念 包裹所有被布局元素的父元素为容器 所有被布局的元素为项目 项目的排列方向&#xff08;垂直/水平&#xff09;为主轴 与主轴垂直的方向交交叉轴 容器上启用 flex 布局 将容器的 display 样式设置为 flex 或 i…

自回归图像编辑 EditAR: Unified Conditional Generation with Autoregressive Models

Paperhttps://arxiv.org/pdf/2501.04699 Code (coming soon) 目录 方法 实验 EditAR是一个统一的自回归框架&#xff0c;用于各种条件图像生成任务——图像编辑、深度到图像、边缘到图像、分割到图像。 next-token预测的功效尚未被证明用于图像编辑。 EditAR主要构建在Ll…

React Flow 中 Minimap 与 Controls 组件使用指南:交互式小地图与视口控制定制(含代码示例)

本文为《React Agent&#xff1a;从零开始构建 AI 智能体》专栏系列文章。 专栏地址&#xff1a;https://blog.csdn.net/suiyingy/category_12933485.html。项目地址&#xff1a;https://gitee.com/fgai/react-agent&#xff08;含完整代码示​例与实战源&#xff09;。完整介绍…

STM32之串口通信WIFI上云

一、W模块的原理与应用 基本概念 如果打算让硬件设备可以通过云服务器进行通信&#xff08;数据上报/指令下发&#xff09;&#xff0c;像主流的云服务器有阿里云、腾讯云、华为云&#xff0c;以及其他物联网云平台&#xff1a;巴法云.......&#xff0c;硬件设备需要通过TCP…

PCB智能报价系统——————仙盟创梦IDE

软件署名 代码贡献&#xff1a; 紫金电子科技有限公司 文案正路&#xff1a;cybersnow 正文 对企业的竞争力有着深远影响。传统的 PCB 报价方式往往依赖人工核算&#xff0c;不仅耗时较长&#xff0c;还容易出现误差。随着科技的发展&#xff0c;PCB 自动报价系统应运而生&a…

LeetCode-链表-合并两个有序链表

LeetCode-链表-合并两个有序链表 ✏️ 关于专栏&#xff1a;专栏用于记录 prepare for the coding test。 文章目录 LeetCode-链表-合并两个有序链表&#x1f4dd; 合并两个有序链表&#x1f3af;题目描述&#x1f50d; 输入输出示例&#x1f9e9;题目提示&#x1f9ea;AC递归&…

sqli-labs靶场29-31关(http参数污染)

目录 前言 less29&#xff08;单引号http参数污染&#xff09; less30&#xff08;双引号http参数污染&#xff09; less31(双引号括号http参数污染) 前言 在JSP中&#xff0c;使用request.getParameter("id")获取请求参数时&#xff0c;如果存在多个同名参数&a…

JVM 垃圾回收机制深度解析(含图解)

JVM 垃圾回收机制深度解析&#xff08;含图解&#xff09; 一、垃圾回收整体流程 垃圾回收图解 #mermaid-svg-KPtxlwWntQx8TOj3 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-KPtxlwWntQx8TOj3 .error-icon{fill…

如何利用 Conda 安装 Pytorch 教程 ?

如何利用 Conda 安装 Pytorch 教程 &#xff1f; 总共分为六步走&#xff1a; &#xff08;1&#xff09;第一步&#xff1a;验证conda 环境是否安装好&#xff1f; 1) conda -V2) conda --version&#xff08;2&#xff09;第二步&#xff1a;查看现有环境 conda env list…

uniapp vue 开发微信小程序 分包梳理经验总结

嗨&#xff0c;我是小路。今天主要和大家分享的主题是“uniapp vue 开发微信小程序 分包梳理经验总结”。 在使用 UniAppvue框架开发微信小程序时&#xff0c;当项目比较大的时候&#xff0c;经常需要分包加载。它有助于控制主包的大小&#xff0c;从而提升小程序的启…

什么是VR展示?VR展示的用途

随着科技的迅猛发展&#xff0c;我们步入一个全新的数字时代。在这个时代&#xff0c;虚拟现实&#xff08;VR&#xff09;技术崭露头角&#xff0c;逐步改变我们对世界的认知。全景展示厅作为VR技术与传统展览艺术的完美结合&#xff0c;以独特的全景视角&#xff0c;引领我们…

.NET外挂系列:4. harmony 中补丁参数的有趣玩法(上)

一&#xff1a;背景 1. 讲故事 前面几篇我们说完了 harmony 的几个注入点&#xff0c;这篇我们聚焦注入点可接收的几类参数的解读&#xff0c;非常有意思&#xff0c;在.NET高级调试 视角下也是非常重要的&#xff0c;到底是哪些参数&#xff0c;用一张表格整理如下&#xff…

Go语言中new与make的深度解析

在 Go 语言中&#xff0c;new 和 make 是两个用于内存分配的内置函数&#xff0c;但它们的作用和使用场景有显著区别。 理解它们的核心在于&#xff1a; new(T): 为类型 T 分配内存&#xff0c;并将其初始化为零值&#xff0c;然后返回一个指向该内存的指针 (*T)。make(T, ar…

3、ubantu系统 | 通过vscode远程安装并配置anaconda

1、vscode登录 登录后通过pwd可以发现目前位于wangqinag账号下&#xff0c;左侧为属于该账号的文件夹及文件。 通过cd ..可以回到上一级目录&#xff0c;通过ls可以查看当前目录下的文件夹及文件。 2、安装 2.1、下载anaconda 通过wget和curl下载未成功&#xff0c;使用手动…

【Unity】 HTFramework框架(六十五)ScrollList滚动数据列表

更新日期&#xff1a;2025年5月16日。 Github 仓库&#xff1a;https://github.com/SaiTingHu/HTFramework Gitee 仓库&#xff1a;https://gitee.com/SaiTingHu/HTFramework 索引 一、ScrollList滚动数据列表二、使用ScrollList1.快捷创建ScrollList2.ScrollList的属性3.自定义…

Swagger在java的运用

Swagger 是一个广泛使用的工具&#xff0c;用于设计、构建、记录和使用 RESTful Web 服务。它通过提供交互式的 API 文档、客户端 SDK 生成和 API 发现功能&#xff0c;极大地简化了 API 的开发和使用过程。以下是对 Swagger 的详细介绍&#xff0c;包括它的功能、使用场景、如…

代码随想录算法训练营 Day49 图论Ⅰ 深度优先与广度优先

图论 基础 图的概念 图的概念 概念清单有向图 (a)无向图 (b)有向/无向如图 a 所示每条边有指向如图 b 所示每条边没有箭头指向权值每条边的权值每条边的权值度-有几条边连到该节点 (eg V 2 V_2 V2​ 度为 3)入度/出度出度&#xff1a;从该节点出发的边个数入度&#xff1a;…

.NET外挂系列:1. harmony 基本原理和骨架分析

一&#xff1a;背景 1. 讲故事 为什么要开这么一个系列&#xff0c;是因为他可以对 .NET SDK 中的方法进行外挂&#xff0c;这种技术对解决程序的一些疑难杂症特别有用&#xff0c;在.NET高级调试 领域下大显神威&#xff0c;在我的训练营里也是花了一些篇幅来说这个&#xf…