本次主要分享预训练、BERT、GPT相关知识。

传统模型缺陷:1、数据量大。 2、模型迁移能力差。

1. 预训练微调范式

预训练-微调范式(Pre-training and Fine-tuning Paradigm) 是目前深度学习,尤其是自然语言处理(NLP)和计算机视觉(CV)领域中最主流、最成功的开发模式。

传统方法的局限:早期深度学习需要海量标注数据训练专用模型,成本高昂且泛化能力差,如BiLSTM在SQuAD任务上F1值仅70%左右。

预训练优势:通过自监督学习从无标注文本中提取通用语言特征,如BERT使用MLM任务在BooksCorpus上预训练,可节省90%标注成本。

微调价值:在特定任务上微调预训练模型,如医疗NER任务只需数千标注样本即可达到95%准确率,实现高效迁移学习。

简单来说,它的核心思想是:“先通识学习,再专科深造”

第一阶段:预训练 (Pre-training)

  • 目标:让模型学习通用的语言规律、世界知识或视觉特征。相当于让一个学生读完小学到大学的通识教育。
  • 数据:使用海量、无标注(或弱标注)的通用数据。例如:整个互联网的文本(维基百科、新闻、书籍、代码)、ImageNet 等大规模图像库。
  • 任务:通常是自监督学习(Self-supervised Learning)。模型自己给自己出题自己做,不需要人工打标签。
    • NLP 例子:完形填空(Masked Language Modeling,如 BERT)、预测下一个词(Next Token Prediction,如 GPT)。
    • CV 例子:遮挡部分图片让模型还原、对比学习(判断两张图是否相似)。
  • 结果:得到一个基座模型(Base Model)。它拥有了广泛的知识和强大的特征提取能力,但还不会专门做某项具体任务(比如它知道很多医学词汇,但不会看病;知道法律条文,但不会写判决书)。

预训练如果用有标签的数据效果会更好,但数据标注的成本很大

第二阶段:微调 (Fine-tuning)

  • 目标:让模型掌握特定的下游任务能力。相当于让大学生去读研究生或参加职业培训,专攻某一领域。
  • 数据:使用小规模、高质量、有标注的特定领域数据。例如:1万条标注好的情感分析数据、5000个医疗问答对。
  • 任务有监督学习(Supervised Learning)
    • 在基座模型的基础上,增加一个特定的输出层(Head),然后用特定任务的数据更新模型的所有参数(全量微调)或部分参数(高效微调)。
  • 结果:得到一个专用模型。它在特定任务上表现优异,可以直接投入使用。

RNN和Transformer区别 Transformer没有”本子“的概念,因为他本身就聪明,只需要记住一下每个词之间的关系,而RNN需要一个词一个词的记住。

2. BERT解析

BERT是一种语言表示模型,BERT代表来自Transformer的双向编码器表示。BERT旨在通过联合调节所有层中的左右上下文来预训练深度双向表示。在理解句子时,离的近的词语天然权重就会大一点。

架构特点:BERT-base采用12层Transformer编码器,每层768维隐藏状态和12个注意力头,总参数量达1.1亿,在GLUE基准测试中平均得分87.1。

双向优势:通过MLM任务学习双向上下文表示,在SQuAD问答任务上F1值达93.2,比单向模型提升27%。

训练数据:使用BooksCorpus(8亿词)和英文维基百科(25亿词)进行预训练,相比GPT仅使用BooksCorpus,数据多样性提升68%。


BERT 是如何训练的?

为了让模型学会“双向”看问题,同时避免模型“偷懒”(直接复制旁边的词),BERT 设计了两个巧妙的预训练任务:

2.1 掩码语言模型 (MLM)

  • 做法:随机掩盖输入句子中 15% 的词(用 [MASK] 标记替换),然后让模型根据双向上下文去预测被掩盖的词是什么。
    • 例子:输入 “我 [MASK] 喜欢 吃 苹果”,模型需要预测 [MASK] 是 “非常” 还是 “不”。
  • 目的:强迫模型深入理解上下文语境,而不是简单地从左推到右。
  • 注意为了防止预训练(有 [MASK])和微调(无 [MASK])的不一致,那 15% 的词并不全换成 [MASK],而是:
    • 80% 换成 [MASK]
    • 10% 换成随机词
    • 10% 保持原词不变

bert引入mask预训练和微调不一致的问题怎么理解:

为什么这是个问题?

因为模型在训练时,把大量"脑细胞"用来学习如何处理`[MASK]`这个特殊记号。但到实际应用时,这些"脑细胞"就闲置了,模型需要重新适应没有`[MASK]`的句子。这就好比你教了一个人如何在雨天开车,结果考试的时候天天是晴天,等他自己上路遇到下雨天,他还是不会开。

为什么不全换成[MASK]就可以解决?

想象你在准备驾照考试(微调):

  • 如果 100% 用 [MASK] 训练:教练只在路牌上贴个黑条遮住字,让你猜是什么。你学会了“看到黑条就猜字”。但真正上路考试时,路牌上没有黑条,全是真字,你可能反而不知道怎么快速提取关键信息了,因为你习惯了依赖“黑条”这个提示。
  • BERT 的 80-10-10 策略
    • 80% 时间:教练遮住路牌让你猜(标准训练)。
    • 10% 时间:教练把路牌上的“停”字改成“行”,让你指出错误并说出正确字(抗干扰训练)。
    • 10% 时间:教练不遮也不改,直接指着路牌问你:“确认一下,这个字是不是‘停’?”(模拟实战)。

经过这种混合训练,当你真正上路(微调)时,无论路牌是什么样,你都能熟练地识别和理解,因为你已经习惯了在没有“黑条”提示的情况下处理信息。

2.2 下一句预测 (NSP)

  • 做法:给模型两句话 A 和 B。
    • 50% 的情况为”正例“,B 确实是 A 的下一句。
    • 50% 的情况”负例“,B 是随机抽取的另一句话。
    • 让模型判断 B 是否是 A 的下一句(输出 Yes/No)。
  • 目的:让模型理解句子与句子之间的逻辑关系(这对问答任务、自然语言推断任务至关重要)。
    • :后来的研究发现 NSP 任务效果有限,后续模型(如 RoBERTa)去掉了它,但在原始 BERT 中它是核心组成部分。
    • ALBERT使用句子顺序预测(SOP)替代NSP,在XNLI任务上准确率提升2.3%。

2.3 架构细节

  • 输入层

    • Token Embeddings:词的向量。
    • Segment Embeddings:区分句子 A 和句子 B(用于 NSP 任务)。
    • Position Embeddings:位置编码(告诉模型词的顺序,因为 Transformer 本身没有顺序概念)。
    • 特殊标记
      • [CLS]:放在句首,其输出向量代表整个句子的语义表示,常用于分类任务。在[CLS]标记向量上添加分类层,IMDb影评情感分析准确率达94.9%,比LSTM高12.3%。
      • [SEP]:分隔符,用于分开两个句子。
      • [MASK]:掩码标记。
  • 模型规模

    • BERT-Base:12 层 Transformer,768 隐藏单元,12 个注意力头,约 1.1 亿参数。
    • BERT-Large:24 层 Transformer,1024 隐藏单元,16 个注意力头,约 3.4 亿参数。

原始的BERT模型对于中文的理解能力不强,‘bert-base-chinese’为改进后适应中文的模型。

输入长度限制:

  • 原始 BERT 最大支持 512 个 token。处理长文档需要截断或分段,丢失信息。
  • 解决:LongBERT, BigBird 等长文本模型。

BERT-base单次推理耗时32ms(TPUv3),通过知识蒸馏技术可压缩至8ms,满足工业级应用需求。

3. GPT解析

GPT(Generative Pre-trained Transformer)是生成式预训练转换器的缩写,是由OpenAI开发的一系列基于Transformer架构的人工智能语言模型。

架构特点:GPT系列采用纯解码器架构,通过掩码自注意力实现单向上下文建模,GPT-3拥有1750亿参数,在零样本学习任务上准确率比GPT-2提升42%。

训练数据:GPT-3使用Common Crawl、WebText等数据集共5000亿词,涵盖编程代码、学术论文等多样化文本类型。

生成能力:在文本续写任务中,GPT-3生成内容的人类评估通过率达89%,比GPT-2高31个百分点。

自回归机制:采用从左到右的序列生成方式,每个token只能关注前面位置的信息,在文本续写任务中连贯性评分达92%。

损失函数:使用交叉熵损失优化下一个词预测,在Wikitext-103语言模型任务上困惑度降至16.4,创历史新低。

3.1 GPT 工作流程

GPT 的生成过程是一个自回归 (Auto-regressive) 的过程,自回归是一种生成策略(一步一步来),而单向注意力机制(即你问题中提到的单向编码器的核心特征)是 GPT 实现这种策略的技术手段,就像滚雪球:

  1. 输入 Prompt:用户输入“今天天气真”。
  2. 第一步预测:模型计算概率,发现“好”字出现的概率最高(90%),“错”字很低(1%)。
  3. 输出并追加:模型输出“好”,并将“好”追加到输入后面。
    • 新输入变为:“今天天气真 
  4. 第二步预测:模型基于新的完整序列,预测下一个词。可能是“啊”、“。”或者“适合出游”。
  5. 循环:重复上述过程,直到遇到结束符 <|endoftext|> 或达到长度限制。

3.2 进化历程

  1. GPT-1 (2018): 证明了“预训练 + 微调”范式的有效性。参数量 1.17 亿。
  2. GPT-2 (2019): 参数量 15 亿。展示了惊人的零样本(Zero-shot)能力,即不微调也能做很多任务。当时因担心滥用未完全开源。
  3. GPT-3 (2020): 参数量 1750 亿。引入了In-context Learning (上下文学习),即通过 Prompt(提示词)直接让模型完成任务,无需更新权重。
  4. GPT-3.5 / GPT-4 (2022-2023):
    1. 引入了 RLHF (人类反馈强化学习),让模型更听话、更安全、更像人类助手(ChatGPT 的基础)。
    2. GPT-4 具备了多模态能力(能看图)和更强的逻辑推理能力。
  5. 后续迭代: 包括 o1 系列(强调推理思维链)等,不断突破边界。

如何提升GPT的生成能力?

  1. 人类偏好算法 DPO、RLHF。
  2. GPT生成之前先用BERT过滤理解一遍。
  3. GPT参数进行领域分解。

4. BERT与GPT对比

BERT 和 GPT 是自然语言处理(NLP)领域的两座里程碑,它们虽然都基于 Transformer 架构,但设计理念、训练目标和适用场景截然不同。

简单来说:BERT 是“理解者”(Encoder),GPT 是“创作者”(Decoder)

维度BERTGPT 
核心架构Encoder-only (仅编码器)Decoder-only (仅解码器)
注意力机制双向注意力 (Bidirectional)
可以看到上下文的所有词(左边+右边)。
单向/因果注意力 (Causal/Masked)
只能看到左边的词(过去的信息),严禁看右边。
训练目标MLM (掩码语言模型)
随机遮盖部分词(如 [MASK]),让模型根据上下文猜出被遮住的词。
(类似做“完形填空”)
Next Token Prediction (下一词预测)
给定前 N 个词,预测第 N+1 个词。
(类似做“句子接龙”)
输入结构复杂
需要特殊标记:[CLS], [SEP], [MASK]
需构造句子对模板。
简单
纯文本流。
通常只需要一个结束符 `
应用场景长文本分类、NER等理解任务,F1值普遍90%+。GPT在创作、对话等生成任务中人类评估通过率89%。

5. 微调

微调是指:在已经预训练好的大模型基础上,使用特定任务的小规模数据集,继续训练模型,使其适应特定场景的过程。

  • 预训练模型:拥有通用的语言能力(知道“苹果”是一种水果,也知道“苹果”是一家公司),但不知道如何具体回答你的业务问题。
  • 微调数据:针对特定任务标注的数据(例如:1000 条“用户投诉”和对应的“分类标签”)。
  • 结果:模型保留了通用知识,同时学会了特定任务的规则和风格。

5.1 微调流程

第一步:准备数据

这是最关键的一步。你需要收集特定任务的数据,并将其格式化为模型能理解的格式。

  • 分类任务{"text": "这电影太棒了", "label": "正面"}
  • 生成任务{"prompt": "写一封辞职信", "completion": "尊敬的领导..."}
  • 问答任务{"question": "公司报销流程?", "answer": "请填写表单A..."}

第二步:选择策略

  • 全量微调 (Full Fine-tuning):更新模型中所有的参数。
    • 优点:效果通常最好。
    • 缺点:显存要求极高,计算成本巨大,且容易“灾难性遗忘”(忘了通用知识)。
  • 参数高效微调 (PEFT, Parameter-Efficient Fine-Tuning):只更新极少部分参数,冻结大部分主干网络。
    • LoRA (Low-Rank Adaptation):目前最主流的方法。它在原有权重旁边加了一组很小的“旁路矩阵”,只训练这个小矩阵。
    • 优点:显存占用极低(普通显卡也能跑),训练快,不易遗忘,且可以针对不同任务训练多个 LoRA 模块灵活切换。

参数的高效微调主要有LoRA、Prefix/Prompt turning、Adapt三种方法

第三步:训练过程

模型读取你的专用数据,计算预测值与真实值的误差(Loss),然后通过反向传播更新权重。

  • 通常只需要训练 1~3 个 Epoch(把所有数据过 1-3 遍)。
  • 如果训练太久,模型会“死记硬背”训练数据(过拟合),导致在新数据上表现变差。

第四步:评估与部署

用没见过的测试集验证效果,确认无误后,将微调后的模型部署到生产环境。

5.2 早停

早停 (Early Stopping) 是机器学习和深度学习中一种非常经典且高效的正则化技术,主要用于防止模型过拟合 (Overfitting)

简单来说,它的核心思想是:“见好就收”。在模型训练过程中,一旦发现在验证集上的表现不再提升(甚至开始变差),就立即停止训练,而不是非要跑完预设的所有轮数(Epochs)。

早停机制通常依赖两个数据集:

  1. 训练集 (Training Set):用来更新模型参数。
  2. 验证集 (Validation Set):用来监控模型泛化能力(不参与梯度更新)。

早停执行流程:

  1. 设定参数
    • patience (耐心值):允许验证集指标不提升的最大轮数(例如 5 轮)。
    • delta (最小改进量):认为指标有显著提升的最小阈值(可选)。
    • monitor (监控指标):通常监控 val_loss (验证集损失) 或 val_accuracy (验证集准确率)。
  2. 每轮训练后
    • 在验证集上跑一次评估。
    • 如果当前指标优于历史最佳指标:
      • 更新“历史最佳”。
      • 保存当前模型权重(这步很重要!因为后面可能会变差)。
      • 重置计数器 counter = 0
    • 如果当前指标没有提升:
      • 计数器 counter += 1
  3. 触发停止
    • 当 counter > patience 时,立即终止训练。
    • 恢复权重:将模型权重回滚到之前保存的“历史最佳”状态。

6. 模型相关知识

6.1 模型训练调优

超参数优化:通过网格搜索确定最佳学习率(2e-5)batch size(32)、warmup steps(500),相比默认配置可提升1-3%准确率。

加速技术:混合精度训练(FP16)使迭代速度提升60%,梯度累积在显存不足时保持等效batch size,内存占用减少45%。

混合精度训练在训练过程中,同时使用 16 位浮点数 (FP16 或 BF16) 和 32 位浮点数 (FP32) 来表示模型参数和进行计算,从而在保证模型收敛精度的前提下,大幅提升训练速度并减少显存占用。简单来说,就是“能省则省,该准则准”

二次预训练五步走:

  1. 预训练权重
  2. 数据准备
  3. 后训练的配置 【优化】
  4. 省存(量化)、提速(正则化)
  5. 评估->指标&损失函数->后台可视化的图像(天鹅湖网站)

6.2 常见问题

过拟合处理:增加dropout(0.3)、添加权重衰减(0.01)、早停策略(patience=2)可使验证集波动降低60%。

训练震荡:学习率warmup(10%训练步数)配合线性衰减,使loss曲线平滑度提升40%。

显存不足:采用梯度检查点技术可使最大batch size扩大3倍,模型量化(FP16)减少60%显存占用。

部署优化:使用ONNX格式导出模型,推理速度提升35%;TensorRT优化后延迟降至8ms/样本。

6.3 模型评估策略

这三者构成了机器学习模型从实验室走向生产环境的完整验证链条。它们的关系可以概括为:

  • 离线评估 (Offline Eval):在实验室里“模拟考试”,快速筛选,成本低,但无法完全反映真实世界。
  • 在线评估 (Online Eval):在真实战场上“实战演习”,数据最真实,但成本高、风险大。
  • A/B 测试 (A/B Testing):在线评估的黄金标准方法,通过科学对照实验,量化新模型带来的业务价值
维度离线评估 (Offline)在线评估 (Online)A/B 测试 (A/B Testing)
数据来源历史静态数据实时真实用户数据实时真实用户数据 (分组对比)
评估指标准确率、F1、BLEU 等CTR、GMV、延迟等业务指标指标增益 (Lift)、统计显著性 (P-value)
成本高 (需维持多套服务)
风险高 (可能损伤业务)中 (通过小流量控制风险)
速度快 (小时级)慢 (天/周级,需积累数据)慢 (需等待统计显著)
主要目的筛选:剔除烂模型,验证算法逻辑监控:确保系统稳定,数据分布正常决策:科学判定新模型是否值得全量上线
局限性无法模拟真实反馈,存在分布偏移噪音大,难归因实验周期长,流量分割复杂

6.4 可解释性分析

  1. 写技术分析文档
  2. 可视化
  3. 特征化工程
  4. 对抗样本
  5. 错误分析
Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐