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 在工业界广泛落地的需求。
参考文献
-
Vaswani A. et al., Attention Is All You Need, 2017. 【sinusoidal vs learned】
-
Why BERT use learned positional embedding?, Cross Validated, 2019.
-
Cheng YQ, 位置编码(positional encoding), CSDN, 2018.
-
dzljoy2, 大模型位置编码_bert位置编码, CSDN, 2023.
-
Why use learnable positional encoding instead of sinusoids?, AI.StackExchange, 2023.
-
Why positional embeddings are implemented as embeddings, Hugging Face Discuss, 2019.
-
Tavares G., Sinusoidal Embeddings, Medium, 2024.
-
muyuu, Learned Positional Embedding, CSDN, 2019.
-
nn.Embedding layer for positional encoding, StackOverflow, 2022.
-
Comparing positional encodings, apxml.com, 2023.
-
Understanding BERT Embeddings, Tinkerd, 2022.
-
On Position Embeddings in BERT, OpenReview, 2019.
-
Transformer 通俗笔记, 集智斑图, 2022.