NLP学习笔记12预训练模型——从 BERT 到 GPT 与 T5作者Ye Shun日期2026-04-19一、前言如果说早期 NLP 模型更像“为某一个任务单独训练一个模型”那么预训练模型的出现改变了整个自然语言处理的工作方式。它的核心变化在于先用海量通用语料学习语言规律再把已经学到的能力迁移到具体任务上这种模式通常被概括为预训练Pre-training微调Fine-tuning也正是因为这种范式NLP 才真正进入了“通用语言模型”时代。今天我们常见的很多强模型例如BERTRoBERTaGPTT5BART本质上都建立在预训练思想之上。这篇笔记将围绕以下几个问题展开什么是预训练模型为什么它比传统 NLP 方法更强预训练模型的发展经历了哪些阶段BERT、GPT、T5 分别代表什么架构思路常见预训练任务有哪些如何在实际任务中使用预训练模型二、什么是预训练模型预训练模型Pre-trained Models指的是先在大规模通用文本数据上进行训练学习语言的通用表示能力再在具体任务上进行微调的模型。这个思路的关键不是“从零开始学某个任务”而是先学习语言本身再适配具体任务例如一个模型可能先在海量新闻、网页、书籍和百科文本上学习词语之间的关系句子结构上下文依赖语义表达规律然后再把这种能力迁移到情感分析命名实体识别问答系统文本摘要文本生成这就是预训练模型的核心价值。三、预训练模型为什么重要在预训练模型出现之前传统 NLP 模型通常存在几个明显问题每个任务都要单独设计特征需要较多标注数据泛化能力有限不同任务之间难以复用而预训练模型带来的变化非常大1. 减少对标注数据的依赖标注数据获取往往昂贵而预训练模型已经提前学到了大量语言知识因此在下游任务中通常只需要较少标注样本就能取得不错效果。2. 降低特征工程成本过去很多任务要人工设计n-gram 特征词性特征句法特征词典特征而预训练模型往往可以自动学习这些更高层次的表示。3. 提高跨任务迁移能力同一个预训练模型只需替换输出层或稍作微调就可以用于很多不同任务。4. 显著提升开发效率现在我们做很多 NLP 任务时第一步不再是“自己设计模型”而是选择一个合适的预训练模型在此基础上微调或直接推理四、传统方法与预训练模型的对比特征传统 NLP 模型预训练模型数据需求需要较多标注数据少量标注数据也可取得较好效果训练方式从零开始训练预训练 微调特征来源依赖人工特征工程自动学习表示泛化能力多为任务特定具有较强迁移能力开发效率相对较低相对更高简单来说预训练模型让我们从“任务中心”转向了“语言能力中心”。五、预训练模型的发展历程预训练思想不是一夜之间成熟的而是经历了几个阶段。1. 词向量时代代表模型包括Word2VecGloVeFastText这个阶段的主要贡献是把词表示成低维稠密向量让模型具备一定语义表示能力例如“国王”和“王后”在向量空间里是接近的“中国”和“北京”也会形成一定关系但这一阶段仍有明显局限词向量是静态的同一个词在不同上下文中的表示相同无法很好处理一词多义例如“苹果”在“我喜欢吃苹果”中指水果在“苹果发布了新手机”中指公司静态词向量无法区分这两种含义。2. 上下文感知表示阶段代表模型包括ELMoULMFiT这一阶段的突破是词表示开始依赖上下文同一个词在不同句子中会有不同表示这使模型开始真正具备“动态理解上下文”的能力。不过这一阶段虽然重要但真正把预训练推向主流的是 Transformer 架构的出现。3. Transformer 预训练阶段从 BERT、GPT 开始预训练模型进入高速发展阶段。这个阶段的几个关键特征是基于 Transformer 架构可以在更大规模语料上训练更适合迁移学习在多个任务上取得显著提升这也是现代预训练模型的主流形态。六、三类主流预训练模型架构从整体架构来看预训练模型大致可以分为三类。1. Encoder 架构BERT 系列典型代表BERTRoBERTaALBERTDeBERTa这类模型通常只使用 Transformer 的Encoder部分。特点双向建模上下文擅长理解类任务特别适合分类、序列标注、抽取式问答等任务例如文本分类情感分析命名实体识别句子匹配可以把 BERT 理解为一个更擅长“读懂文本”的预训练模型2. Decoder 架构GPT 系列典型代表GPTGPT-2GPT-3GPT-4 及其后续生成模型这类模型通常只使用 Transformer 的Decoder部分采用自回归方式建模根据前面的 token 预测下一个 token特点单向生成擅长续写和生成更适合开放式文本生成任务例如内容创作对话生成代码生成长文本续写可以把 GPT 理解为一个更擅长“持续生成文本”的预训练模型3. Encoder-Decoder 架构T5 / BART典型代表T5BART这类模型同时包含编码器解码器它们特别适合序列到序列任务例如机器翻译文本摘要改写问答生成可以把这类模型理解为既能理解输入又能高质量生成输出的模型七、常见预训练任务预训练模型之所以强不只是模型大更重要的是它们在预训练阶段做了非常关键的任务设计。1. 语言模型Language Modeling, LM最经典的预训练任务之一是根据前文预测下一个词公式可以写作P(wt∣w1,w2,...,wt−1)P(w_t \mid w_1, w_2, ..., w_{t-1})P(wt​∣w1​,w2​,...,wt−1​)这种方式最典型的代表就是 GPT 系列。例如输入“预训练模型真的很”输出预测“强”2. 掩码语言模型Masked Language Model, MLMMLM 是 BERT 的经典训练方式。做法是随机遮住句子中的一部分 token让模型根据上下文恢复它们例如原句“预训练模型很强大”输入“预训练 [MASK] 很强大”目标“模型”MLM 的优点是可以同时利用左右上下文3. 下一句预测NSPBERT 原始版本还设计了Next Sentence Prediction输入两个句子判断它们是否在原文中相邻例如正样本句子 A“预训练模型很强大”句子 B“它们能够迁移到很多任务中”负样本句子 A“预训练模型很强大”句子 B“今天下午天气不错”这个任务的目标是帮助模型学习句间关系。4. 其他预训练任务随着模型发展研究者也提出了更多任务例如RTDReplaced Token Detection判断一个 token 是否被替换过SOPSentence Order Prediction判断句子顺序是否正确Span Corruption遮住一段连续文本再恢复Denoising Autoencoding对被破坏的文本进行重建这些任务的核心目标都一致让模型在大规模数据中学会语言结构和语义规律八、BERT、GPT、T5 的典型区别这是一个非常常见、也非常重要的问题。模型架构建模方式更擅长的任务BERTEncoder双向理解分类、NER、匹配、抽取GPTDecoder自回归生成对话、写作、续写、代码生成T5Encoder-Decoder输入到输出转换翻译、摘要、问答、改写如果用一句话概括BERT 更像阅读理解高手GPT 更像连续写作高手T5 更像输入输出转换高手九、如何使用预训练模型现在最常见的实践方式是借助 Hugging Face Transformers。1. 直接调用 pipeline对于很多常见任务我们甚至不需要手动搭模型直接用pipeline就可以快速体验fromtransformersimportpipeline classifierpipeline(sentiment-analysis)resultclassifier(预训练模型真是太棒了)print(result)这种方式适合教学演示快速验证思路小规模原型开发2. 加载预训练模型并微调如果要做正式任务一般会加载预训练模型准备任务数据集添加任务输出层进行微调训练例如fromtransformersimportBertForSequenceClassification,Trainer modelBertForSequenceClassification.from_pretrained(bert-base-chinese)# 训练数据和参数略trainerTrainer(modelmodel,argstraining_args,train_datasettrain_dataset)trainer.train()这就是最典型的“预训练 微调”流程。十、常见应用场景预训练模型几乎已经覆盖了现代 NLP 的大多数核心任务。1. 文本分类例如情感分析垃圾邮件检测新闻分类意图识别2. 序列标注例如命名实体识别词性标注信息抽取3. 问答系统例如抽取式问答阅读理解开放域问答4. 文本生成例如文本摘要对话系统文案生成代码补全5. 文本匹配与相似度例如句子相似度语义检索问题匹配十一、实践中的一些建议预训练模型虽然强大但在实际使用中仍然有不少工程细节需要注意。1. 模型选择要与任务匹配一般来说分类与理解类任务优先考虑 BERT 类模型生成类任务优先考虑 GPT 类模型序列到序列转换任务优先考虑 T5 / BART2. 资源受限时优先考虑轻量模型如果显存或计算资源有限可以考虑DistilBERTTinyBERTALBERTMiniLM这些模型虽然更小但在很多任务上依然有不错表现。3. 微调时学习率通常要小因为预训练模型已经学到了较好的参数微调阶段如果学习率过大容易破坏已有知识。常见起点通常在2e-53e-55e-54. 注意输入长度限制很多模型默认有最大长度例如128256512文本过长时需要截断分段滑窗使用适合长文本的模型5. 训练时注意过拟合尤其在小数据集上微调时可以结合验证集监控Early Stopping权重衰减Dropout十二、预训练模型带来的更深层变化预训练模型真正改变的不只是模型效果。它改变的是我们做 NLP 的思路过去更多是围绕任务设计模型现在更多是围绕通用模型适配任务这种转变影响非常深远因为它让 NLP 从“任务分散优化”走向了“统一能力平台”。后来更进一步的发展是大语言模型指令微调对齐训练多模态预训练这些都可以看作是预训练思想的自然延伸。十三、未来发展方向预训练模型仍在快速演进常见的发展方向包括1. 更大规模模型参数、训练语料和上下文长度都在不断增长。2. 多模态融合不仅处理文本还结合图像音频视频结构化数据3. 更高效的训练与推理例如模型蒸馏量化稀疏化参数高效微调PEFT4. 领域适应越来越多模型开始针对垂直领域做预训练例如医疗法律金融科研5. 伦理与安全预训练模型能力越强越需要关注偏见问题幻觉问题毒性输出数据合规十四、总结预训练模型是现代 NLP 最重要的基础技术之一。它的核心思想可以概括为先在大规模数据上学习通用语言能力再把这种能力迁移到具体任务从发展路径来看大致经历了静态词向量阶段上下文感知表示阶段Transformer 预训练阶段从模型类型来看又可以分为BERT 类 Encoder 模型GPT 类 Decoder 模型T5/BART 类 Encoder-Decoder 模型理解预训练模型的重要性在于它几乎是现代 NLP 的共同基础很多下游任务本质上都建立在预训练能力之上它也是理解大语言模型的重要前置知识如果前面的词向量、RNN、Attention、Transformer 是在学习“模型结构”那么预训练模型这一章真正告诉我们的是为什么现代 NLP 不再从零开始而是从通用语言能力出发。十五、参考学习方向如果你想继续往下写这篇后面很自然可以接BERT 预训练细节解析GPT 自回归生成机制T5Text-to-Text 统一框架参数高效微调LoRA / Adapter大语言模型与传统预训练模型的关系