技术深度解析
提示调优在概念上看似简单,但其影响深远。核心架构如下:一个预训练的Transformer模型(如T5、GPT-3)被完全冻结。一个名为“软提示”的小型可学习参数矩阵被初始化,并附加在输入嵌入序列之前。对于嵌入维度为`d`、提示长度为`l`的模型,软提示是一个形状为`(l, d)`的张量。在训练过程中,只有这`l * d`个参数通过梯度下降更新,而整个Transformer主干保持不变。
逐步工作原理:
1. 初始化: 软提示可以随机初始化,也可以从现有词汇令牌的嵌入(例如“start”)或模型自身的嵌入矩阵中初始化。论文发现,从相关令牌(如分类任务中的“classify”)的嵌入初始化,能带来适度但一致的性能提升。
2. 前向传播: 输入文本按常规进行分词和嵌入。软提示嵌入被拼接在输入嵌入序列的开头。组合后的序列被送入冻结的Transformer。
3. 训练: 在输出端计算损失(例如分类任务中的交叉熵),梯度仅反向传播到软提示参数。模型权重从不更新。
4. 推理: 学习到的软提示被保存为一个小文件(对于100个令牌的提示,通常只有几兆字节)。推理时,它被加载并附加到每个输入前。
为何有效: 作者假设,大型预训练模型学习了一个高维表示空间,其中不同任务对应不同的“方向”或“区域”。全参数微调会将整个模型移入任务特定区域,但这是一种过度行为,因为模型已经掌握了语言结构。软提示充当一个学习到的“上下文”,引导冻结模型的注意力头转向任务相关的子空间。这类似于人类专家只需获得一组非常具体的指令就能执行新任务,而无需重新训练整个大脑。
基准性能: 原始论文在T5模型系列(Base、Large、XL、XXL)上对SuperGLUE基准进行了评估。结果令人瞩目:
| 模型大小 | 方法 | SuperGLUE得分 | 可训练参数 |
|---|---|---|---|
| T5-XXL (11B) | 全参数微调 | 89.0 | 11B (100%) |
| T5-XXL (11B) | 提示调优 (100令牌) | 88.9 | 0.01% (≈1.1M) |
| T5-Large (770M) | 全参数微调 | 85.0 | 770M (100%) |
| T5-Large (770M) | 提示调优 (100令牌) | 83.5 | 0.05% (≈385K) |
| T5-Base (220M) | 全参数微调 | 81.5 | 220M (100%) |
| T5-Base (220M) | 提示调优 (100令牌) | 77.0 | 0.2% (≈440K) |
数据要点: 对于最大的模型(T5-XXL,110亿参数),提示调优在仅训练0.01%参数的情况下,达到了全参数微调性能的99.9%。这一差距随模型规模扩大而缩小,证实了更大模型因已包含更多通用知识而从提示调优中获益更多的假设。
与其他PEFT方法的比较:
| 方法 | 可训练参数 | 性能(vs全参数微调) | 关键机制 |
|---|---|---|---|
| 提示调优 | 0.01% - 0.1% | ≈99% | 可学习的输入嵌入 |
| 前缀调优 | 0.1% - 1% | ≈99% | 每层可学习的隐藏状态 |
| LoRA | 0.1% - 1% | ≈99.5% | 注意力权重的低秩更新 |
| 适配器 | 1% - 5% | ≈99% | 每个块中插入的小型瓶颈层 |
数据要点: 提示调优是主要PEFT方法中参数效率最高的,但对于非常复杂的任务,其表达能力可能略逊于LoRA或前缀调优。它的简单性(无需修改模型架构)使其成为最容易部署的方法。
相关开源实现: 官方GitHub仓库`google-research/prompt-tuning`提供了一个基于T5代码库的干净实现。该仓库已获得超过700颗星,并仍是研究人员的参考。它包括在SuperGLUE上进行训练和评估的脚本,以及针对多个任务的预训练软提示。对于实践者,代码展示了如何在JAX/Flax中实现该技术,不过该概念已被移植到PyTorch,例如Hugging Face的PEFT库。
关键参与者与案例研究
Google Research(原始作者): Brian Lester、Rami Al-Rfou和Noah Constant撰写了论文《规模的力量:参数高效提示调优》。他们的关键见解是,提示调优的有效性随模型规模扩大而提升——这一发现直接影响了整个PEFT领域的发展方向。Google团队已将提示调优集成到内部产品的多任务服务中,其中单个T5-XXL模型可以通过不同的软提示动态配置,以处理数十个任务,而无需为每个任务维护单独的模型副本。