在大模型(LLM)时代,全量微调(Full Fine-tuning) 已经变得昂贵到令人望而生畏。为了能用更少的算力适配下游任务,参数高效微调(PEFT) 应运而生。
其中,围绕"提示词(Prompt)"做文章的技术路线演进最快。今天我们来聊聊三位主角:Prompt Tuning 、P-tuning 和 Prefix Tuning。它们之间到底有什么血缘关系?
一、 核心概念:什么是"软提示"?
在讨论区别前,必须明确一个共性:这三者都属于 Soft Prompt(软提示)。
- Hard Prompt:是你手动写的文字(如"翻译这段话:"),模型看得懂,但不可训练。
- Soft Prompt:是几串"数学向量"。人类看不懂这些乱码,但它们可以随着训练而改变,效果往往比手动写的文字更好。
二、 三大技术的演进之路
1. Prompt Tuning:最纯粹的"门卫"
由 Google 提出,它的逻辑非常简单:在输入的文本向量(Embedding)前面,强行拼接一段可学习的向量。
- 特点 :只在输入层动刀。
- 弱点:对小模型极不友好。如果模型不够大,仅靠开头的几个向量很难扭转整个模型的意志。
2. P-tuning:更聪明的"自动模板"
清华团队发现,Prompt Tuning 的向量是独立学习的,缺乏逻辑关联,且位置死板。于是他们改进了:
- 位置灵活:不一定非得在开头,可以像填空题一样插在中间。
- 引入 Encoder :用一个 LSTM 或 MLP 先处理一下这些向量,让它们之间产生"语言逻辑",然后再喂给大模型。
- 现状:它证明了即使是 GPT 这种生成式模型,也能通过这种方式做好"命名实体识别"等理解类任务。
3. Prefix Tuning:全方位的"深度监工"
Prefix Tuning 的思想更进一步。它认为:只在输入层加料是不够的,信息传着传着就丢了。
- 做法:在 Transformer 的**每一层(Layer)**都添加可学习的参数(具体是添加在 Attention 机制的 和 矩阵前)。
- 层层把关:每一层模型计算时,都会强制参考这段"前缀",从而实现深度引导。
三、 关键差异对比表
| 维度 | Prompt Tuning | P-tuning (v1) | Prefix Tuning / P-tuning v2 |
|---|---|---|---|
| 修改位置 | 仅输入层(最前面) | 仅输入层(任意位置) | 所有层(深层结构) |
| 参数建模 | 独立 Embedding | LSTM / MLP 关联编码 | 多层 Key-Value 拼接 |
| 模型适配 | 依赖超大模型 (10B+) | 中小模型表现提升 | 中小模型也能媲美全量微调 |
| 主要用途 | 简单的生成、分类 | NLU(理解类任务) | NLG(生成类任务)及复杂任务 |
四、 总结:该选哪一个?
在实际应用中,选择逻辑通常如下:
- 如果在玩千亿参数的大模型 :
直接用 Prompt Tuning。因为它简单,且在大规模参数下,简单的 Prefix 拼接就能达到很好的效果。 - 如果处理的是特定的自然语言理解任务(如 NER、情感分析) :
P-tuning (v1) 是个好选择,它利用模板的思想能更好地激发模型的潜在知识。 - 如果追求极致的效果,或者模型规模较小(如 BERT、GPT-2、7B 级别的模型) :
请直接上 Prefix Tuning 或 P-tuning v2。由于它们在每一层都加入了"辅助信息",这是目前公认的效果最稳、最接近全量微调的方案。
现在的 PEFT 领域,P-tuning v2 实际上已经吸收了 Prefix Tuning 的精髓,成为了目前工业界处理 NLU 任务最主流的方案之一。