1. 模型架构
BERT [4] 是由Google 于2018 年提出的一种具有里程碑意义的预训练语言模型,其问世极大地推动了自然语言处理技术的发展。特别是在各类语言理解任务中,BERT 展现出卓越的性能,成为后续众多模型设计的重要参考。与早期多数基于单向语言模型或浅层上下文建模的方法不同,BERT 在预训练阶段引入双向上下文编码机制,即通过同时考虑词语左右两侧的上下文信息,有效捕捉词语间更为细腻和深层的语义关联,从而显著提升模型对语言结构的理解能力。
在模型架构方面,BERT 完全基于Transformer 编码器的堆叠结构构建,如图2.2 所示 [4] 。其核心由多层Transformer Encoder 模块组成,每一层内部均包含多头自注意力机制与前馈神经网络,并辅以残差连接与层归一化机制,以提升模型的训练稳定性与表达能力。自注意力机制使模型能够灵活建模任意两个词之间的依赖关系,有效缓解长距离依赖问题,是BERT 能够深入理解语言结构的关键。BERT 提供了多种规模的模型配置,以适应不同任务的复杂度需求。其中,BERT BASE 包含12 层编码器、每层768 维的隐藏单元以及12 个注意力头,而更大规模的BERT LARGE 则采用24 层编码器、1024 维隐藏单元与16 个注意力头,具备更强的表示能力,适用于更复杂的语言理解场景。
图2.2 BERT 的输入表示
在预训练任务设计上,BERT 同时引入了Masked Language Model (MLM )和Next Sentence Prediction (NSP )两个目标。其中,MLM 通过随机掩盖输入中的部分词汇并预测其原始内容,使模型能够深度掌握词级语义关系;而NSP 则要求模型判断两个句子是否在原文中相邻,从而促使其在句子层面学习到更丰富的篇章语义。这两项任务相辅相成,使BERT 在词汇、句法乃至语篇结构等多个层面获得系统性的语言知识,为后续的下游任务迁移学习奠定了坚实的基础。
2. 输入表示
在BERT 模型中,输入的文本首先被切分为一系列标记(token ),每个标记随后被映射为一个向量表示。为了使模型能够更全面地理解文本的结构与语义,BERT 在构建输入表示时引入了三类嵌入(embedding ),分别从不同维度提供信息支持。这三种嵌入在向量维度上逐元素相加,构成每个标记的最终输入表示。具体包括如下三类嵌入:
1 )词嵌入
词嵌入是最基本的表示形式,用于捕捉每个标记在语义空间中的含义。在BERT 的输入构造中,为了适应包括句子对任务在内的多种应用场景,通常将两个句子拼接为一个输入序列。在该序列的开头插入特殊标记[CLS] ,其对应的向量通常用作整个序列的聚合表示,广泛应用于分类等任务中;在每个句子的末尾添加[SEP] 标记,用以明确句子边界。这些特殊标记同样具有各自的词嵌入。
2 )位置嵌入
由于Transformer 架构本身不具备处理序列顺序的能力,BERT 通过引入位置嵌入来弥补这一缺陷。每个位置都对应一个固定的向量编码,用于指示该标记在序列中的具体位置。借助位置嵌入,模型能够感知词语的顺序信息,从而更好地建模上下文之间的依赖关系。
3 )句段嵌入
为了支持诸如自然语言推理(NLI )、问答(QA )等涉及句子对的任务,BERT 引入句段嵌入机制,以区分不同句子的标记。具体而言,对于输入序列中的每个标记,模型会附加一个句段嵌入,用以标识其属于句子A 还是句子B 。这种设计有助于模型有效建模句子之间的语义关系,从而提升对复杂语言结构的理解能力。
最终,每个标记的输入表示由上述三类嵌入按位相加而成,如图2.2 所示 [4] 。该融合策略使模型在同时具备语义、顺序与句段信息的基础上,能够广泛适用于多种自然语言处理任务,并展现出优异的性能。
3. 预训练
传统语言模型普遍依赖自回归机制,即在已知序列的基础上,逐词预测下一个词。这种单向建模方式在处理长距离依赖关系和捕捉复杂语义结构时存在一定的局限性。为突破这一限制,BERT 在预训练阶段引入了基于双向Transformer 结构的建模策略。该架构使模型在学习每个词的表示时,能够同时融合其左侧与右侧的上下文信息,从而获得更全面、丰富的语义表征。为了实现这一双向建模能力,BERT 设计了两项核心的预训练任务:掩码语言模型与下一句预测。前者通过随机掩盖输入序列中的部分词语,要求模型根据上下文推断被遮蔽的词,从而强化其对局部语义关系的理解;后者则通过判断两句话是否为原文中相邻的句子,促使模型学习句子间的逻辑与语用关系。这两项任务相辅相成,协同促进模型对词语内部关联与句子间结构的全面建模,为后续下游任务打下坚实的语义基础。
1 )掩码语言模型
在传统语言模型中,模型在生成或预测目标词汇时,通常只能利用输入序列中已有的部分上下文信息,这在一定程度上限制了其对整体语义的深层理解能力。为突破这一局限,BERT 在预训练阶段引入了掩码语言模型任务。
具体在训练过程中,模型会从输入的文本序列中随机选取约15% 的词汇进行掩码处理,即用特殊标记[MASK] 替换这些词项。模型的训练目标是在给定未被遮蔽词语所构成的上下文的基础上,准确预测出被掩盖词汇的原始内容,如图2.3 所示。
下面给出一些具体示例,帮助理解:
"Artificial intelligence is transforming many industries."
模型可能随机选择其中的“intelligence ”和“industries ”两个词进行掩码处理,形成如下输入:
"Artificial [MASK] is transforming many [MASK]."
在此基础上,模型需通过建模上下文之间的依赖关系,合理推断出被遮蔽位置上的词汇应分别为intelligence 和industries 。该训练机制不仅使模型能够掌握词语与其上下文之间的搭配关系,还促使其识别词语在不同语境中的多义性、句法角色以及深层语义特征。
图2.3 掩码语言模型
与传统的词向量模型(如Word2Vec [8] 或GloVe [9] )为每个词学习一个静态向量表示不同,BERT 能够根据具体上下文动态生成词向量,从而显著提升了模型对语境变化的敏感性与语义表征能力。
为避免模型在训练过程中对[MASK] 标记形成过强依赖,进而影响其在实际应用中面对自然输入文本的表现,BERT 设计了一套混合替换策略:在被选中用于掩码的词汇中,80% 被替换为[MASK] ,10% 被替换为语料库中的其他随机词,剩余的10% 则保持不变。通过这种机制,模型不仅学习预测被遮蔽词语的能力,还能在更具多样性和不确定性的输入场景中保持鲁棒性和良好的泛化能力。
2 )下一句预测(Next Sentence Prediction ,NSP )
在自然语言理解中,模型不仅需要理解单个句子的语义,还需要掌握句子之间的逻辑关系与上下文连贯性。为此,BERT 在预训练阶段设计了“下一句预测”(Next Sentence Prediction ,NSP )任务,帮助模型学习跨句子的语篇组织能力。这一能力对于问答系统、多轮对话、自然语言推断等任务具有重要意义。
在NSP 任务中,训练数据由句子对组成。对于每一组输入句子,模型需要判断第二个句子是否是第一个句子的下文。具体来说,训练数据的构造方式如下:
l 正样本(IsNext ):直接从原始语料中选取相邻的两个连续句子作为句子对。
l 负样本(NotNext ):随机选取两个来自不同上下文的句子组成句子对。
模型的输入格式为:
[CLS] 句子 A [SEP] 句子 B [SEP]
其中,[CLS] 是分类标记,[SEP] 是句子分隔符。经过BERT 编码后,模型使用[CLS] 对应位置的输出向量,通过一个二分类的全连接层(classification head )来预测当前句子对属于“IsNext ”还是“NotNext ”类别。
下面给出一些具体示例,帮助理解:
正样本(IsNext ):
Sentence A: "She finished her homework early."
Sentence B: "Then she decided to watch a movie."
负样本(NotNext ):
Sentence A: "She finished her homework early."
Sentence B: "The city was crowded with tourists."
通过这一任务,模型能够在预训练阶段学习到句子间的语义连贯性和逻辑顺序,从而在多种需要理解上下文关系的下游任务中表现更好。
4. 微调
经过大规模语料库的预训练后,BERT 已具备较强的通用语言表示能力,但要将其应用于具体的下游任务,仍需通过微调来进一步适配目标场景。微调通常依赖于标注好的任务数据,在保留预训练所得参数的基础上,对模型进行有针对性的再训练。尽管调整的幅度相对较小,但这一过程对于提升模型在特定任务中的表现至关重要。在微调过程中,训练配置如学习率、批次大小、优化器类型等,通常可以参考甚至沿用预训练阶段的参数设置,但整体训练时间显著缩短。这是因为预训练已使模型掌握了丰富的语言知识与语法规律,微调阶段的目标仅在于引导模型将这些通用能力迁移至特定任务上。例如,在情感分类任务中,只需提供有限数量的带情感标签的评论样本,便可对BERT 模型进行有效微调。训练后的模型能够识别出文本中表达的主观情绪倾向,并在面对新的文本输入时,做出准确的情感判断。通过微调机制,BERT 能够以较小的代价快速适应多种自然语言处理任务,如文本分类、命名实体识别、问答系统等,展现出极高的灵活性与实用性。这种“预训练—微调”范式也已成为当前大多数预训练语言模型应用的标准流程。
=========================================
本文节选自 西电博导鲍亮与西交博导李倩创作的《大模型应用开发》,获得出版社和作者授权发布。