基于双向Transformer编码器表示的掩码语言模型(BERT)预训练算法
字数 762 2025-10-28 11:34:06
基于双向Transformer编码器表示的掩码语言模型(BERT)预训练算法
题目描述:我将为你讲解BERT的预训练过程。BERT通过两个自监督任务(掩码语言建模和下一句预测)在大规模语料上预训练,学习深层双向语言表示。其核心创新是使用Transformer编码器和双向上下文建模,解决了传统语言模型只能单向编码的限制。
解题过程:
-
模型架构设计
- 采用多层Transformer编码器堆叠(如BERT-base有12层)
- 输入表示 = 词嵌入 + 段嵌入 + 位置嵌入(支持处理两个句子)
- 特殊标记:[CLS](分类)、[SEP](分隔)、[MASK](掩码)
-
掩码语言建模(MLM)
- 随机掩码15%的输入词符
- 其中80%替换为[MASK],10%替换为随机词,10%保持不变
- 让模型基于双向上下文预测被掩码的原始词
- 计算预测词与原始词的交叉熵损失
-
下一句预测(NSP)
- 构造正例(连续句子)和负例(随机组合句子)
- 用[CLS]标记的表示预测两个句子是否连续
- 二分类损失帮助模型学习句子间关系
-
多任务联合训练
- 总损失 = MLM损失 + NSP损失
- 通过梯度下降同时优化两个任务
- 使用Adam优化器进行大规模语料训练
-
训练技巧
- 动态掩码:每个epoch重新生成掩码模式
- 全词掩码:对完整词符统一掩码(中文适用)
- 去除NSP任务(后续研究显示效果有限)
-
微调机制
- 在预训练模型基础上,针对具体任务添加输出层
- 文本分类:使用[CLS]表示接分类器
- 序列标注:使用每个词符的对应输出
- 问答任务:用两个输出向量分别预测答案起止位置
关键点:通过自监督预训练,BERT学会深层双向语言表示,在下游任务微调时只需少量标注数据即可达到优异性能。其双向注意力机制能同时利用左右上下文信息,相比单向模型更具语义理解优势。