图 1-3 T5 的 text-to-text 框架:翻译、分类、摘要、回归全部表述为“输入文本 → 输出文本”。来源:Raffel et al., Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer, JMLR 2020, Figure 1。
图 2-2 RLHF 三阶段:(1) SFT 监督微调 → (2) 训练 Reward Model → (3) 用 PPO 按奖励优化策略。来源:Ouyang et al., Training language models to follow instructions with human feedback (InstructGPT), 2022, Figure 2。
图 3-1 左:Standard Prompting 直接给答案(错);右:Chain-of-Thought 逐步推理(对)。来源:Wei et al., Chain-of-Thought Prompting Elicits Reasoning in Large Language Models, NeurIPS 2022, Figure 1。
这是我在墨大上 COMP90042 NLP 时的笔记,这一篇是关于课程中预训练模型与大语言模型的部分,包括 GPT、BERT、T5、RLHF、Prompting、指令微调,以及 PEFT 和 LoRA。
1. 预训练模型 GPT / BERT / T5
1.1 预训练模型的定义
1.2 GPT(Generative Pre-trained Transformer)
GPT-1(2018)
训练/模型细节
项目
内容
子词切分
Byte-Pair Encoding (BPE)
规模
12 层 Transformer,117M 参数
预训练语料
BookCorpus
语料特点
包含 7000 本风格多样的独特书籍,提供大量连续文本(长程依赖更易学)
适配下游任务(Downstream tasks)
微调示例:情感分类
W_y,用最后一个词的输出h_n作为输入:P(y\mid x) = \text{softmax}(h_n W_y)= -\log(0.4)(模型只给 positive 0.4 概率时)微调示例:问答(Question Answering)
GPT 的效果(GLUE 等基准)
基准
任务类型
MNLI, RTE
textual entailment 文本蕴含
QQP, STS-B, MRPC
sentence similarity 句子相似度
QNLI
answerability prediction 可回答性预测
SST-2
sentiment analysis 情感分析
CoLA
sentence acceptability 句子可接受性
1.3 BERT(Bidirectional Encoder Representations from Transformers, 2018)
核心区别:使用双向 self-attention。
预训练目标:Masked Word Prediction(掩码语言模型, MLM)
训练/模型细节
项目
内容
子词切分
WordPiece
BERT-base
12 层 Transformer,110M(1.1 亿) 参数
BERT-large
24 层 Transformer,340M(3.4 亿) 参数
预训练语料
Wikipedia + BookCorpus
训练成本
需要多块 GPU,耗时数天
适配下游任务
P(y \mid x) = \text{softmax}(h_{[\text{CLS}]} W_y)示例:垃圾邮件检测(Spam Detection)
BERT 的效果:原论文在当时的 GLUE、SQuAD 等语言理解基准上取得了领先结果;这些是特定数据集、模型和实验设置下的比较。
Encoder(编码器)
1.4 Decoder 与 Encoder-Decoder
Decoder(解码器)
Encoder-Decoder(编码器-解码器)
三者对比
架构
代表
注意力
擅长
Encoder-only
BERT
双向
分类、抽取式问答、序列标注
Decoder-only
GPT 系列、LLaMA
单向(causal)
生成、few-shot、对话
Encoder-Decoder
T5、BART、原始 Transformer
编码双向 + 解码单向 + cross-attention
翻译、摘要等 seq2seq 任务
1.5 T5(Text-to-Text Transfer Transformer, 2019)
预训练目标:Span Corruption(片段替换)
其他可选目标(对比)
目标
例子
说明
Prefix language model(前缀语言模型)
cows love to → eat grass
给定前缀,预测接下来的内容(类似 GPT,但用 encoder-decoder 实现)
Masked language model(掩码语言模型)
cows <M> <M> eat grass → cows love to eat grass
随机遮蔽词语并预测(类似 BERT)
Shuffling(打乱顺序)
grass cows to love eat → cows love to eat grass
把词序打乱,训练模型还原
Drop tokens(丢弃词语)
cows love grass → cows love to eat grass
删除部分输入词语,训练模型重建完整原文
预训练语料:Filtered C4(Colossal Clean Crawled Corpus)
微调
T5 的效果
项目
内容
规模版本
small (60M)、base (220M)、large (770M)、3B、11B
GLUE
包含 9 个语言理解任务的基准
CNN/DM
摘要任务
WMT
机器翻译任务
结论
最大版本在论文评测的多个基准上取得了当时领先的结果;不等同于通用语言能力达到人类水平
2. 大语言模型 LLM 与 RLHF
2.1 LLM 的定义
**大语言模型(LLM)**通常指在大量文本上预训练、规模较大的语言模型,并没有统一的参数量门槛。本节主要讨论 Transformer 模型,以及它们的零样本泛化、上下文学习和指令遵循能力。
相关方法的发展线索可概括为:统计语言模型 → 神经语言模型 → 整模型预训练 → 扩大模型与数据规模 → 指令微调和偏好对齐。Word2Vec 是词表示方法,不应直接等同于完整的语言模型;规模扩大与对齐也不是同一件事。
2.2 生成式预训练 Transformer(GPT 系列)与能力涌现
预训练/微调在 NLP 中的作用:预训练可通过"参数初始化"的方式提升下游任务性能。
模型
参数量
层数
维度
训练数据
训练方式
GPT-1
117M
12
768
BookCorpus (~1B words)
自监督预训练 + 监督微调
GPT-2
1.5B
48
1600
WebText (~10B words)
自监督预训练
GPT-3
175B
96
12288
Common Crawl、WebText、书籍、Wikipedia 的混合语料
自监督预训练
GPT-2 的涌现能力:Zero-shot learning(零样本学习)
GPT-3 与 In-Context Learning
Traditional fine-tuning vs In-context Learning
维度
Traditional Fine-tuning
In-context Learning
参数
需要更新模型参数
不更新任何参数
数据
需要大量标注样本
只需少量 demonstrations(甚至 0 个)
流程
预训练 → 每个任务单独微调 → 部署多个模型
一个模型 + 不同 prompt
成本
每个任务都要训练与存储
推理成本高(长 prompt),但无训练成本
In-Context Learning 的局限(Limitations)
2.3 InstructGPT 与 RLHF(Reinforcement Learning from Human Feedback)
整体思路:收集人类示范与偏好,用监督学习和强化学习调整模型行为。下面以 InstructGPT 论文公开的三阶段流程为例;它也帮助理解 ChatGPT 的训练思路,但不能把 InstructGPT 的数据量和模型配置直接当成 ChatGPT 的完整训练细节。
第一步:监督式微调 SFT(Supervised Fine-Tuning)
1. 高质量数据收集(High-quality Data Collection)
2. 预训练模型的微调(Fine-tuning Pretrained Model)
第二步:奖励模型 RM(Reward Model)
1. 输出生成(Output Generation)
2. 人工评级(Human Ranking)
3. 奖励模型训练(Reward Model Training)
第三步:近端策略优化 PPO(Proximal Policy Optimization)
1. 抽取提示:从数据集中抽取 prompt,如"写一个关于墨尔本的故事";论文的 PPO 数据集约含 31,000 条 prompts,这一阶段不需要逐条人工示范答案;
2. 生成回答:用当前的策略模型生成文本。策略初始来自 SFT 模型,随后在训练迭代中由 PPO 更新;并不是每次面向用户生成回答时都即时更新参数;
3. 奖励计算:生成的输出交由第二步训练好的 Reward Model 评估,返回一个 scalar reward;
4. 策略更新:根据奖励值用 PPO 算法更新策略。
额外约束:训练中加入相对 SFT 参考模型的 KL 惩罚,限制策略偏移,缓解过度优化奖励模型带来的问题;它不能保证消除所有 reward hacking。
对话能力的适配
对话模型还需要多轮对话等形式的数据与评估,关注上下文衔接、拒绝不当请求和格式遵循。这属于训练目标与数据设计,不是上述三阶段流程中的固定“第四步”。
参考:InstructGPT 论文。
2.4 其他 LLM:LLaMA
LLaMA(Large Language Model Meta AI)
这里指 2023 年的第一代 LLaMA,参数规模为 7B–65B。
参考:LLaMA 论文。
2.5 LLM 的三种核心能力
能力
含义
例子
In-Context Learning(情境中学习)
根据当前输入中的指令、示例与信息适应任务,不更新模型参数;跨会话记忆需要另外的系统机制
给两个示例后照做新任务
Step-by-Step Reasoning(逐步推理)
把复杂问题拆解为小步骤
数学计算、编程、逻辑推理
Instruction Following(指令跟随)
遵循用户给出的明确指令,成为多种任务的高效工具
按规定写邮件、按食谱生成步骤、在软件环境中执行命令序列
3. Prompting 与思维链
3.1 Zero-shot 与 Few-shot In-Context Learning
设置
示例数
说明
Zero-shot
0
只给指令,如 "Translate to French: cheese"
One-shot
1
给 1 个示例
Few-shot
数个
给若干示例,性能通常更好
3.2 Prompting 的局限
失败案例(Standard Prompting)
这个示例的错误答案没有正确完成
23-20+6的计算;不能把 27 解释为23+6,因为后者应为 29。替代方案:Change the prompting style ✅(换一种提示方式,即下面的 CoT)
3.3 思维链提示(Chain-of-Thought, CoT)
定义:在示例中提供中间推理步骤,或提示模型生成这样的步骤,再得到最终答案。原论文在多种算术、常识和符号推理任务上观察到了提升,但中间步骤并不保证正确。
对比
方式
提示
输出
Standard Prompting
仅给出问题与答案
The answer is 27 ❌
Chain-of-Thought Prompting
逐步引导模型推理
The answer is 9 ✅
示例
3.4 模型规模的涌现特性(Emergent Property of Model Scale)
3.5 两种 CoT 变体
Zero-Shot CoT(零样本思维链)
优点
缺点
无需手工构造示例
推理质量依赖模型本身,较不稳定
Manual CoT(人工思维链)
优点
缺点
可以明确示范所需的推理格式;效果依赖示例与任务是否匹配
需要人工构造和核查示例,示例错误也可能被模仿
3.6 数据集补充说明
3.7 提示注入与越狱
3.8 In-Context Learning 的优缺点总结
Pros
Cons
4. 指令微调 Instruction Tuning
4.1 扩展微调(Scaling up fine-tuning):传统两阶段范式
步骤 1:预训练(Pretrain)
项目
内容
方式
在海量文本(图书、维基百科等)上进行自监督学习(self-supervised learning)
模型
BERT 等
数据集
Wikipedia 等
目标
预测被遮盖的词(语言建模)
步骤 2:微调(Finetune)
项目
内容
方式
在带标签的数据集上进行监督学习(supervised learning)
模型
步骤 1 中已预训练的模型
数据集
例如"垃圾邮件及其标签"
目标
训练分类器,执行具体任务(如垃圾邮件检测)
4.2 Instruction Tuning(指令微调)
定义:指令微调(Instruction Fine-Tuning)是在以自然语言描述任务的指令数据上进行的监督微调(SFT)。它属于后训练(Post-training)的一种方式;后训练还可以包括偏好优化等步骤,这些术语不是完全同义。
(x, y)对:给一句自然语言指令,配上应有的回答;SFT 细节
4.3 Alpaca(Stanford Alpaca)
成果:在作者的小规模、单轮指令遵循初步评测中,Alpaca 7B 与 text-davinci-003 表现接近。这不等于二者在所有任务、安全性和可靠性上等价。
学习过程
Step 1 – Seed Generation(种子生成,Self-Instruct)
Step 2 – Fine-tuning
参考:Stanford Alpaca 项目说明。
4.4 T5 的视角:Pretraining / Multi-task Training
做法:先预训练,然后在**多个具体任务(Task A, B, C…)**上微调,并在同样的任务上评估。
新式语言模型的趋势(GPT-3、LLaMA)
4.5 三种范式对比:Pretrain-Finetune vs Prompting vs Instruction Tuning
范式
代表
步骤
特点
Pretrain–Finetune
BERT, T5
Pretrained LM → 在 task A 上微调 → 用于 task A 推理
每个任务训练一个专属模型;通常需要大量 task-specific examples
Prompting
GPT-3
Pretrained LM → 通过 few-shot 提示或提示设计 → 用于 task A
无需参数更新,灵活调用;对提示敏感,性能依赖提示质量
Instruction Tuning
FLAN
预训练 LM → 在多个 task 上通过自然语言指令做指令微调 → 泛化用于新 task A
模型通过语言指令学会执行多种任务;对 unseen task 具备泛化能力
4.6 FLAN(Instruction Fine-Tuning)
核心做法:收集 (instruction, output) 对的示例,覆盖多个任务,并微调一个语言模型。
Task 设置
项目
内容
任务类型
12 种(含分类任务与生成任务)
数据集
62 个
Unseen tasks 的构造
属于同一 cluster 的任务只能出现在训练集或测试集中,不能同时出现(防止同族任务泄漏,真正考察泛化)
模板
对同一任务手工创建多个模板(multiple templates),增加指令多样性
效果:Zero-shot 的 FLAN 在三个未见任务类型上的表现,相较于 zero-shot 和 few-shot 的 GPT-3,在经过指令微调后有明显提升。
泛化到新任务(Generalisation to New Tasks)
扩展任务数量(后续 FLAN 版本)
项目
数量
扩展范围
后续工作将指令微调扩大到约 1.8K 个任务,并研究模型规模与 CoT 数据的影响
Held-out tasks
未参与微调训练,用于测泛化
其他发现
参考:原始 FLAN、Scaling Instruction-Finetuned Language Models。
4.7 优点与局限
Benefits
Limitations
4.8 能力与局限的讨论
流畅地输出文字,不等于已经解决可靠性和泛化问题。下面区分研究中的观察与更广泛的判断。
讨论角度
要点
事实与规划
模型可以辅助写作,也可能编造事实或给出不可行的计划;指令微调和人类反馈不能提供正确性保证,具体能力需要实际评测
自我纠错
相关研究发现,在缺少外部反馈的特定推理设置下,仅要求模型检查并修改自己的答案,未必提高正确率,甚至会把原本正确的答案改错;不能由此推出所有带工具或验证器的纠错方法都无效
Reversal Curse(反转诅咒)
在某些实验中,训练模型掌握“A 是 B”后,它未能自动掌握“B 是 A”的对应查询。这说明对一类表达的拟合未必自动带来对逆向表达的泛化,而非说所有自然语言关系都可以直接反转
参考:Large Language Models Cannot Self-Correct Reasoning Yet、The Reversal Curse。
5. 参数高效微调 PEFT 与 LoRA
5.1 为什么需要 PEFT
PLM 与 LLM:前者强调经过预训练,后者强调规模;两者并非互斥类别,也没有统一的参数量分界。本节关心的是模型变大后,如何降低任务适配的成本。
随着模型规模增大,微调成本越来越高
模型变大后,完整微调会面临更多成本与风险:
问题
说明
可扩展性问题
计算成本巨大(每个任务都要存一份完整模型副本)
训练不稳定性
如过拟合、梯度干扰
灾难性遗忘(Catastrophic forgetting)
在新任务上微调后,模型遗失原本的通用能力
In-context learning 与 fine-tuning 是两种互补的适配方式。ICL 无需更新参数,但仍有局限:
局限
说明
Inefficiency
每次推理都必须重新处理整个 prompt(长 prompt 成本高)
Performance
只给提示未必达到目标任务所需的效果;与微调的优劣需要在相同设置下比较
Sensitivity
对提示语的措辞、例子顺序等非常敏感
Lack of clarity
单次提示下的成功,不等于模型能在其他输入和提示下稳定泛化
→ 于是出现 From Fine-tuning to Parameter-efficient Fine-tuning。
5.2 历史脉络
5.3 只微调部分参数(Fine-tuning only some parameters)
1. 大模型难以完全微调
2. SOTA 模型本身就严重 over-parameterized
3. Parameter-efficient fine-tuning 能接近完整微调的性能
5.4 模块化与组合式表示(Modular and Compositional Representations)
a) Models are increasing in size
b) Unseen Scenarios(未见场景)
c) Catastrophic Interference(灾难性干扰)
d) Efficient Updating of Models(高效更新)
5.5 架构概览:三个计算函数(Three Computation Functions)
PEFT 方法可归为对"冻结的预训练模型"做三类组合:
类型
做法
代表
加法式(Addition-based)
在模型旁挂小的可训练模块
Adapter、Prefix Tuning、Prompt Tuning
选择式(Selection-based)
选择部分参数或稀疏的更新量进行训练
BitFit(只训 bias)、Diff Pruning
重参数化式(Reparameterization)
学习权重的低秩/压缩变化量
LoRA、Compacter
5.6 稀疏子网络与剪枝(Sparse Subnetworks)
稀疏性与参数高效适配有关,但普通剪枝不等于 PEFT。
稀疏子网络(Sparse Subnetworks)
5.7 LoRA(Low-Rank Adaptation)
核心概念
W,而是只更新权重的变化量\Delta W:W' = W + \Delta W\Delta W = B \cdot A这里省略常用的缩放系数
\alpha/r,只突出低秩更新的结构。"Low-rank" 的意思
W是原来的权重矩阵,不要求它本身一定满秩;r \ll d。效率(Efficient):参数量计算
W为1024 \times 1024(共 1,048,576 ≈ 100 万个参数);A\,(r \times d)、B\,(d \times r),其中r \ll d;d = 1024,\ r = 8时:A:8 \times 1024,B:1024 \times 82 \times 1024 \times 8 = \mathbf{16{,}384}1 - \frac{16{,}384}{1{,}048{,}576} \approx 98.4\%前向计算(Low-Rank Composition)
\text{Output} = (W + B\cdot A)\,x = W\cdot x + B\cdot(A\cdot x)符号
含义
W冻结的预训练权重(不更新)
A, B仅这两个是 trainable
x输入向量,通常是 token embedding 或上一层的输出
反向传播:只计算并保存需要训练的参数梯度,优化器只更新
A和B;W保持冻结。计算仍可能经过冻结的线性层向前传播梯度,不能理解成这一层完全不参与反向传播。优势
A和B,而不是整个W;BA合并回W',结构不变);LoRA 及其变体
变体
特点
LoRA
标准低秩适配,插在注意力/FFN 的线性层旁
LoRA-FA
冻结下投影矩阵
A,只训练上投影矩阵B,减少激活显存QLoRA
4-bit 量化基础模型 + LoRA 微调,单卡可训大模型
HydraLoRA
使用共享
A与多个B的非对称结构,并通过路由组合不同组件,处理混合数据中的不同成分5.8 PEFT 方法对比
下表中的参数比例是常见量级示意,实际取决于模型、模块大小和可训练层数。
方法
可训练参数
是否改结构
推理开销
Full Fine-tuning
100%
否
无(但每任务一份)
LoRA
取决于秩和注入位置,通常远少于全部参数
增加训练旁路,部署时可合并
合并后通常不增加
Adapter
1%–5%
是(插层)
略增(串行)
Prefix/Prompt Tuning
<0.1%
否
占用上下文长度
BitFit
~0.01%(仅 bias)
否
无
稀疏选择/剪枝
取决于方法;普通压缩剪枝不一定属于 PEFT
选择连接或更新量
稀疏参数减少不一定自动带来实际加速
参考:LoRA、LoRA-FA、QLoRA、HydraLoRA。