news 2026/4/19 19:52:14

NLP学习笔记12:预训练模型——从 BERT 到 GPT 与 T5

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
NLP学习笔记12:预训练模型——从 BERT 到 GPT 与 T5

NLP学习笔记12:预训练模型——从 BERT 到 GPT 与 T5

作者:Ye Shun
日期:2026-04-19

一、前言

如果说早期 NLP 模型更像“为某一个任务单独训练一个模型”,
那么预训练模型的出现,改变了整个自然语言处理的工作方式。

它的核心变化在于:

  • 先用海量通用语料学习语言规律
  • 再把已经学到的能力迁移到具体任务上

这种模式通常被概括为:

  • 预训练(Pre-training)
  • 微调(Fine-tuning)

也正是因为这种范式,NLP 才真正进入了“通用语言模型”时代。

今天我们常见的很多强模型,例如:

  • BERT
  • RoBERTa
  • GPT
  • T5
  • BART

本质上都建立在预训练思想之上。

这篇笔记将围绕以下几个问题展开:

  1. 什么是预训练模型
  2. 为什么它比传统 NLP 方法更强
  3. 预训练模型的发展经历了哪些阶段
  4. BERT、GPT、T5 分别代表什么架构思路
  5. 常见预训练任务有哪些
  6. 如何在实际任务中使用预训练模型

二、什么是预训练模型

预训练模型(Pre-trained Models)指的是:

先在大规模通用文本数据上进行训练,学习语言的通用表示能力,再在具体任务上进行微调的模型。

这个思路的关键,不是“从零开始学某个任务”,而是:

  • 先学习语言本身
  • 再适配具体任务

例如,一个模型可能先在海量新闻、网页、书籍和百科文本上学习:

  • 词语之间的关系
  • 句子结构
  • 上下文依赖
  • 语义表达规律

然后再把这种能力迁移到:

  • 情感分析
  • 命名实体识别
  • 问答系统
  • 文本摘要
  • 文本生成

这就是预训练模型的核心价值。

三、预训练模型为什么重要

在预训练模型出现之前,传统 NLP 模型通常存在几个明显问题:

  • 每个任务都要单独设计特征
  • 需要较多标注数据
  • 泛化能力有限
  • 不同任务之间难以复用

而预训练模型带来的变化非常大:

1. 减少对标注数据的依赖

标注数据获取往往昂贵,而预训练模型已经提前学到了大量语言知识,因此在下游任务中通常只需要较少标注样本,就能取得不错效果。

2. 降低特征工程成本

过去很多任务要人工设计:

  • n-gram 特征
  • 词性特征
  • 句法特征
  • 词典特征

而预训练模型往往可以自动学习这些更高层次的表示。

3. 提高跨任务迁移能力

同一个预训练模型,只需替换输出层或稍作微调,就可以用于很多不同任务。

4. 显著提升开发效率

现在我们做很多 NLP 任务时,第一步不再是“自己设计模型”,而是:

  • 选择一个合适的预训练模型
  • 在此基础上微调或直接推理

四、传统方法与预训练模型的对比

特征传统 NLP 模型预训练模型
数据需求需要较多标注数据少量标注数据也可取得较好效果
训练方式从零开始训练预训练 + 微调
特征来源依赖人工特征工程自动学习表示
泛化能力多为任务特定具有较强迁移能力
开发效率相对较低相对更高

简单来说,预训练模型让我们从“任务中心”转向了“语言能力中心”。

五、预训练模型的发展历程

预训练思想不是一夜之间成熟的,而是经历了几个阶段。

1. 词向量时代

代表模型包括:

  • Word2Vec
  • GloVe
  • FastText

这个阶段的主要贡献是:

  • 把词表示成低维稠密向量
  • 让模型具备一定语义表示能力

例如:

  • “国王”和“王后”在向量空间里是接近的
  • “中国”和“北京”也会形成一定关系

但这一阶段仍有明显局限:

  • 词向量是静态的
  • 同一个词在不同上下文中的表示相同
  • 无法很好处理一词多义

例如“苹果”:

  • 在“我喜欢吃苹果”中指水果
  • 在“苹果发布了新手机”中指公司

静态词向量无法区分这两种含义。

2. 上下文感知表示阶段

代表模型包括:

  • ELMo
  • ULMFiT

这一阶段的突破是:

  • 词表示开始依赖上下文
  • 同一个词在不同句子中会有不同表示

这使模型开始真正具备“动态理解上下文”的能力。

不过这一阶段虽然重要,但真正把预训练推向主流的,是 Transformer 架构的出现。

3. Transformer 预训练阶段

从 BERT、GPT 开始,预训练模型进入高速发展阶段。

这个阶段的几个关键特征是:

  • 基于 Transformer 架构
  • 可以在更大规模语料上训练
  • 更适合迁移学习
  • 在多个任务上取得显著提升

这也是现代预训练模型的主流形态。

六、三类主流预训练模型架构

从整体架构来看,预训练模型大致可以分为三类。

1. Encoder 架构:BERT 系列

典型代表:

  • BERT
  • RoBERTa
  • ALBERT
  • DeBERTa

这类模型通常只使用 Transformer 的Encoder部分。

特点:

  • 双向建模上下文
  • 擅长理解类任务
  • 特别适合分类、序列标注、抽取式问答等任务

例如:

  • 文本分类
  • 情感分析
  • 命名实体识别
  • 句子匹配

可以把 BERT 理解为:

一个更擅长“读懂文本”的预训练模型

2. Decoder 架构:GPT 系列

典型代表:

  • GPT
  • GPT-2
  • GPT-3
  • GPT-4 及其后续生成模型

这类模型通常只使用 Transformer 的Decoder部分,采用自回归方式建模:

  • 根据前面的 token 预测下一个 token

特点:

  • 单向生成
  • 擅长续写和生成
  • 更适合开放式文本生成任务

例如:

  • 内容创作
  • 对话生成
  • 代码生成
  • 长文本续写

可以把 GPT 理解为:

一个更擅长“持续生成文本”的预训练模型

3. Encoder-Decoder 架构:T5 / BART

典型代表:

  • T5
  • BART

这类模型同时包含:

  • 编码器
  • 解码器

它们特别适合序列到序列任务,例如:

  • 机器翻译
  • 文本摘要
  • 改写
  • 问答生成

可以把这类模型理解为:

既能理解输入,又能高质量生成输出的模型

七、常见预训练任务

预训练模型之所以强,不只是模型大,更重要的是它们在预训练阶段做了非常关键的任务设计。

1. 语言模型(Language Modeling, LM)

最经典的预训练任务之一是:

  • 根据前文预测下一个词

公式可以写作:

P(wt∣w1,w2,...,wt−1)P(w_t \mid w_1, w_2, ..., w_{t-1})P(wtw1,w2,...,wt1)

这种方式最典型的代表就是 GPT 系列。

例如:

  • 输入:“预训练模型真的很”
  • 输出预测:“强”

2. 掩码语言模型(Masked Language Model, MLM)

MLM 是 BERT 的经典训练方式。

做法是:

  • 随机遮住句子中的一部分 token
  • 让模型根据上下文恢复它们

例如:

  • 原句:“预训练模型很强大”
  • 输入:“预训练 [MASK] 很强大”
  • 目标:“模型”

MLM 的优点是:

  • 可以同时利用左右上下文

3. 下一句预测(NSP)

BERT 原始版本还设计了Next Sentence Prediction

  • 输入两个句子
  • 判断它们是否在原文中相邻

例如:

正样本:

  • 句子 A:“预训练模型很强大”
  • 句子 B:“它们能够迁移到很多任务中”

负样本:

  • 句子 A:“预训练模型很强大”
  • 句子 B:“今天下午天气不错”

这个任务的目标是帮助模型学习句间关系。

4. 其他预训练任务

随着模型发展,研究者也提出了更多任务,例如:

  • RTD(Replaced Token Detection):判断一个 token 是否被替换过
  • SOP(Sentence Order Prediction):判断句子顺序是否正确
  • Span Corruption:遮住一段连续文本再恢复
  • Denoising Autoencoding:对被破坏的文本进行重建

这些任务的核心目标都一致:

  • 让模型在大规模数据中学会语言结构和语义规律

八、BERT、GPT、T5 的典型区别

这是一个非常常见、也非常重要的问题。

模型架构建模方式更擅长的任务
BERTEncoder双向理解分类、NER、匹配、抽取
GPTDecoder自回归生成对话、写作、续写、代码生成
T5Encoder-Decoder输入到输出转换翻译、摘要、问答、改写

如果用一句话概括:

  • BERT 更像阅读理解高手
  • GPT 更像连续写作高手
  • T5 更像输入输出转换高手

九、如何使用预训练模型

现在最常见的实践方式,是借助 Hugging Face Transformers。

1. 直接调用 pipeline

对于很多常见任务,我们甚至不需要手动搭模型,直接用pipeline就可以快速体验:

fromtransformersimportpipeline classifier=pipeline("sentiment-analysis")result=classifier("预训练模型真是太棒了!")print(result)

这种方式适合:

  • 教学演示
  • 快速验证思路
  • 小规模原型开发

2. 加载预训练模型并微调

如果要做正式任务,一般会:

  1. 加载预训练模型
  2. 准备任务数据集
  3. 添加任务输出层
  4. 进行微调训练

例如:

fromtransformersimportBertForSequenceClassification,Trainer model=BertForSequenceClassification.from_pretrained("bert-base-chinese")# 训练数据和参数略trainer=Trainer(model=model,args=training_args,train_dataset=train_dataset)trainer.train()

这就是最典型的“预训练 + 微调”流程。

十、常见应用场景

预训练模型几乎已经覆盖了现代 NLP 的大多数核心任务。

1. 文本分类

例如:

  • 情感分析
  • 垃圾邮件检测
  • 新闻分类
  • 意图识别

2. 序列标注

例如:

  • 命名实体识别
  • 词性标注
  • 信息抽取

3. 问答系统

例如:

  • 抽取式问答
  • 阅读理解
  • 开放域问答

4. 文本生成

例如:

  • 文本摘要
  • 对话系统
  • 文案生成
  • 代码补全

5. 文本匹配与相似度

例如:

  • 句子相似度
  • 语义检索
  • 问题匹配

十一、实践中的一些建议

预训练模型虽然强大,但在实际使用中仍然有不少工程细节需要注意。

1. 模型选择要与任务匹配

一般来说:

  • 分类与理解类任务优先考虑 BERT 类模型
  • 生成类任务优先考虑 GPT 类模型
  • 序列到序列转换任务优先考虑 T5 / BART

2. 资源受限时优先考虑轻量模型

如果显存或计算资源有限,可以考虑:

  • DistilBERT
  • TinyBERT
  • ALBERT
  • MiniLM

这些模型虽然更小,但在很多任务上依然有不错表现。

3. 微调时学习率通常要小

因为预训练模型已经学到了较好的参数,微调阶段如果学习率过大,容易破坏已有知识。

常见起点通常在:

  • 2e-5
  • 3e-5
  • 5e-5

4. 注意输入长度限制

很多模型默认有最大长度,例如:

  • 128
  • 256
  • 512

文本过长时需要:

  • 截断
  • 分段
  • 滑窗
  • 使用适合长文本的模型

5. 训练时注意过拟合

尤其在小数据集上微调时,可以结合:

  • 验证集监控
  • Early Stopping
  • 权重衰减
  • Dropout

十二、预训练模型带来的更深层变化

预训练模型真正改变的,不只是模型效果。

它改变的是我们做 NLP 的思路:

过去更多是:

  • 围绕任务设计模型

现在更多是:

  • 围绕通用模型适配任务

这种转变影响非常深远,因为它让 NLP 从“任务分散优化”走向了“统一能力平台”。

后来更进一步的发展是:

  • 大语言模型
  • 指令微调
  • 对齐训练
  • 多模态预训练

这些都可以看作是预训练思想的自然延伸。

十三、未来发展方向

预训练模型仍在快速演进,常见的发展方向包括:

1. 更大规模

模型参数、训练语料和上下文长度都在不断增长。

2. 多模态融合

不仅处理文本,还结合:

  • 图像
  • 音频
  • 视频
  • 结构化数据

3. 更高效的训练与推理

例如:

  • 模型蒸馏
  • 量化
  • 稀疏化
  • 参数高效微调(PEFT)

4. 领域适应

越来越多模型开始针对垂直领域做预训练,例如:

  • 医疗
  • 法律
  • 金融
  • 科研

5. 伦理与安全

预训练模型能力越强,越需要关注:

  • 偏见问题
  • 幻觉问题
  • 毒性输出
  • 数据合规

十四、总结

预训练模型是现代 NLP 最重要的基础技术之一。

它的核心思想可以概括为:

  • 先在大规模数据上学习通用语言能力
  • 再把这种能力迁移到具体任务

从发展路径来看,大致经历了:

  1. 静态词向量阶段
  2. 上下文感知表示阶段
  3. Transformer 预训练阶段

从模型类型来看,又可以分为:

  • BERT 类 Encoder 模型
  • GPT 类 Decoder 模型
  • T5/BART 类 Encoder-Decoder 模型

理解预训练模型的重要性在于:

  • 它几乎是现代 NLP 的共同基础
  • 很多下游任务本质上都建立在预训练能力之上
  • 它也是理解大语言模型的重要前置知识

如果前面的词向量、RNN、Attention、Transformer 是在学习“模型结构”,
那么预训练模型这一章,真正告诉我们的是:

为什么现代 NLP 不再从零开始,而是从通用语言能力出发。

十五、参考学习方向

如果你想继续往下写,这篇后面很自然可以接:

  1. BERT 预训练细节解析
  2. GPT 自回归生成机制
  3. T5:Text-to-Text 统一框架
  4. 参数高效微调(LoRA / Adapter)
  5. 大语言模型与传统预训练模型的关系
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 19:51:05

DDrawCompat终极指南:轻松解决Windows经典游戏兼容性问题

DDrawCompat终极指南:轻松解决Windows经典游戏兼容性问题 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/dd/DDr…

作者头像 李华
网站建设 2026/4/19 19:51:04

树莓派国内镜像源配置指南:从原理到实践

1. 为什么树莓派需要更换国内镜像源 刚拿到树莓派时,很多新手都会遇到软件包下载速度慢、安装失败的问题。这就像你从国外网购商品,不仅运费贵,还经常卡在海关。树莓派默认使用的是国外软件源服务器,物理距离远、网络跳转多&#…

作者头像 李华
网站建设 2026/4/19 19:49:38

基于Simulink仿真的卫星姿态轨道控制研究:文献学习资料解析与优化设计

卫星姿态轨道控制simulink仿真/姿轨控 卫星姿轨控仿真,基于simulink 自己在国外文献和资料基础上修改 资料包含源程序和英文版报告,是学习卫星姿轨控和simulink仿真的好资料打开Simulink看到卫星姿轨控模型时,我第一反应是这玩意儿比乐高还复…

作者头像 李华
网站建设 2026/4/19 19:49:31

DevEco Studio:快速生成一个类的构造函数

例如,先定义了类的属性:右键单击,选择Generate:然后选择Constructor:选择要使用的属性:点击 OK,就生成了构造函数:

作者头像 李华