“回答简短一点”很好写,难的是“只比现在短一点”。模型可能一下删掉一半内容,而我们需要的只是少几句铺垫。再换一个形容词、加一句强调,能改变结果,却很难知道改动到底有多大。
我们在 2023 年尝试了 ControlPE:把提示词引起的行为变化蒸馏进 LoRA,再调节合并权重。实验分别观察了简洁回复、拒答和逐步推理,看看提示词的影响能否在完整应用与完全不用之间调整。
提示词强度控制
提示词优化通常在文字上搜索:人工改写,或自动生成候选、评测、筛选。找到有效指令后,直接操作仍是加入或删除这句话。也可以写“稍微”“尽量”,但这些词没有稳定、可比较的强度刻度。
要求简洁会让回复变短,也可能删掉必要解释。文档问答中,要求材料不足时拒答能减少编造,却可能误拒有依据的问题。我们想调节这句话对输出分布的影响,而不只是继续换一种措辞。
因此,ControlPE 接在提示词选择之后。先确定希望改变的行为,再为它训练一个可缩放的参数增量。它需要访问模型权重、做一轮 LoRA 训练;仅有黑盒生成接口时,不能直接按这套方法使用。这个前提也决定了它更适合需要反复校准某类行为的场景。

这里的“连续”指参数权重可连续调整。输出仍是离散 token,不同问题对同一权重的反应也不同,单条回答未必线性变化。后面的曲线统计一批样本的总体趋势。
提示词蒸馏与权重缩放
整个流程不复杂,关键在于生成标签和训练输入之间有一个刻意保留的差别。

带提示词生成示范
先把原始模板、目标提示和任务输入一起交给基础模型,收集回答作为蒸馏标签。示范来自加了指令的同一个模型,不需要另外选择更大的教师。
这里的原始模板负责组织任务,目标提示负责希望增加的行为,输入则是具体问题。数据集保留问题与生成的回答。比如要学“简洁”,标签就是带简洁要求生成的答案;要学逐步推理,标签则来自带推理要求的生成。
标签质量仍取决于基础模型加提示后的表现。它做不好的任务,不会因为蒸馏自动学会;标签更短,也可能只是少了信息。因此,目标行为与任务完成情况都要检查。
去掉提示词训练 LoRA
接下来冻结基础模型,只训练 LoRA。输入仍使用原始模板和问题,但不再包含目标提示;监督目标却保留上一阶段生成的回答。也就是说,我们让适配器承担那句被移除指令的作用。
训练输入去掉目标提示,才能让适配器学习这句话的作用。若继续保留提示,模型可能依赖输入中的文字。我们希望推理时只用原始模板,也能通过适配器重现相近行为。
这种拟合基于有限数据,不能保证 LoRA 与提示词对所有问题等价。模板、数据分布和模型版本改变后,都要重新检查效果。
缩放 LoRA 权重
LoRA 用两个低秩矩阵表示权重更新。把它写成基础权重加上增量之后,强度旋钮就落在这个增量前面。下面用 λ 表示我们调的系数,s 表示 LoRA 本身已有的缩放系数,避免把两者混在一起。
λ 为 0 时不应用这份增量,为 1 时应用训练得到的完整增量。中间值提供了一个可以扫描、比较的范围。这个权重空间里的线性关系,并不保证回答质量、拒答率或长度也跟着线性变化。
如果两个低秩矩阵都乘以 λ,最终增量就会乘以 λ 的平方。论文比较过单矩阵与双矩阵缩放,后者的曲线更难解释,因此后续实验只缩放一个矩阵。复现时也要先确认缩放规则,再比较系数。
回复长度控制
实验使用 LLaMA2-7B-chat,LoRA 加在每层注意力的 q_proj 和 v_proj 上,rank 为 16。训练 batch size 为 128,学习率为 3e-4,训练 3 个 epoch。这些设置对应当时的实验,不是对其他模型的默认推荐。
长度实验用 Alpaca 的前 10,000 条指令生成蒸馏数据,取第 10,001 到 10,100 条作为测试。测试报告的是这 100 条回答的 token 总数,不能直接当成一条回答的平均长度。
| 配置 | 100 条测试回答的 token 总数 |
|---|---|
| 原始模板 | 14,766 |
| 加入简洁提示 | 7,096 |
| 蒸馏后的完整 LoRA | 6,640 |
完整 LoRA 产生了与简洁提示相近的效果。扫描中间权重后,可以得到不同的回复长度,不必为每种强度重新改写指令。

在这组样本上,只缩放一个矩阵时,总体长度呈现较接近线性的变化。不过这个实验首先验证的是“能否调出不同强度”,不是“是否在任意长度下都保住质量”。如果用于真实产品,还应同时看关键事实是否保留、必要步骤有没有被删掉,以及长尾回答是否仍然过长。
一个总体长度指标也可能掩盖个体差异。有些问题本来就只需一句话,继续压缩没有意义;另一些需要多步解释,长度下降可能来自丢失步骤。因此,我更愿意把这条曲线当作校准入口:先找到合适的权重区域,再回到具体问题检查回答,而不是把一个系数解释成统一的字数预算。
拒答率与误拒
第二个实验转向文档问答。模型需要根据给定材料回答问题,材料不足时应说明没有相关信息。我们希望调节这条拒答指令的影响,看看能否在“过于积极地回答”和“过于保守地拒绝”之间找到更合适的位置。
实验使用 wikipedia-trivia 的前 10,000 条数据生成拒答提示的蒸馏标签,另取第 10,001 到 10,200 条测试。其中 80% 的测试材料能够支持回答,20% 不能。没有拒答提示时,直接拒答比例为 0%;加入提示后为 27%,蒸馏后完整适配器为 29%。

29% 与 27% 的差别需要结合拒答对象看:哪些无依据问题被识别,哪些有依据问题被误拒。论文同时统计了 precision 和 recall,增强拒答影响时,两项指标有所取舍。

直接拒答按特定显式表达统计。权重在 0.1–0.5 时,有些回答已更谨慎、编造更少,却没有使用该表达;0.6–1.0 区间的显式拒答变化更明显。仅看拒答率,无法区分模型仍在乱答,还是换了一种表达方式。
拒答应按证据是否充分来校准。只追求高拒答率,会偏向什么都不说的模型;只追求回答更多,又会遗漏无依据的回答。调整权重后,仍需分别检查材料充分和不足的两类样本。
CoT 强度与答题质量
第三个实验把目标提示换成逐步推理。生成蒸馏标签的数据仍然来自 Alpaca 的前 10,000 条指令,评测则在 GSM8K 上进行。这里训练数据和评测任务并不相同,也没有使用 GSM8K 正确答案来构造这份提示词蒸馏数据。
| 配置 | GSM8K 准确率 |
|---|---|
| 不加逐步推理提示 | 12.6% |
| 加入逐步推理提示 | 14.6% |
| 蒸馏后的完整 LoRA | 14.9% |

权重约 0.8 时的结果好于完整应用 LoRA。逐步推理提示总体有帮助,但它的影响增强后,准确率并非一直上升,回答方式与最终正确性需要分开观察。
0.8 附近的结果只对应当时的 7B 模型及评测设置,不能直接用于其他推理模型或搬用到今天的准确率比较。这个实验展示的是权重扫描能找到中间的较好区域,只比较有无提示会漏掉它。
多个 LoRA 的组合
既然一个提示可以变成一份参数增量,能否把“简洁”和“材料不足时拒答”放在一起调?论文直接复用前面训练好的两个 LoRA,没有为组合效果额外训练一个新模型。
上式是把两份增量相加的示意写法。两个系数分别控制简洁增量和拒答增量,但这不代表它们在行为上互不干扰:回答长度可能受到拒答方式影响,压缩回答也可能改变拒答措辞。


组合实验仍用前面的 200 条 DocQA 数据。简洁 LoRA 未在 wikipedia-trivia 上训练,组合后仍能调节长度;拒答也保留了可调趋势。这支持复用这两份增量,但尚不足以说明任意跨任务组合都能稳定泛化。
如果复现这个组合实验,我会把单适配器结果和联合扫描放在一起看。先知道每个增量单独改变了什么,再看它们相加后是否偏离原来的趋势。否则,一个看似合适的最终指标,可能只是两种副作用暂时抵消,而不是两个行为都学得更好。
与其他控制方式的区别
ControlPE 很容易与 soft prompt 或 prompt tuning 混淆。它们也涉及连续参数,但这里没有把输入中的一句话换成可训练的嵌入向量。训练完成后,变化放在模型内部的 LoRA 更新中,推理输入仍然可以使用原来的文字模板。理解增量存在哪里,有助于判断自己能否接入现有的推理服务。
它也不同于在解码时调整 temperature。Temperature 改变采样分布的尖锐程度,ControlPE 则改变模型所使用的权重;一个是生成策略的设置,一个是经过数据学习的行为增量。为了判断长度变化到底来自哪里,复现时应固定采样设置,只扫描适配器系数,避免一次同时动两个旋钮。
实现上还要区分 LoRA 原有的缩放常数与新增的控制系数。不同工具可能把缩放合进矩阵,也可能在前向计算时单独应用。论文关心的是最终生效的增量。核对导出权重时,最好先确认零系数回到基础模型、完整系数回到训练后的适配器,再看中间值,而不是只看配置文件里某个字段的名字。
校准建议
我会先从单个行为开始,保留三个参照:原始模板、原始模板加目标提示、原始模板加完整 LoRA。前两个告诉我们提示本身是否有效,第三个告诉我们蒸馏有没有迁移出相近的变化。如果完整适配器连目标行为都没学到,继续细扫中间权重并不能解决前面的数据或训练问题。
固定同一批问题,比较多个系数下的回答。总体指标用于筛选范围,逐题对比则检查删掉和保留了哪些内容。长度控制要看信息与步骤,拒答要区分证据充分和不足,CoT 要检查答案及推理内容,仅数推理段落并不够。
选定权重后,还需要独立测试集。同一小批样本既选权重又报告效果,会高估校准的稳定性。论文的长度测试为 100 条指令,拒答测试为 200 条,能观察总体变化,难以支持很细的分类结论。换领域后需要重新检查分布和效果。
组合适配器时,我也会先用稀疏的二维网格,检查两条单独扫描的趋势是否还成立,再决定是否加密局部区域。这样做的目的不是找一个数字最漂亮的点,而是看附近是否有一片任务质量和目标行为都可接受的区域。如果只在极窄的位置有效,部署前还需要理解它为什么敏感。
以上是根据方法整理的校准建议,论文没有额外完成这些产品验证。更新基座、模板或问题类型后,原有校准是否有效,仍需实际测试。
适用场景与限制
ControlPE 将指令选择与强度选择分开:提示词定义行为,蒸馏学习参数增量,扫描权重选择适合任务的范围。每一步都影响最终系数的含义。
复现需要核对目标提示是否只用于生成标签、是否从训练输入移除,基础模型和模板是否固定,缩放是否仅作用于增量,以及测试数据是否独立。评测同时记录行为和任务指标,才能判断更短、更常拒答或更多推理是否有益。
实验覆盖的模型规模和测试范围有限,既不保证单条输出的精确控制,也未验证任意数量适配器的组合。对已经有有效提示、仍需调整其强度的场景,可以在这个参数空间里继续测试和校准。