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

相关推荐
doubao3617 小时前
如何有效降低AIGC生成内容被识别的概率?
人工智能·深度学习·自然语言处理·aigc·ai写作
SEO_juper17 小时前
AEO终极指南:步步为营,提升内容的AI可见性
人工智能·ai·seo·数字营销·aeo
机器之心19 小时前
李飞飞最新长文:AI的下一个十年——构建真正具备空间智能的机器
人工智能·openai
机器之心19 小时前
豆包编程模型来了,我们用四个关卡考了考它!
人工智能·openai
阿里云大数据AI技术20 小时前
让 ETL 更懂语义:DataWorks 支持数据集成 AI 辅助处理能力
人工智能·阿里云·dataworks·ai辅助
hoiii18720 小时前
基于交替方向乘子法(ADMM)的RPCA MATLAB实现
人工智能·算法·matlab
Elastic 中国社区官方博客20 小时前
Elasticsearch:如何为 Elastic Stack 部署 E5 模型 - 下载及隔离环境
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
xier_ran20 小时前
深度学习:神经网络中的参数和超参数
人工智能·深度学习
8Qi821 小时前
伪装图像生成之——GAN与Diffusion
人工智能·深度学习·神经网络·生成对抗网络·图像生成·伪装图像生成
阿里云大数据AI技术21 小时前
PAI Physical AI Notebook详解2:基于Cosmos世界模型的操作动作数据扩增与模仿学习
人工智能