BERT-微调任务

一、今日内容概览

核心学习内容

  • ​微调任务​​:完形填空任务(MLM) + NSP任务

  • ​NLP数据集​​:标准评估数据集介绍

  • ​BERT模型​​:核心原理与架构详解

二、微调任务详解

2.1 完形填空任务(MLM任务)

任务目标
  • ​输入​​:一句话,其中MASK掉一个字

  • ​输出​​:预测被MASK的字

  • ​目的​​:训练模型进行填空补全

实现流程
  1. ​数据预处理​

    • 加载CSV格式的训练/测试数据

    • 过滤长度不足的文本样本

    • 固定位置(第16个词)替换为[MASK]标记

    • 生成对应的标签数据

  2. ​模型架构设计​

    python 复制代码
    class 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])
  3. ​训练策略​

    • 预训练模型参数冻结,不参与训练

    • 仅训练下游任务的线性分类层

    • 使用交叉熵损失函数

    • 定期计算准确率评估效果

  4. ​评估指标​

    • 预测准确率

    • 损失函数下降趋势

    • 训练时间监控

2.2 NSP任务(下一句话预测)

任务目标
  • ​输入​​:两句话

  • ​输出​​:判断第二句是否为第一句的下一句

  • ​目的​​:训练模型理解句子间逻辑关系

关键技术点
  1. ​数据构造策略​

    • 正样本:真实连续的上下句(50%)

    • 负样本:随机组合的不相关句子(50%)

    • 动态生成训练样本,增强数据多样性

  2. ​自定义数据集类​

    python 复制代码
    class MyDataset(Dataset):
        def __getitem__(self, index):
            # 从原始文本中提取连续两句作为正样本
            # 随机组合其他句子作为负样本
            return sent1, sent2, label
  3. ​模型设计特点​

    • 使用BERT的pooler_output(句向量)

    • 二分类输出层(是/不是下一句)

    • 同样冻结预训练参数

三、NLP标准数据集

核心评估数据集列表

  1. ​CoLA​​:语言可接受性语料库

  2. ​SST-2​​:斯坦福情感树库

  3. ​MRPC​​:微软释义语料库

  4. ​STS-B​​:语义文本相似度基准

  5. ​QQP​​:Quora问题对

  6. ​MNLI​​:多类型自然语言推理

  7. ​SNLI​​:斯坦福自然语言推理

  8. ​QNLI​​:问题自然语言推理

  9. ​RTE​​:识别文本蕴含

  10. ​WNLI​​:Winograd自然语言推理

  11. ​diagnostics​​:诊断数据集

数据集重要性

  • ​基准测试​​:衡量模型性能的统一标准

  • ​全面评估​​:覆盖不同NLP任务类型

  • ​学术认可​​:业界广泛接受的评估体系

四、BERT模型深度解析

4.1 BERT核心概述

  • ​提出时间​​:2018年10月(Google AI)

  • ​全称​​:Bidirectional Encoder Representation from Transformers

  • ​核心创新​​:双向上下文理解

4.2 模型架构详解

三层结构设计
  1. ​Embedding层​

    • Token Embedding:词嵌入(包含[CLS]特殊标记)

    • Segment Embedding:句子分段信息

    • Position Embedding:位置编码信息

  2. ​Transformer编码器层​

    • 仅使用Encoder部分,舍弃Decoder

    • 多层Transformer堆叠

    • 实现真正的双向注意力机制

  3. ​预微调模块​

    • 任务特定的输出层

    • 根据不同下游任务灵活调整

4.3 预训练任务机制

任务一:Masked Language Model (MLM)
  • ​MASK策略​​:

    • 80%概率替换为[MASK]

    • 10%概率替换为随机词

    • 10%概率保持原词不变

  • ​训练目标​​:预测被掩盖的原始词汇

任务二:Next Sentence Prediction (NSP)
  • ​正样本​​:真实连续的句子对(50%)

  • ​负样本​​:随机组合的句子对(50%)

  • ​训练目标​​:判断句子间的逻辑关系

4.4 BERT模型特点分析

核心优势
  1. ​性能卓越​​:11项NLP任务达到state-of-the-art

  2. ​并行高效​​:基于Transformer,支持并行计算

  3. ​长距离依赖​​:有效捕捉长程语义关系

  4. ​灵活微调​​:预训练+微调范式适用多种任务

存在局限
  1. ​模型庞大​​:参数量大,资源消耗高

  2. ​中文处理​​:基于字符级别,词向量应用受限

  3. ​训练偏差​​:[MASK]标记训练与预测不一致

  4. ​收敛速度​​:仅15%token参与训练,收敛较慢

4.5 GPT模型对比

与BERT的关键差异
  • ​训练方式​​:GPT使用单向语言模型,BERT使用双向

  • ​架构选择​​:GPT基于Transformer解码器,BERT基于编码器

  • ​任务侧重​​:GPT擅长生成任务(NLG),BERT擅长理解任务(NLU)

GPT架构特点
  • 12层Decoder模块堆叠

  • 自注意力机制中的掩码处理

  • 从左到右的文本生成能力

五、关键知识点总结

技术实践要点

  1. ​微调策略​​:冻结预训练参数,仅训练任务特定层

  2. ​数据预处理​​:合理的文本截断、填充和标记处理

  3. ​评估监控​​:准确率、损失函数等多维度评估

理论理解重点

  1. ​BERT双向性​​:与传统语言模型的本质区别

  2. ​预训练任务​​:MLM和NSP的具体实现机制

  3. ​架构选择​​:Encoder-only设计的优势与考量

应用场景区分

  • ​完形填空​​:词汇级别理解任务

  • ​句子关系​​:语义级别理解任务

  • ​根据任务特性​​选择合适的微调方法和模型架构

这份复习笔记全面覆盖了NLP基础课程的核心内容,从实践代码到理论原理,从具体实现到架构设计,提供了系统性的知识梳理和总结。

相关推荐
文火冰糖的硅基工坊4 小时前
[人工智能-大模型-20]:对比 Copilot 与国产替代方案(如通义灵码、百度Comate)
人工智能·百度·copilot
岛屿旅人4 小时前
智库报告美国如何打网络战
网络·人工智能·安全·web安全
XIAO·宝5 小时前
深度学习------YOLOV3
人工智能·深度学习·yolo
AI科技星5 小时前
垂直原理:宇宙的沉默法则与万物运动的终极源头
android·服务器·数据结构·数据库·人工智能
开始学AI5 小时前
ChatClimate:让对话式人工智能立足于气候科学
人工智能
学习路上_write6 小时前
神经网络初次学习收获
人工智能·python
zstar-_6 小时前
DeepSeek-OCR可能成为开启新时代的钥匙
人工智能·ocr
墨利昂6 小时前
自然语言处理NLP的数据预处理:从原始文本到模型输入(MindSpore版)
人工智能·自然语言处理
wb043072016 小时前
如何开发一个 IDEA 插件通过 Ollama 调用大模型为方法生成仙侠风格的注释
人工智能·语言模型·kotlin·intellij-idea