一、今日内容概览
核心学习内容
-
微调任务:完形填空任务(MLM) + NSP任务
-
NLP数据集:标准评估数据集介绍
-
BERT模型:核心原理与架构详解
二、微调任务详解
2.1 完形填空任务(MLM任务)
任务目标
-
输入:一句话,其中MASK掉一个字
-
输出:预测被MASK的字
-
目的:训练模型进行填空补全
实现流程
-
数据预处理
-
加载CSV格式的训练/测试数据
-
过滤长度不足的文本样本
-
固定位置(第16个词)替换为[MASK]标记
-
生成对应的标签数据
-
-
模型架构设计
pythonclass MyModel(torch.nn.Module): def __init__(self): super().__init__() self.linear = torch.nn.Linear(768, tokenizer.vocab_size) def forward(self, input_ids, attention_mask, token_type_ids): # 冻结预训练模型参数 with torch.no_grad(): out = pretrained_model(input_ids, attention_mask, token_type_ids) # 下游任务线性层 return self.linear(out.last_hidden_state[:, 16])
-
训练策略
-
预训练模型参数冻结,不参与训练
-
仅训练下游任务的线性分类层
-
使用交叉熵损失函数
-
定期计算准确率评估效果
-
-
评估指标
-
预测准确率
-
损失函数下降趋势
-
训练时间监控
-
2.2 NSP任务(下一句话预测)
任务目标
-
输入:两句话
-
输出:判断第二句是否为第一句的下一句
-
目的:训练模型理解句子间逻辑关系
关键技术点
-
数据构造策略
-
正样本:真实连续的上下句(50%)
-
负样本:随机组合的不相关句子(50%)
-
动态生成训练样本,增强数据多样性
-
-
自定义数据集类
pythonclass MyDataset(Dataset): def __getitem__(self, index): # 从原始文本中提取连续两句作为正样本 # 随机组合其他句子作为负样本 return sent1, sent2, label
-
模型设计特点
-
使用BERT的
pooler_output
(句向量) -
二分类输出层(是/不是下一句)
-
同样冻结预训练参数
-
三、NLP标准数据集
核心评估数据集列表
-
CoLA:语言可接受性语料库
-
SST-2:斯坦福情感树库
-
MRPC:微软释义语料库
-
STS-B:语义文本相似度基准
-
QQP:Quora问题对
-
MNLI:多类型自然语言推理
-
SNLI:斯坦福自然语言推理
-
QNLI:问题自然语言推理
-
RTE:识别文本蕴含
-
WNLI:Winograd自然语言推理
-
diagnostics:诊断数据集
数据集重要性
-
基准测试:衡量模型性能的统一标准
-
全面评估:覆盖不同NLP任务类型
-
学术认可:业界广泛接受的评估体系
四、BERT模型深度解析
4.1 BERT核心概述
-
提出时间:2018年10月(Google AI)
-
全称:Bidirectional Encoder Representation from Transformers
-
核心创新:双向上下文理解
4.2 模型架构详解
三层结构设计
-
Embedding层
-
Token Embedding:词嵌入(包含[CLS]特殊标记)
-
Segment Embedding:句子分段信息
-
Position Embedding:位置编码信息
-
-
Transformer编码器层
-
仅使用Encoder部分,舍弃Decoder
-
多层Transformer堆叠
-
实现真正的双向注意力机制
-
-
预微调模块
-
任务特定的输出层
-
根据不同下游任务灵活调整
-
4.3 预训练任务机制
任务一:Masked Language Model (MLM)
-
MASK策略:
-
80%概率替换为[MASK]
-
10%概率替换为随机词
-
10%概率保持原词不变
-
-
训练目标:预测被掩盖的原始词汇
任务二:Next Sentence Prediction (NSP)
-
正样本:真实连续的句子对(50%)
-
负样本:随机组合的句子对(50%)
-
训练目标:判断句子间的逻辑关系
4.4 BERT模型特点分析
核心优势
-
性能卓越:11项NLP任务达到state-of-the-art
-
并行高效:基于Transformer,支持并行计算
-
长距离依赖:有效捕捉长程语义关系
-
灵活微调:预训练+微调范式适用多种任务
存在局限
-
模型庞大:参数量大,资源消耗高
-
中文处理:基于字符级别,词向量应用受限
-
训练偏差:[MASK]标记训练与预测不一致
-
收敛速度:仅15%token参与训练,收敛较慢
4.5 GPT模型对比
与BERT的关键差异
-
训练方式:GPT使用单向语言模型,BERT使用双向
-
架构选择:GPT基于Transformer解码器,BERT基于编码器
-
任务侧重:GPT擅长生成任务(NLG),BERT擅长理解任务(NLU)
GPT架构特点
-
12层Decoder模块堆叠
-
自注意力机制中的掩码处理
-
从左到右的文本生成能力
五、关键知识点总结
技术实践要点
-
微调策略:冻结预训练参数,仅训练任务特定层
-
数据预处理:合理的文本截断、填充和标记处理
-
评估监控:准确率、损失函数等多维度评估
理论理解重点
-
BERT双向性:与传统语言模型的本质区别
-
预训练任务:MLM和NSP的具体实现机制
-
架构选择:Encoder-only设计的优势与考量
应用场景区分
-
完形填空:词汇级别理解任务
-
句子关系:语义级别理解任务
-
根据任务特性选择合适的微调方法和模型架构
这份复习笔记全面覆盖了NLP基础课程的核心内容,从实践代码到理论原理,从具体实现到架构设计,提供了系统性的知识梳理和总结。