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

相关推荐
AI日报派送佬26 分钟前
2026年10月14日AI行业日报|Gemini 4 Argon正式发布;小模型跨设备传播风险引发安全热议
网络·人工智能·openai·谷歌·deepseek·anthropic·ai日报
镜象科技2 小时前
职业院校AI心理健康解决方案怎么选?三个特殊场景与三类路线
人工智能
Leo.yuan2 小时前
企业Data Agent架构选型:帆软Dora基于NL2BI的现有BI体系复用方案
大数据·人工智能
朱涛的自习室2 小时前
70 美金的 Beyond Compare,我让 Gemini 4 和 DeepSeek 造个开源免费版(Day 2)
android·前端·人工智能
米小虾2 小时前
上下文:Agent 的眼睛里到底装着什么
人工智能·agent
米小虾2 小时前
Agent = 大脑 + 眼睛 + 手脚:一篇看懂现代 AI Agent 的骨架
人工智能
小小测试开发2 小时前
安全评测得分 0.9556 掉到 0.3257,只改了 top_k 和 prompt_style 之外的题面比例
人工智能·安全·prompt
slacker-kian3 小时前
[实践]-用LLM对文本结构化:把多段文本描述变成规范的 JSON 知识库
人工智能·llm·prompt·结构化·pydantic·one-shot 提示
品牌常新3 小时前
景区巡逻机器人怎么选?派宝S5全地形守护解析
运维·人工智能·机器人