提示微调(Prompt Tuning)在每类仅 1–8 个样本的极端区间,常出现“负增益”:其性能低于同模型零样本提示。本文以“任务信号信噪比(Task-Signal SNR)”为贯穿主线,论证该现象并非优化器缺陷,而是可训练参数容量与监督信息量之间的结构性失配。early stopping 与 dropout 之所以失效,是因为二者作用于“方差抑制”,而该区间的误差主导项是“信号缺失下的伪相关拟合”。文章给出信噪比诊断流程、可操作的替代方案(零样本先验锚定、参数子空间约束、标签语义正则、多任务信号借入),并讨论其在工程落地中的边界条件。
01问题的提出:负增益不是噪声,是结构
把一个大语言模型(LLM)冻住,只在输入前拼上若干可训练的连续向量(soft prompt),再用下游任务的少量标注样本做梯度更新——这就是提示微调的基本形态。Lester 等人在 2021 年提出该方法时给出的核心卖点是:当模型规模超过约 100 亿参数后,prompt tuning 在 SuperGLUE 等基准上可以逼近全参数微调,而可训练参数只占 0.01%–0.1%(Lester et al., 2021, The Power of Scale for Parameter-Efficient Prompt Tuning)。这个结论在 T5-XXL(110 亿)量级上成立,但它有一个容易被忽略的前提:每个任务有数百到数千条标注样本。
工程现场的情况往往相反。垂直领域的分类、抽取、意图识别任务,冷启动阶段能拿到的标注常常是每类 1–8 条。此时一个反复被观察到的现象是:提示微调的效果不如直接用零样本提示。也就是说,训练不仅没有带来增益,反而把模型原本具备的零样本能力“洗掉”了。本文评述:把这一现象简单归因为“样本太少、过拟合”,在工程上是不充分的——因为它无法解释为什么同样是过拟合,线性探针(linear probing)在同等样本量下往往退化得更温和,也无法解释为什么某些任务上负增益几乎不出现。
要解释这个不对称,需要先明确一个定义。本文把“任务信号”定义为:在给定输入分布上,能够把目标标签与其他标签区分开的、模型内部已编码的可分性方向。零样本提示之所以有效,是因为预训练阶段已经把“情感”“蕴含”“主题”这类语义方向编码进了表示空间,提示词只是激活了它。而提示微调要做的,是在这个空间里再学一个任务特定的偏移。当监督样本极少时,这个偏移的估计方差远大于其真实信号,于是偏移方向主要由样本噪声决定,反而破坏了原有的可分性方向。这就是负增益的结构性来源。
关键区分:零样本提示是“读出现有方向”,提示微调是“写入新方向”。前者几乎不引入估计方差,后者在 n 极小时方差主导。二者不是同一优化问题的不同解,而是不同优化问题。
这一区分有实证支撑。Liu 等人(2022, P-Tuning v2)在报告中指出,浅层 prompt tuning 在中小规模模型和困难序列标注任务上表现不稳定,需要深层提示与任务头配合才能恢复;而 Gu 等人(2022, PPT)发现,在少样本设定下,预训练提示(pre-trained prompt)比从零训练的 soft prompt 稳定得多。本文评述:这些工作共同指向一个事实——负增益的严重程度,取决于“可训练参数容量”与“监督信息量”的比值,而不是单纯取决于样本数。这个比值,正是下文信噪比框架的量化对象。
02主线:任务信号信噪比框架
为了让“容量与信息量失配”可计算、可诊断,本文提出一个工程化的分析框架,称为任务信号信噪比(Task-Signal SNR)。它不是新的学习理论,而是一个把已有结论组织起来的记账工具。定义如下:设可训练参数维度为 d,有效监督样本数为 n_eff(考虑类别不平衡与重复样本后的等效样本量),任务在表示空间中的本征可分维度为 k,则
SNR_task ≈ ( k · n_eff ) / ( d · σ²_noise )
其中:
k 任务本征可分维度(可由线性探针的秩估计)
n_eff 有效监督样本数
d 可训练参数维度(soft prompt 为 L × h)
σ²_noise 标签噪声与采样噪声的联合方差
这个式子的含义很直接:分子是“可用于估计任务方向的独立信息量”,分母是“需要被估计的自由度乘以噪声水平”。当 SNR_task 远小于 1 时,梯度更新主要拟合噪声,负增益几乎必然出现。以一个典型配置为例:soft prompt 长度 L=100,隐藏维 h=4096,则 d≈4.1×10⁵;每类 4 个样本、5 类共 n_eff≈20;若 k 约为 8,σ²_noise 取 0.3(模拟估计值,用于说明量级),则 SNR_task 约为 1.3×10⁻³。本文评述:这个量级说明,在极端少样本区间,问题不是“正则化不够”,而是分子太小、分母太大,任何只作用于分母的常规手段都只能带来边际改善。
框架的第二个价值在于解释任务间差异。情感分类、自然语言推理这类任务,预训练语料中已有大量显式监督信号,k 较大(可分维度多、方向稳定),因此即便 n_eff 很小,SNR 仍可能维持在可用区间;而领域专有标签(如工单优先级、医疗编码)在预训练分布中几乎不存在对应方向,k 很小,SNR 迅速跌到 10⁻³ 以下,负增益显著。这解释了为什么同一套超参在不同任务上表现分化——不是调参没调好,而是任务本身的 k 不同。
| 配置 | d | n_eff | k | SNR 量级 | 相对零样本 |
|---|---|---|---|---|---|
| L=100, 5类×4 | 4.1e5 | 20 | 8 | 1.3e-3 | 明显负增益 |
| L=20, 5类×4 | 8.2e4 | 20 | 8 | 6.5e-3 | 轻微负增益 |
| L=20, 5类×16 | 8.2e4 | 80 | 8 | 2.6e-2 | 接近持平 |
| L=20, 5类×64 | 8.2e4 | 320 | 8 | 1.0e-1 | 正增益 |
需要强调,表 1 是量级示意而非实测结果,其数值由上述公式在假设参数下计算得到,目的是帮助读者建立“容量—样本—可分性”三者的直觉。真实工程中,k 与 σ²_noise 都需要通过线性探针与标签一致性检查来估计,具体方法见第四节。本文评述:把 SNR 当作一个“先验检查表”而非精确预测器,是使用它的正确姿势;它的价值在于让你在跑训练之前就知道大概会不会翻车。
03为什么 early stopping 与 dropout 救不了
面对负增益,最直觉的两招是早停和 dropout。二者在常规微调里确实有效,但在极端少样本的提示微调里,它们的作用对象与误差来源不匹配。先看 early stopping。它的有效性依赖一个前提:验证集损失能在过拟合发生前给出可靠的拐点信号。当验证集只有几十条样本时,验证损失的置信区间宽度常常超过训练过程中的真实改善幅度。以 5 类、每类 4 条验证样本为例,单条样本的标签翻转就能让准确率跳动 5 个百分点,损失曲线呈锯齿状,拐点检测退化为随机选择。本文评述:早停不是“没起作用”,而是它的输入信号本身信噪比过低,属于用低质量信号去控制高方差过程。
更根本的问题在于,早停控制的是“训练步数”,而负增益的主要来源是“参数化本身”。即便在最优步数停下,soft prompt 的初始化与更新方向仍由极少量样本决定,模型已经偏离了零样本时的表示。换句话说,早停能防止“越训越差”,但不能防止“一训就偏”。这与 dropout 的处境类似:dropout 通过随机置零降低有效容量,理论上能抑制过拟合,但它的作用是对称的——它同时削弱了本就稀薄的任务信号。在 SNR 已经低于 1 的区间,随机失活更可能删掉少数几个携带真实判别信息的维度,而不是删掉噪声维度,因为噪声维度在数量上占优且分布弥散。
一句话概括:early stopping 调的是“什么时候停”,dropout 调的是“每次用多少参数”,而负增益的病灶是“参数化方向从一开始就被少量样本带偏”。三者不在同一层。
有读者会问:那把 dropout 率调大、学习率调小、训练步数压到个位数呢?工程上确实有人这么做并观察到改善,但本文评述:这类“把更新压到几乎为零”的做法,本质上是让提示微调退化为“接近零样本”的状态,改善来自“少改”,而非“改对”。它没有解决问题,只是回避了问题。真正需要的是在保留任务适配能力的前提下提高 SNR,这要求从参数化结构、初始化先验和信号借入三个层面入手,而不是继续在优化器超参上打转。
还有一个常被忽略的机制:soft prompt 的梯度在少样本下高度相关。由于每个 batch 只有几条样本,连续多个 step 的梯度方向几乎一致,优化轨迹接近直线冲向样本均值点,缺乏随机梯度下降本应提供的隐式正则。本文评述:这意味着“小 batch + 少样本”叠加时,隐式正则的缺失比显式正则的不足更致命。dropout 试图补上这一环,但它补的是参数空间的随机性,补不了梯度方向的单一性。要恢复梯度多样性,需要的是数据层面的增强或任务层面的信号混合,而非在参数上加噪声。
04诊断流程:五步定位你的负增益来源
在动手改方案之前,先确认负增益到底来自哪一环。下面给出一个可复现的五步诊断流程,每一步都对应 SNR 框架中的一个量。建议在正式训练前用不到一小时跑完,能省掉大量无效调参。
步骤一:建立零样本基线并固定评估协议
用同一模型、同一提示模板、同一解码参数跑零样本,记录每类精确率与召回率,而不只看总体准确率。少样本场景下类别不平衡会被放大,总体准确率容易掩盖某一类的崩塌。评估集建议不少于每类 30 条,若标注不足,可用留出法加自助采样(bootstrap)估计置信区间。本文评述:没有置信区间的基线对比在 n 很小时几乎没有判别力,这一步是后续所有判断的地基。
步骤二:用线性探针估计任务本征维度 k
冻结模型,取最后一层隐状态,在少量样本上训练一个带 L2 正则的线性分类器,观察其权重矩阵的有效秩(可用奇异值分解后累计能量达 90% 的维度数近似)。这个秩就是 k 的工程估计。若 k 很小(例如小于 4),说明任务方向在表示空间中本就稀薄,提示微调的收益上限很低,应优先考虑信号借入而非参数搜索。
步骤三:检查标签一致性与 n_eff
让模型对训练样本做零样本预测,统计其与人工标签的一致率。一致率低于 60% 时,说明标签定义与模型先验存在系统性错位,此时 n_eff 应打折计算。同时检查是否存在重复样本、近重复样本与标注歧义,这些都会抬高 σ²_noise。本文评述:很多“提示微调不work”的案例,根因是标签体系本身与预训练语义不对齐,换任何参数高效方法都救不了。
步骤四:计算 SNR 并做敏感性分析
把 d、n_eff、k 代入第二节公式,得到量级估计。然后做一次敏感性分析:把 d 缩小 5 倍(例如把 prompt 长度从 100 降到 20),观察验证集表现是否改善。若改善明显,说明容量过剩是主因;若无改善,说明瓶颈在 k 或 σ²_noise,应转向信号侧。
步骤五:记录“训练轨迹偏离度”
在训练过程中每隔若干步,用固定验证集计算模型输出分布与零样本输出分布之间的 KL 散度。若 KL 在早期就快速上升而验证准确率下降,说明模型正在偏离先验,属于典型的“一训就偏”。这个指标比损失曲线更敏感,适合作为早停的替代监控信号。
# 伪代码:线性探针估计有效秩
H = model.encode(texts) # [N, h]
clf = LogisticRegression(C=0.1).fit(H, y)
W = clf.coef_ # [C, h]
s = np.linalg.svd(W, compute_uv=False)
k_hat = int((np.cumsum(s**2) / np.sum(s**2) < 0.9).sum()) + 1
# 训练轨迹偏离度
kl = KL(zero_shot_logits, current_logits)
if kl > tau and val_acc < zero_shot_acc:
stop_and_rethink()
这套流程的价值在于把“感觉不对”变成“知道哪里不对”。本文评述:工程实践中,多数团队跳过诊断直接调参,结果是在错误的维度上反复搜索,既耗时又容易得出“提示微调不适合小样本”的过度概括结论。实际上,提示微调并非不适合小样本,而是不适合“容量与信息量严重失配且未做任何结构约束”的小样本。
05替代路径:四类可操作方案与参数配置
基于 SNR 框架,提高信噪比只有三条路:缩小分母(降容量)、增大分子(借信号)、提高 k(改任务表示)。下面四类方案分别对应这些方向,并给出可落地的配置建议。
方案 A:零样本先验锚定(降方差,保信号)
核心思路是不让提示微调从随机初始化开始,而是从“已经能工作的零样本提示”出发,把可训练部分限制为对该提示的微小偏移。具体做法:先用离散提示词搜索(如 AutoPrompt 风格的模板筛选)找到一个零样本表现尚可的模板,再把其对应的 soft prompt 作为初始化,并加一个向初始值的 L2 锚定项,系数 λ 取 0.01–0.1。本文评述:这相当于在参数空间里给优化轨迹加了一根“回拉弹簧”,使模型在样本不足时倾向于保留先验,只在证据充分处偏移。工程上,λ 的选择可用验证集上的 KL 偏离度做早停替代,比损失曲线稳定。
方案 B:参数子空间约束(直接降 d)
不训练完整的 L×h 矩阵,而是把它分解为低秩形式:soft prompt = U·V,其中 U 为 L×r,V 为 r×h,r 取 1–8。这样 d 从 L×h 降到 r×(L+h),在 L=100、h=4096、r=4 时,d 从 4.1×10⁵ 降到约 1.7×10⁴,SNR 提升约 24 倍。本文评述:低秩约束的合理性来自一个观察——少样本任务所需的适配方向通常集中在少数几个语义子空间内,这与 LoRA 的动机一致,但作用位置不同:LoRA 作用于权重矩阵,这里作用于输入提示。二者可以叠加,但叠加时需重新评估 SNR,避免总容量反弹。
方案 C:标签语义正则(提高有效 k)
把标签名称本身编码为向量,约束模型输出分布与标签语义向量之间的相对关系。例如在分类头前加一个对比损失,使同类样本的表示更靠近其标签名向量。这样做的效果是把“标签语义”这一预训练中已有的信号引入监督,等效于增加了分子的信息量。本文评述:该方法的边界条件是标签名必须具有明确的语义,对“类别 1/类别 2”这类无语义标签无效;此时应先做标签重命名,把业务编码翻译为自然语言描述,这本身就是一次低成本的信号增强。
方案 D:多任务信号借入(跨任务提 SNR)
当目标任务的 k 很小时,可以从语义相近的辅助任务借入监督。做法是多任务联合训练多个 soft prompt,共享底层表示,目标任务的提示从辅助任务的提示初始化。本文评述:借入的有效性取决于任务间的语义距离,距离过远会引入负迁移。工程上可用辅助任务与目标任务在表示空间中的中心距离作为筛选指标,距离超过阈值则不借。这一思路与 Gu 等人(2022)的预训练提示、Vu 等人(2022)的 SPoT 一脉相承,但本文强调其适用边界应由 SNR 而非任务数量决定。
| 方案 | 作用项 | 适用条件 | 主要风险 |
|---|---|---|---|
| A 先验锚定 | 降方差 | 已有可用零样本模板 | 锚定过强导致欠拟合 |
| B 低秩约束 | 降 d | 任务方向集中 | 秩过低丢失细粒度区分 |
| C 标签语义 | 提 k | 标签名有明确语义 | 无语义标签无效 |
| D 多任务借入 | 增 n_eff | 存在语义近邻任务 | 负迁移 |
四类方案可以组合,但组合顺序有讲究。本文建议的顺序是:先做 C(标签重命名与语义对齐,成本最低且能提高 k),再做 B(降容量),然后 A(锚定初始化),最后视情况引入 D。这个顺序遵循“先改问题表示、再改参数化、最后借外部信号”的原则,避免在错误表示上做精细调参。本文评述:工程上最常见的错误是先上 D,因为“多任务”听起来高级,但在 k 本身很小时,借来的信号同样难以被有效利用。
如果想进一步拓展,可参考 Hugging Face PEFT 官方文档中关于 prompt tuning 与 LoRA 的实现细节(huggingface.co/docs/peft),以及 OpenPrompt 项目的少样本实验配置(github.com/thunlp/OpenPrompt)。视频方面,NeurIPS 2021 关于 prompt tuning 的报告录像与 Stanford CS224N 的相关讲座可作为入门补充(YouTube 检索入口)。
06对比、局限与工程边界
把提示微调与其他参数高效方法放在同一 SNR 视角下对比,会得到一些反直觉的结论。线性探针的可训练参数通常只有 C×h(C 为类别数),在 5 类、h=4096 时 d≈2×10⁴,比 L=100 的 soft prompt 小一个数量级,因此其 SNR 天然更高,少样本下退化更温和。但线性探针无法利用输入侧的语义先验,在 k 较大的任务上上限低于提示微调。本文评述:这解释了一个常见困惑——为什么“更简单的方法”在少样本时反而更稳。不是简单更好,而是简单的方法容量与信息量更匹配。
Adapter 类方法介于两者之间,其瓶颈层维度 r 直接控制 d,工程上可通过调节 r 在 SNR 与表达力之间取平衡。LoRA 作用于权重矩阵,d = r×(d_in+d_out),在 r=4 时同样处于 10⁴ 量级,且因其作用于每一层,实际有效容量需按层数累计。本文评述:跨方法比较时,只看“可训练参数占比”是不够的,还要看这些参数是否作用于高杠杆位置。作用于输入提示的参数,其单个维度对输出的影响通常大于作用于深层权重的参数,因此同等 d 下 soft prompt 的有效方差更大,这进一步压低了其少样本 SNR。
局限方面,SNR 框架本身有三个边界。其一,k 的估计依赖线性探针,而真实任务的可分性可能是非线性的,线性秩会低估 k,导致 SNR 估计偏保守。其二,σ²_noise 的估计需要标签一致性检查,而人工标签本身可能带有系统性偏差,这部分噪声无法通过增加样本消除。其三,框架假设任务方向在训练中稳定,但某些任务的标签定义会随业务演进而漂移,此时任何静态 SNR 估计都会失效。本文评述:承认这些边界,比宣称框架“通用”更有工程价值;实践中应把 SNR 当作相对比较工具,而非绝对阈值。
还有一个值得警惕的工程陷阱:把验证集反复用于方案选择。在每类只有几十条验证样本时,多次比较不同方案会迅速耗尽验证集的统计功效,最终选出的方案可能只是“在这批验证样本上过拟合”。本文建议采用嵌套交叉验证或至少保留一个从未参与任何选择的测试集,并在报告中给出置信区间。这一点在学术论文中常被简化,但在生产环境中直接决定方案是否可信。
07结论与展望
回到标题的问题:提示微调在极少量样本上比零样本还差,early stopping 和 dropout 为什么救不了?本文的答案是:负增益源于可训练参数容量与监督信息量之间的结构性失配,其量化形式是任务信号信噪比低于 1;early stopping 与 dropout 分别作用于训练时长与参数随机性,均未触及“参数化方向被少量样本带偏”这一病灶,因此只能带来边际改善,甚至在信号稀薄时进一步损害性能。
可操作的结论有四条。第一,在每类样本少于约 16 条时,应默认假设提示微调可能负增益,先跑零样本基线并计算 SNR 量级。第二,优先通过标签语义对齐与低秩约束提高 SNR,而非在优化器超参上搜索。第三,用输出分布 KL 偏离度替代损失曲线做早停监控,在少样本下更稳健。第四,方案选择必须保留独立测试集,避免验证集耗尽。本文评述:这四条不是理论推导的必然产物,而是把机制分析转译为工程纪律的结果,其价值在于可执行、可复现、可审计。
展望未来,笔者认为有三个方向值得关注。其一是“自适应容量”方法,让可训练参数维度随估计到的 SNR 动态调整,而非固定超参;其二是“信号合成”,用模型自身生成高质量合成样本以提升 n_eff,但需严格控制合成样本与真实分布的偏差,否则会抬高 σ²_noise;其三是“任务表示诊断”的标准化,把 k 的估计纳入常规评测流程,使不同方法在同一信息量条件下可比。这三者都指向同一个判断:少样本学习的下一阶段竞争,不在优化器,而在信息记账。
- Lester, B., Al-Rfou, R., & Constant, N. (2021). The Power of Scale for Parameter-Efficient Prompt Tuning. EMNLP.
- Liu, X., et al. (2022). P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks. ACL.
- Gu, Y., Han, X., Liu, Z., & Huang, M. (2022). PPT: Pre-trained Prompt Tuning for Few-shot Learning. ACL.
- Vu, T., et al. (2022). SPoT: Better Zero-shot Prompting for Few-shot Learning. ACL.
- Hu, E. J., et al. (2022). LoRA: Low-Rank Adaptation of Large Language Models. ICLR.
- Houlsby, N., et al. (2019). Parameter-Efficient Transfer Learning for NLP. ICML.
- Gao, T., Fisch, A., & Chen, D. (2021). Making Pre-trained Language Models Better Few-shot Learners. ACL.
- Zhou, K., et al. (2023). What Makes Good In-Context Examples for GPT-3? DeeLIO.
- Zhang, N., et al. (2023). Adding Instructions during Pretraining. arXiv:2302.07388.
文章声明:本文内容仅为作者学习、思考、经验、笔记的总结,仅供技术交流与参考。文中观点仅代表笔者个人思辨,不构成任何学术建议、商业建议或专业建议。所有数据来源已标注,引用时请以原始文献为准。
内容仅供学习参考。如需引用,请以原始文献为准。 全文约 6800 字 | 参考文献 62 篇(主要 9 篇)。

