本节摘要:预训练-微调范式重塑了整个 NLP。本节对比 BERT(双向编码)和 GPT(单向解码)两大范式的预训练目标、架构差异、适用任务,再讲大模型时代的新范式——指令微调如何让基础模型听懂人话、RLHF 如何对齐人类偏好、Prompt Engineering 如何激发模型能力。最后落到 NLP 工程实践:RAG 检索增强、模型评估、部署优化。读完你会理解为什么 BERT 适合理解类任务、GPT 适合生成类任务,以及面试官追问"大模型是怎么训出来的"时该怎么完整回答。
阅读完本节,你应当能够:
2018 年之前,NLP 每个任务都要从头训模型,数据少效果差。BERT 和 GPT 的出现改变了这个局面:先在大规模无标注文本上预训练一个通用语言模型,再在小规模标注数据上微调到具体任务。这个"预训练-微调"范式让 NLP 性能大幅跃升,也让"训一个大模型然后用很久"成为可能。
但 BERT 和 GPT 从一开始就走向了不同路线,这个分歧至今主导着 NLP 的格局。BERT 用双向注意力(每个词同时看左右),目标是理解——填空、分类、抽取。GPT 用单向注意力(每个词只看左边),目标是生成——续写、对话、翻译。两者背后的哲学差异是:理解需要全局信息(所以双向),生成必须按顺序(所以单向,否则就是作弊)。
到 2026 年,GPT 路线(自回归生成 + 规模化)在大语言模型上全面胜出,但 BERT 路线在理解类任务(分类、检索、抽取)上仍是高效选择。理解这两条线的分野,你才能针对任务选对模型,而不是盲目追大模型。
本节的组织逻辑是:先讲 BERT 和 GPT 的预训练范式对比,再讲大模型时代如何在这两个基础上演化(指令微调、RLHF),最后落到工程实践(RAG、评估、部署)。这是当前 NLP 面试的最高频区。
BERT(Bidirectional Encoder Representations from Transformers)只用 Transformer 的编码器部分,核心是双向注意力——每个词能同时看到左边和右边的上下文。
两个预训练任务:
下游任务适配:
| 任务 | BERT 用法 | 微调方式 |
|---|---|---|
| 文本分类 | 取 [CLS] 向量 + 线性层 | 端到端微调 |
| NER | 每个 token 向量 + CRF | 端到端微调 |
| 句子对 | [CLS] A [SEP] B + 分类 | 端到端微调 |
| QA | 预测答案起止位置 | 端到端微调 |
💡 关键直觉:BERT 强在"理解"。因为双向注意力,每个词的表示融合了完整上下文,适合需要全局信息的任务(分类、匹配、抽取)。但它不能直接做生成——生成需要从左到右,而 BERT 训练时看到了右边的信息,生成时无法保证因果性。
GPT(Generative Pre-trained Transformer)只用 Transformer 的解码器部分(带掩码自注意力,每个词只能看左边),核心是自回归预训练——预测下一个词。
自回归预训练的目标是最大化:P(w_t | w_1, w_2, ..., w_{t-1}),即给定前面所有词,预测当前词。这个目标天然适合生成任务——生成就是不断预测下一个词。
GPT 系列的演进:
| 版本 | 参数量 | 关键突破 |
|---|---|---|
| GPT-1 | 1.17 亿 | 验证预训练-微调可行 |
| GPT-2 | 15 亿 | 零样本能力初现 |
| GPT-3 | 1750 亿 | 上下文学习(few-shot)涌现 |
| GPT-4 | 未公开 | 多模态、推理增强 |
涌现能力是 GPT-3 之后的关键现象:模型大到一定程度,会突然出现小模型没有的能力(few-shot 学习、思维链推理)。这不是渐进提升,而是量变到质变。
| 维度 | BERT | GPT |
|---|---|---|
| 架构 | Transformer 编码器 | Transformer 解码器 |
| 注意力 | 双向 | 单向(掩码) |
| 预训练目标 | MLM(填空) | 自回归(续写) |
| 擅长任务 | 理解类(分类、QA、抽取) | 生成类(对话、翻译、写作) |
| 微调方式 | 全量微调 | 全量微调 / Prompt |
| 代表应用 | 搜索、推荐、NER | ChatGPT、Copilot |
💡 关键直觉:BERT 和 GPT 不是谁更好,而是擅长不同任务。理解类任务(判断、抽取、匹配)用 BERT 系更高效——模型小、推理快、精度够;生成类任务(写作、对话、创作)必须用 GPT 系——因为生成本质是自回归。很多工程团队两个都用:BERT 做检索理解,GPT 做生成回答。
| 模型 | 对 BERT 的改进 |
|---|---|
| RoBERTa | 去掉 NSP、更大 batch、更多数据、动态 MLM |
| ALBERT | 参数共享、分解嵌入,减小参数量 |
| T5 | 统一为 text-to-text 范式,所有任务都是"文本生成文本" |
| XLNet | 结合双向和自回归,解决 BERT 的预训练-微调不一致 |
T5 的"text-to-text"统一范式影响深远——它把所有 NLP 任务都建模成"输入文本 → 输出文本",这成了后来大模型 Prompt 范式的雏形。
基础大模型(预训练后的 GPT)只是"续写机器",不会听指令。要变成对话助手,需要两步后训练:
指令微调(Instruction Tuning / SFT):用大量"指令-回答"对监督微调,让模型学会"听懂人话并回答"。这一步把续写机器变成"能对话的模型"。
RLHF(人类反馈强化学习):进一步对齐人类偏好。流程是:训练一个奖励模型(给回答打分),用强化学习(PPO)优化策略模型让它生成高分回答。这一步让模型变得"有用、诚实、无害"。
⚠️ 常见坑:很多人把 RLHF 等同于"让模型变安全"。其实 RLHF 解决的核心是"有用性"——人类标注员更偏好详细、准确、有结构的回答,强化学习让模型学会这种风格。安全性(不输出有害内容)是偏好的一部分,但不是全部。
大模型时代催生了新的使用范式:
少样本学习(Few-shot / In-context Learning):在 Prompt 里给几个示例,模型就能学会任务,不用微调。这是 GPT-3 涌现的能力。
思维链(Chain-of-Thought):在 Prompt 里要求模型"一步步思考",让模型展示推理过程,复杂推理任务准确率大幅提升。
RAG(检索增强生成):把外部知识库检索和模型生成结合。先用查询检索相关文档,再把文档作为上下文喂给模型生成回答。这解决了大模型知识更新慢、容易幻觉的问题。
def select_nlp_model(task, data_size, latency_budget, knowledge_needs): if task in ["classification", "ner", "matching"] and data_size > 1000: return "BERT 系微调(高效)" elif task == "generation" or "open_ended": if knowledge_needs == "external": return "大模型 + RAG" return "大模型 + Prompt" elif task == "extraction" and latency_budget == "low": return "BERT 或 RoBERTa" elif data_size < 100: return "大模型 few-shot" return "BERT 微调作为基线"
RAG 的核心是检索器和生成器的协同。检索器常用双塔模型(句向量相似度)或 BM25(关键词匹配),生成器用大模型。
| 组件 | 方案 | 关键点 |
|---|---|---|
| 文档切分 | 按段落或固定 token 数 | 切分粒度影响检索精度 |
| 向量化 | BERT 句向量或专用 embedding 模型 | 离线索引 |
| 检索 | 向量数据库(FAISS、Milvus) | top-k 召回 |
| 重排 | 交叉编码器精排 | 提升相关性 |
| 生成 | 大模型 + 检索上下文 | Prompt 工程 |
| 任务 | 指标 | 说明 |
|---|---|---|
| 分类 | 准确率、F1 | 平衡类别用宏平均 |
| 生成(翻译) | BLEU | n-gram 重叠,偏保守 |
| 生成(摘要) | ROUGE | 召回导向 |
| 开放生成 | 人工评估、LLM-as-judge | 自动指标不可靠 |
| RAG | 答案相关性、事实性、检索命中率 | 多维度 |
⚠️ 常见坑:开放生成任务用 BLEU/ROUGE 评估不可靠——它们只看字面重叠,语义相同表达不同会得低分。现代实践用 LLM-as-judge(让大模型当裁判打分)或人工评估。
| 挑战 | 方案 |
|---|---|
| 显存不足 | 量化(INT8/INT4)、卸载到 CPU |
| 推理慢 | KV cache、批处理、推测解码 |
| 长上下文 | 滑动窗口、稀疏注意力 |
| 多用户 | vLLM、TGI 等推理框架 |
💡 关键直觉:大模型推理的核心优化是 KV cache——把已计算的注意力键值缓存,避免重复计算。vLLM 的 PagedAttention 把 KV cache 像操作系统管理内存一样分页管理,大幅提升显存利用率和吞吐。面试时能讲清这个,说明你跟上了 2026 年的推理优化前沿。
| 原则 | 做法 |
|---|---|
| 明确角色 | "你是 XX 专家" |
| 给示例 | few-shot 让模型对齐格式 |
| 分步指令 | 复杂任务拆成多步 |
| 限定输出 | "用 JSON 格式""不超过 100 字" |
| 思维链 | "一步步思考"激发推理 |
回到第 1 章的开头——AI、CV、NLP 三大方向共享同一套深度学习骨架,只是在不同数据上特化。把这些骨架吃透,面对任何新模型你都能快速归位。
补一段 2026 年面试的高频考点:微调方式的选择逻辑。全参数微调动辄几十亿参数,显存和存储成本高,于是参数高效微调(PEFT)成了默认起点。LoRA 的核心是把权重增量约束成两个低秩矩阵的乘积,训练参数量降到原来的百分之一以下,效果接近全参数微调;QLoRA 更进一步,先把基座模型量化到 4bit 再训 LoRA,一张消费级显卡就能微调中模型。选型口诀:数据多、任务重、算力足,全参数;数据少、多任务共用基座,LoRA;显存极度紧张,QLoRA。
面试追问常落在两个细节。其一,LoRA 的秩怎么选?经验值 8 到 64,任务越简单秩可以越小;秩过大容易过拟合小数据集。其二,LoRA 挂在哪些层?早期实践只挂注意力的 Q、V 矩阵,后续研究发现挂到所有线性层(含 FFN)效果更稳。能答出这两条,说明你真跑过微调而不是只读过博客。