基于双向编码器表示的变换器(BERT)预训练算法详解
字数 1645 2025-10-29 11:31:55
基于双向编码器表示的变换器(BERT)预训练算法详解
题目描述
BERT(Bidirectional Encoder Representations from Transformers)是一种革命性的预训练语言模型,其核心创新在于通过双向Transformer编码器同时捕捉上下文信息。与传统的单向语言模型(如GPT)不同,BERT通过掩码语言模型(MLM)和下一句预测(NSP)两个预训练任务,学习深层的语言表征。本题目要求详细解析BERT的预训练过程,包括模型结构、训练任务设计及关键优化策略。
解题过程循序渐进讲解
步骤1:理解BERT的核心设计思想
- 问题背景:传统语言模型(如ELMo、GPT)仅从左到右或从右到左建模,无法同时利用上下文信息。例如,在句子“苹果很甜”中,“苹果”的含义依赖后续词“甜”(指水果而非公司)。
- BERT的突破:通过Transformer编码器堆叠,允许每个词直接关注句子中所有其他词,实现真正的双向上下文建模。
- 预训练目标:不直接预测下一个词,而是通过以下两个任务学习通用语言表征:
- 掩码语言模型(MLM):随机遮盖输入文本中的部分词(如15%),让模型预测被遮盖的词。
- 下一句预测(NSP):判断两个句子是否为连续关系,提升模型理解句子间逻辑的能力。
步骤2:解析模型输入表示
BERT的输入为词向量、段向量(句子标识)和位置向量的总和:
- 词向量:将词映射为向量(如WordPiece分词)。
- 段向量:区分两个句子(如句子A和B),用于NSP任务。例如:
- 输入:
[CLS] 苹果 很 甜 [SEP] 它 是 水果 [SEP] - 段向量:句子A对应
0,句子B对应1。
- 输入:
- 位置向量:通过学习得到的位置编码,解决Transformer无法天然处理序列顺序的问题。
- 特殊符号:
[CLS]用于分类任务,[SEP]分隔句子。
步骤3:掩码语言模型(MLM)任务详解
- 遮盖策略:
- 随机选择15%的词进行遮盖。
- 其中80%替换为
[MASK],10%替换为随机词,10%保留原词(缓解预训练与微调的不一致)。
- 计算过程:
- 输入句子:“苹果很[MASK]”,模型通过双向注意力机制计算每个词的上下文表征。
- 被遮盖位置的输出向量通过分类层预测原词(如“甜”)。
- 数学表达:
设被遮盖词索引为i,模型输出向量为h_i,预测概率为:
P(w_i | h_i) = softmax(W * h_i + b),
其中W为词表权重矩阵。
步骤4:下一句预测(NSP)任务详解
- 数据构造:
- 正例:连续句子(如“苹果很甜。它是水果”)。
- 负例:随机组合的句子(如“苹果很甜。今天天气晴朗”)。
- 任务执行:
- 输入格式:
[CLS] 句子A [SEP] 句子B [SEP]。 [CLS]位置的输出向量通过分类层判断句子B是否为句子A的下一句。
- 输入格式:
- 意义:增强模型对段落逻辑关系的理解,适用于问答、推理任务。
步骤5:模型架构与训练优化
- Transformer编码器堆叠:
- Base版:12层编码器,隐藏层维度768,注意力头数12。
- Large版:24层编码器,隐藏层维度1024,注意力头数16。
- 训练细节:
- 数据:BooksCorpus和英文维基百科(约33亿词)。
- 优化器:AdamW,学习率 warm-up 后线性衰减。
- 批大小:256序列(每序列长度512词),训练约40轮。
步骤6:BERT的创新与局限性
- 创新点:
- 双向上下文建模显著提升多项任务性能(如GLUE基准提升7.7%)。
- 预训练-微调范式统一了不同NLP任务的框架。
- 局限性:
- MLM任务中
[MASK]符号在微调时未出现,导致训练与推理差异。 - 无法直接生成文本(后续模型如BART、T5解决此问题)。
- MLM任务中
通过以上步骤,BERT通过双向Transformer和巧妙的预训练任务,实现了深层语言表征学习,为后续预训练模型奠定了基石。