BERT

义项:谷歌提出的预训练语言模型
BERT

BERT是谷歌于2018年提出的一种预训练语言模型,全称是来自变换器的双向编码器表示(Bidirectional Encoder Representations from Transformers)。它借助变换器(Transformer)编码器,同时结合词语左右两侧的上下文,学习与上下文相关的词表示;在大规模无标注文本上预训练之后,只需在小规模标注数据上微调,就能适配问答、文本分类等多种自然语言处理任务。BERT在发布时刷新了11项自然语言处理任务的成绩,并由此确立了“预训练—微调”的通用范式;自2019年起,它也被用于谷歌搜索的查询理解[1][2]。

目录
  1. 定义
  2. 原理
  3. 发展历程
  4. 应用
  5. 局限
  6. 参见

定义

BERT是一种基于变换器编码器结构的预训练语言模型,名称取自“来自变换器的双向编码器表示”。它在海量无标注文本上通过自监督任务完成预训练,得到一套通用的语言参数;使用时再针对具体任务加入少量输出层,并对全部参数进行微调,也就是通常所说的“预训练—微调”两阶段范式[3]。

与需要为每个任务单独设计网络结构的做法不同,BERT的预训练结构与下游结构几乎一致,任务之间的差别只体现在输入输出层和微调数据上。论文给出的两个主要规格是:基础版含12层编码器、隐藏层维度768、12个自注意力头、约1.1亿参数;大型版含24层、隐藏层维度1024、16个自注意力头、约3.4亿参数[3]。

在模型家族中,BERT属于只使用编码器的路线。它没有因果掩码,每个位置可以同时关注前后文,因此擅长理解和判别类任务,而不以逐词生成为目标[4]。

原理

输入的构造方式是:先把文本切分为词元,再为每个词元叠加词元嵌入、句子段嵌入和位置嵌入,三者求和后送入编码器。序列开头放置分类标记[CLS],句对之间与句末用分隔标记[SEP]隔开;分类任务通常取[CLS]位置的最终隐状态作为整段输入的汇总表示。

预训练使用两个自监督任务。第一个是掩码语言模型(Masked Language Model,MLM):随机选中输入中约15%的词元,其中大部分替换为[MASK],一部分替换为随机词,另一部分保持原样,模型要根据双向上下文还原被选中的原词。第二个是下一句预测(Next Sentence Prediction,NSP):输入由两个句子组成,模型判断第二句是否确实紧随第一句,以此学习句间关系[3]。

由于[MASK]只在预训练中出现,若只把被选中的词元换成[MASK],预训练与微调的数据分布就会脱节,所以原论文按80%、10%、10%的比例分别做替换、随机替换和保留。整体训练目标可以写为两项损失之和:$L = L_{\mathrm{MLM}} + L_{\mathrm{NSP}}$。


flowchart LR

A[原始文本] --> B[WordPiece 分词]

B --> C[随机选中 15% 词元并加掩码]

C --> D[词元嵌入 + 段嵌入 + 位置嵌入]

D --> E[多层 Transformer 编码器]

E --> F[预测被掩码词元]

E --> G[预测两句是否相接]

微调阶段的改动很小:在预训练参数之上加一个任务相关的输出层,再用下游标注数据联合调整全部参数。原论文报告,多数任务在单个云张量处理器上训练约30分钟、或在图形处理器上训练数小时即可完成微调,而预训练则需在多个云张量处理器上运行数天。

预训练语料主要为 BooksCorpus 与英文维基百科,后者约25亿词。多语言版本覆盖维基百科语料规模最大的102种语言,使用约11万词表的 WordPiece 分词,并对中文、日文、韩文等无空格文字在字符间加入分隔处理[5]。

发展历程

2018年10月11日,谷歌研究团队的雅各布·德夫林(Jacob Devlin)、张明伟、肯顿·李和克里斯蒂娜·图托纳诺娃将论文《BERT:用于语言理解的深度双向变换器预训练》提交至预印本平台,随后该文发表于2019年的北美计算语言学协会年会,页码为4171至4186[1]。

论文发布后不久,谷歌开源了基于 TensorFlow 的实现代码与基础版、大型版预训练模型,分大小写与不区分大小写两类;随后又补充了多语言版与中文版,规模均为12层、隐藏层维度768、约1.1亿参数[6][3]。

2019年10月,谷歌宣布把 BERT 用于搜索查询理解,先覆盖美国境内的英文查询,官方称约每10次英文搜索中有1次受益;同年12月扩展至全球70多种语言[2][7]。到2020年,谷歌表示 BERT 已用于几乎所有英文查询[8]。

此后出现了多类改进版本:RoBERTa 去掉下一句预测、改用动态掩码并扩大训练数据;ALBERT 通过参数分解与跨层共享压缩模型规模,并以句子顺序预测取代下一句预测;DistilBERT 用知识蒸馏缩小体积;ELECTRA 改用替换词元检测任务。中文场景中则有采用全词掩码的 BERT-wwm 等版本,以及融合知识增强的 ERNIE、采用相对位置编码的 NEZHA 等[9]。

应用

BERT最典型的用法是作为文本理解任务的骨干编码器。句子级任务包括情感分类、语义相似度与自然语言推理;词元级任务包括命名实体识别、词性标注;片段级任务包括抽取式阅读理解与问答[3]。

在搜索场景中,BERT用于理解查询语句与网页文本的语义关系,尤其擅长处理口语化、含否定词或介词的长查询。谷歌方面说明,该模型只改善对语言的理解,并不直接给网页赋值或改变排名机制[2][10]。

在工程实践中,预训练权重常被用作通用起点:研究者以下游任务数据微调模型,也常把 BERT 输出的上下文向量当作特征,接入分类器或其他神经网络。部分视觉与多模态工作同样借鉴了这一编码器结构[3][11]。

局限

BERT不是自回归模型,不具备逐词生成文本的机制,因此不适合摘要生成、对话生成、故事写作等生成式任务;这类需求通常由解码器类模型承担[4][3]。

输入长度受可学习位置编码的固定长度约束,基础版与大型版通常只能处理512个词元以内的序列,更长的文档需要截断或切分,跨段落的远距离依赖因此难以完整建模[12]。

预训练与微调之间存在不一致:微调数据里不会出现[MASK],模型在微调阶段见不到这一标记;同时掩码语言模型默认各个被掩码位置相互独立,难以刻画它们之间的联合概率。此外每次只预测约15%的词元,训练收敛较慢,从头预训练的计算开销很大[12][13]。

模型的行为也会继承训练语料的偏差,在性别、职业等维度上可能给出带有刻板印象的预测,且这种偏差会传递给基于它微调的下游模型[5]。

参见

  • Transformer —— BERT的编码器结构直接建立在这一架构之上。

  • RoBERTa —— 在 BERT 基础上调整预训练策略的改进模型。

  • ALBERT —— 通过参数共享与分解压缩规模、替换预训练任务的轻量变体。

  • ERNIE —— 融合知识增强的中文预训练模型。

  • XLNet —— 针对掩码预训练的一致性问题与长度限制提出的自回归预训练模型。

词条评价
词条统计

浏览次数:1 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-10-28T18:38:58Z

历史版本

本条目引用的词条
Transformer RoBERTa ALBERT ERNIE XLNet