1. Prompt-Tuning 方法进阶
Prompt-Tuning 是通过设计任务相关的模板或指令,引导预训练模型完成下游任务的技术。其核心思想是通过少量可训练参数或示例,激发模型隐含的知识,从而减少对全量微调的依赖。
(1)上下文学习(In-Context Learning, ICL)
- 原理 :通过选择少量标注样本作为提示(Prompt),直接指导模型生成结果。
- Zero-shot: 仅提供任务描述,无示例。
- One-shot: 提供一个示例。
- Few-shot: 提供多个示例。
- 优点:无需标注数据即可快速适应新任务,简单易用。
- 缺点:性能依赖示例质量,模型规模越大效果越显著,但受限于上下文长度和推理成本。
示例:
- 任务 :情感分类(输入文本,输出选项 A/B/C)。
- Zero-shot: 输入描述 + 测试文本 → 输出选项。
- One-shot: 描述 + 示例(如"这部电影太棒了"→ A) + 测试文本 → 输出选项。
2. 指令学习(Instruction-Tuning)
指令学习通过明确的任务指令(Instruction)降低模型歧义性,提升复杂任务的泛化能力。
(1)与 Prompt-Tuning 的区别
Prompt-Tuning | Instruction-Tuning |
---|---|
依赖模型隐式推断任务(如补全句子)。 | 明确任务类型和输出格式(如"判断情感倾向并选择选项")。 |
更适合生成任务(如续写句子)。 | 更适合判别任务(如分类)。 |
无需微调模型参数。 | 需要微调模型以适配指令模式。 |
(2)实现步骤
- 数据收集:生成包含指令和输出的指令集(如"翻译成英文"→ "Hello")。
- 微调:在指令集上训练模型,使其理解并执行指令。
示例:
- 任务 :文本补全。
- Prompt: "带女朋友去了一家餐厅,她吃的很开心。这家餐厅太___了!" → 输出"棒"。
- Instruction: "判断以下文本的情感倾向,选择最合适的选项:文本:'带女朋友去了一家餐厅,她吃的很开心。' 选项:A=正面, B=中性, C=负面" → 输出"A"。
3. 思维链(Chain-of-Thought, CoT)
CoT 通过引入中间推理步骤,提升模型在复杂推理任务(如数学问题)中的表现。
(1)分类
类型 | 原理 |
---|---|
Few-shot CoT | 在示例中加入推理步骤(如"5+6=11"),引导模型生成答案。 |
Zero-shot CoT | 通过提示词(如"Let's think step by step")直接生成推理步骤。 |
(2)特点
- 逻辑性:推理步骤需相互连接形成完整链条。
- 全面性:覆盖所有可能因素(如数学问题中的每一步计算)。
- 可行性:步骤需可操作(如"先加后减")。
示例:
- 数学问题 :
- 输入:"罗杰有 5 个球,买了 2 盒网球(每盒 3 个),总共有多少个?"
- CoT 推理:"5(初始球数) + 2×3(每盒网球数) = 11。"
4. 参数高效微调(PEFT)方法
PEFT 通过仅微调少量参数,降低大模型训练成本,同时保留预训练知识。
(1)方法对比
方法 | 关键思想 | 计算开销 | 适用任务 |
---|---|---|---|
Prefix-Tuning | 在输入前添加可训练的伪 tokens 作为 Prefix,仅训练 Prefix 参数。 | 低 | 文本生成任务(如对话生成) |
Prompt-Tuning | 仅在输入层添加可训练的 Prompt Embedding。 | 最低 | 少样本任务(如分类) |
Adapter-Tuning | 在模型层间插入轻量级适配器模块(Down-project + Non-linear + Up-project)。 | 低 | NLP 任务(翻译、分类) |
LoRA | 通过低秩矩阵分解近似权重更新(ΔW = A×B),仅训练低秩矩阵。 | 更低 | 大模型微调(如 GPT-4、LLaMA) |
(2)LoRA 原理
-
公式:
ΔW=A×BΔW=A×BΔW=A×B
其中 A∈Rd×r, B∈Rr×d, r≪dA∈R^{d×r}, B∈R^{r×d}, r≪dA∈Rd×r, B∈Rr×d, r≪d。
-
优势:
- 减少可训练参数量(通常 r=8~64)。
- 避免引入额外计算延迟(如 Adapter-Tuning)。
5. 结构图与示例
(1)Prefix-Tuning 与 Prompt-Tuning 对比
plaintext
Prefix-Tuning:
输入 → [Prefix Tokens] + [输入文本] → Transformer 层(冻结参数)
↓
输出
Prompt-Tuning:
输入 → [Prompt Tokens] + [输入文本] → Transformer 层(冻结参数)
↓
输出
- 区别:Prefix-Tuning 在每一层添加前缀,Prompt-Tuning 仅在输入层添加。
(2)Adapter-Tuning 结构
plaintext
Transformer 层(冻结)
↓
Down-project(低维映射)
↓
Non-linear Layer(激活函数)
↓
Up-project(恢复高维)
↓
Skip-connection(残差连接)
(3)生活化示例
- Prefix-Tuning:就像给厨师一个"秘方前缀",告诉他"先加盐再加糖",然后直接做出甜点。
- LoRA:类似用"小贴士"调整菜谱(如"将火候调低 10%"),而不需要重写整个菜谱。
总结
- Prompt-Tuning 和 CoT:适合快速适配任务,但依赖模型规模和示例质量。
- Instruction-Tuning:通过明确指令降低歧义,更适合复杂任务。
- PEFT 方法:LoRA 是当前主流,因其参数效率与性能的平衡。