基于双向编码器表示的变换器(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编码器堆叠,允许每个词直接关注句子中所有其他词,实现真正的双向上下文建模。
  • 预训练目标:不直接预测下一个词,而是通过以下两个任务学习通用语言表征:
    1. 掩码语言模型(MLM):随机遮盖输入文本中的部分词(如15%),让模型预测被遮盖的词。
    2. 下一句预测(NSP):判断两个句子是否为连续关系,提升模型理解句子间逻辑的能力。

步骤2:解析模型输入表示
BERT的输入为词向量、段向量(句子标识)和位置向量的总和:

  • 词向量:将词映射为向量(如WordPiece分词)。
  • 段向量:区分两个句子(如句子A和B),用于NSP任务。例如:
    • 输入:[CLS] 苹果 很 甜 [SEP] 它 是 水果 [SEP]
    • 段向量:句子A对应0,句子B对应1
  • 位置向量:通过学习得到的位置编码,解决Transformer无法天然处理序列顺序的问题。
  • 特殊符号[CLS]用于分类任务,[SEP]分隔句子。

步骤3:掩码语言模型(MLM)任务详解

  • 遮盖策略
    1. 随机选择15%的词进行遮盖。
    2. 其中80%替换为[MASK],10%替换为随机词,10%保留原词(缓解预训练与微调的不一致)。
  • 计算过程
    1. 输入句子:“苹果很[MASK]”,模型通过双向注意力机制计算每个词的上下文表征。
    2. 被遮盖位置的输出向量通过分类层预测原词(如“甜”)。
  • 数学表达
    设被遮盖词索引为i,模型输出向量为h_i,预测概率为:
    P(w_i | h_i) = softmax(W * h_i + b)
    其中W为词表权重矩阵。

步骤4:下一句预测(NSP)任务详解

  • 数据构造
    • 正例:连续句子(如“苹果很甜。它是水果”)。
    • 负例:随机组合的句子(如“苹果很甜。今天天气晴朗”)。
  • 任务执行
    1. 输入格式:[CLS] 句子A [SEP] 句子B [SEP]
    2. [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解决此问题)。

通过以上步骤,BERT通过双向Transformer和巧妙的预训练任务,实现了深层语言表征学习,为后续预训练模型奠定了基石。

基于双向编码器表示的变换器(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解决此问题)。 通过以上步骤,BERT通过双向Transformer和巧妙的预训练任务,实现了深层语言表征学习,为后续预训练模型奠定了基石。