一句话定义:软提示(Soft Prompt)是把提示词从人能读懂的文字,换成一段只有模型能读懂的连续向量(vector),训练时冻结大模型全部原有参数,只更新这段向量;前缀调优(Prefix Tuning)是它最经典的做法——在每一层注意力的键值(Key/Value)前面接上一小段可训练的前缀。
打个比方:写硬提示像对着一位经验丰富但脾气古怪的顾问反复喊话,你得不停换措辞碰运气;软提示则像直接给这位顾问配一副度数刚好的眼镜。度数不是写出来的,是用数据一点点调出来的。旁人看不出这副眼镜有什么特别,但顾问看问题的方式确实变了。
它怎么工作:文字进模型前,会先被查表变成一串向量。软提示就是在这串向量前面额外拼接一段长度固定、随机初始化、可训练的向量。训练时反向传播只更新这段向量(前缀调优还会在每层里学一组前缀),原始权重一动不动。因为这些向量不是从词表里查出来的,它们没有对应的文字:打印出来就是一串浮点数,去找最接近的词,常常得到一堆互不相干的字。所以这类“提示词”,人确实看不懂。
和相邻概念的区别:
| 维度 | 硬提示 | 软提示 / 前缀调优 |
|---|---|---|
| 形态 | 人写的文字 | 连续向量,无对应词 |
| 是否训练 | 一般不训练 | 需要少量数据训练 |
| 可读性 | 高 | 基本没有 |
| 存储成本 | 几乎为零 | 每个任务存一小段向量 |
| 跨模型迁移 | 大体可用 | 通常要重训 |
与全量微调的差别是“动谁的权重”:全量微调改的是模型本身,软提示只加不改。与 LoRA(Low-Rank Adaptation)这类低秩适配相比,两者都属于参数高效微调(PEFT),区别在于 LoRA 改的是模型内部的旁路权重,软提示改的是输入侧或每层前缀。
对从业者的意义:当你只有几百条标注样本、想固定一种输出风格或任务格式、又不想为每个任务各存一份完整权重时,软提示值得一试。它的坑也很实在——效果对初始化敏感、不同任务间不太稳、换底座模型往往要重训。具体哪些框架支持、接口怎么用,以各官方文档为准。
对普通人的意义:它说明“提示词”不必是你打得出来的字。你在输入框里提问时,系统很可能已经在你前面悄悄塞了一串你看不见、也打不出的向量。这也让“写提示词”和“训练模型”之间的界线变得模糊:调一串向量,既像在写提示,又像在训练。
