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基础课程的核心内容,从实践代码到理论原理,从具体实现到架构设计,提供了系统性的知识梳理和总结。

相关推荐
Fabarta技术团队11 小时前
喜报|枫清科技AI4S智能体荣获InfoQ2025中国技术力量榜单「AI Agent最具生产力产品」
人工智能
救救孩子把11 小时前
45-机器学习与大模型开发数学教程-4-7 特征函数与矩母函数
人工智能·机器学习
帅小柏11 小时前
SoraWatermarkCleaner 完整安装教程:Windows 与 Linux 双系统指南
人工智能·sora
新程记11 小时前
2026年AI证书选择困境:CAIE认证的市场认可与理性报考指南
人工智能
咕噜船长11 小时前
使用Qwen3-VL模型批量标注视频内容(视频理解)
人工智能·pytorch·深度学习·音视频·视频
禾高网络11 小时前
互联网医院定制|互联网医院|禾高互联网医院搭建
java·大数据·人工智能·小程序
鲨莎分不晴11 小时前
通信学习 (Learning to Communicate):从“心电感应”到“语言涌现”
人工智能·学习·机器学习
道法自然040211 小时前
[CARLA系列--05]如何在Carla中去调用传感器模型--Radar篇
人工智能·自动驾驶·ue4
roamingcode11 小时前
2025年技术变革浪潮:从 AI Agent 标准化到人类认知重构
人工智能·ai·重构·agent·skill·mcp
智驱力人工智能11 小时前
森林防火无人机火焰监测系统 构建“天空地”一体化智能防火体系 无人机火焰检测,支持红色火焰检测 城市高层建筑无人机火焰识别
人工智能·深度学习·opencv·算法·目标检测·无人机·边缘计算