\(p1\):用2道题训练出的系统提示,凭什么碾压全量数据?

你有没有碰到过这种情况:花了好几天跑提示优化,几十条用户提示全喂进去,RL训练的reward曲线倒是漂亮地往上走,结果换到测试集一看——几乎没涨,甚至比baseline还差?

更诡异的是,你减少训练数据,只用其中两三条提示,效果反而好了。

这不是段子。Cornell、Microsoft、Harvard和Databricks的研究者刚刚用一篇论文把这件事讲清楚了——而且给出了一个理论上很优雅的解释。

核心摘要

提示优化中,不同系统提示下的奖励方差可以拆成两部分:响应间方差(生成随机性带来的噪声)和系统提示间方差(系统提示之间真实质量差异带来的信号)。当噪声盖过信号,优化就失败。让人意外的是,在数学推理这类异构数据集上,加更多训练提示反而会压低系统提示间方差——因为不同题目偏好不同的系统提示,一平均就互相抵消了。基于这个洞察,论文提出 \(p1\) 方法:只选那些在候选系统提示上方差最大的少量用户提示来训练。结果是,在AIME 24上只用2道题优化,就在AIME 25上从47.0%涨到54.0%,远超用全部30题训练的方案。这思路简单到让人怀疑人生,但数学推导和实验都站得住。


论文信息

  • 标题\(p1\): Better Prompt Optimization with Fewer Prompts
  • 作者:Zhaolin Gao (Cornell), Yu (Sid) Wang (Microsoft), Bo Liu (Microsoft), Thorsten Joachims (Cornell), Kianté Brantley (Harvard), Wen Sun (Databricks AI Research)
  • 链接:https://arxiv.org/abs/2604.08801
  • 日期:2026年4月9日

问题在哪:提示优化的信号与噪声

提示优化的目标很简单——不改模型权重,只找一条更好的系统提示,让模型在给定任务上表现更好。形式化就是:

\[\max_{x'} \mathbb{E}_{x \sim \mathcal{D}, y \sim \pi(\cdot|x', x)} [r(x,y)]\]

这里 \(x'\) 是系统提示,\(x\) 是用户提示,\(y\) 是模型生成,\(r\) 是奖励函数。

听起来很直接,但实际做起来你会发现:有些任务上提示优化work得很好,有些任务上怎么调都没用。之前大家普遍归因于"任务太难"或者"模型能力不够",但这篇论文给出了一个更精确的诊断。

方差分解:把信号和噪声分开

作者的关键观察是:对于一个二元奖励(对/错),在 \(N\) 个候选系统提示和 \(K\) 个用户提示上,平均奖励的方差可以拆成:

\[\mathbb{E}[\mathrm{Var}(\hat{r})] = \underbrace{\frac{N-1}{N^2} \sum_{n=1}^{N} \left( \frac{1}{K} \sum_{k=1}^{K} \frac{p_n^k(1-p_n^k)}{KM} \right)}_{\text{响应间方差(噪声)}} + \underbrace{\frac{1}{N} \sum_{n=1}^{N} (p_n - \bar{p})^2}_{\text{系统提示间方差(信号)}}\]

左边那项是噪声——同一个系统提示、同一个用户提示,你采样 \(M\) 次,模型每次给出的答案不一样,导致估计的成功率有波动。右边那项是信号——不同的系统提示确实有不同的质量,有的就是比别的好。

优化能不能成功,取决于信噪比:系统提示间方差够不够大,能不能压过响应间方差。

图3:IFBench和AIME上的方差对比

图3:IFBench和AIME的方差结构对比。左半部分是IFBench——系统提示间方差远大于响应间方差,一眼就能看出哪个系统提示更好。右半部分是AIME——系统提示间方差被响应间方差压住了,区分好差系统提示变得非常困难

这张图把问题讲得很直观:IFBench上,不同系统提示的成功率分布明显分开,你很容易辨别谁好谁差;AIME上,成功率分布重叠严重,信号被噪声淹没。

反直觉发现:数据越多,效果越差

这就引出了论文最让人意外的结论——增加训练数据量 \(K\)(用户提示数量)会损害优化

你想想看,直觉上数据越多不是应该越好吗?但方差分解告诉我们:

  1. 响应间方差 \(\propto \frac{1}{KM}\),增加 \(K\) 确实能降低噪声
  2. 但系统提示间方差也会随 \(K\) 变化——当不同用户提示偏好不同的系统提示时,取平均会让偏好互相抵消,系统提示间方差被压低了

在数学推理这种异构数据集上,这个效应特别严重。一道代数题可能偏好"逐步推导"风格的系统提示,一道几何题可能偏好"画图分析"风格的,一道组合题可能偏好"枚举搜索"风格的。你把30道AIME题全加进来取平均,每个系统提示在每个子方向上的优势都被平均掉了。

图5:数据集规模K对方差的影响

图5:增加K时AIME和IFBench的方差变化。第一行固定M=128增加K,第二行固定KM=128同时调整K和M。关键看最右列——AIME上的信噪比随K增加急剧恶化,而IFBench相对稳定

说到底,AIME上的问题是:题目太杂了,最优系统提示在不同题目上不一致,加题只会把信号稀释掉。


\(p1\):只选"有区分力"的提示

既然问题出在低方差的用户提示拖了后腿,那解决方案就很自然了:只选那些在候选系统提示上方差大的用户提示

\(p1\) 方法分两步走:

阶段一:子集选择

  1. 从初始策略采样 \(N\) 个候选系统提示
  2. 对每个用户提示 \(k\) 和系统提示 \(n\),生成 \(M_{\text{filter}}\) 个响应,估计成功率 \(\hat{p}_n^k\)
  3. 遍历所有大小为 \(K_{\text{top}}\) 的子集,计算评分:\(\text{Score}(\mathcal{S}) = \widehat{\text{Var}}(\hat{r}) - \widehat{\text{Var}}_{\text{resp}}(\hat{r})\)
  4. 选得分最高的子集 \(\mathcal{S}^*\)

评分函数就是在估计系统提示间方差——哪个子集能让你最清楚地分辨好差系统提示,就选哪个。

阶段二:RL优化

只在选定的子集 \(\mathcal{S}^*\) 上做标准RL提示优化。因为 \(K_{\text{top}}\) 很小(默认是2),可以相应增大每个提示的采样数 \(M\),保持总采样预算 \(KM\) 不变。

你可能会问:遍历所有子集,计算量不大吗?说实话,因为 \(K_{\text{top}}\) 很小(通常就2),AIME 24一共30题,\(\binom{30}{2} = 435\),其实完全可以承受。

为什么只选2条?

作者做了消融实验,对比 \(K_{\text{top}} = 1, 2, 4\) 的效果:

  • \(K_{\text{top}} = 1\):训练奖励涨得猛,但泛化差,过拟合到单条提示上
  • \(K_{\text{top}} = 2\)最佳平衡点,训练信号够强,又不至于过拟合
  • \(K_{\text{top}} = 4\):信号开始被稀释,比2略差

这个结果和直觉一致——1条太容易记住答案,2条刚好够学到通用策略,4条以上又开始被异构性拖累。


实验:2道题打败30道题

主实验:推理基准

模型用的是 Qwen3-4B-Instruct-2507,在 AIME 24(30道题)上优化系统提示,然后在 AIME 25、AIME 26、HMMT Nov 25、HMMT Feb 26 上评估。

方法 训练子集 M AIME 25 AIME 26 HMMT 25 HMMT 26
Base / / 47.03 54.38 40.68 27.89
GEPA 15/15 / 46.87 54.22 40.57 27.08
RL全量 30题 1 47.24 54.58 40.26 27.04
\(p1\) [1,23] 16 54.01 62.24 45.42 29.40
\(p1\) [17,27] 16 50.10 57.24 42.34 28.27
\(p1\) [4,5,17,20] 8 48.23 55.68 42.08 28.13

这个结果确实让人眼前一亮。

AIME 25上,Base是47.03,全量RL是47.24(几乎没涨),GEPA是46.87(甚至还降了),而 \(p1\) 用子集 [1,23] 直接拉到54.01,涨了将近7个点。

7个点什么概念?在AIME这种难度极高的数学竞赛基准上,7个点的提升通常需要换一个量级更大的模型。而这里只是换了一种训练策略,模型权重完全没动。

图1:p1与其他方法的全面对比

图1:\(p1\)在多个推理基准和模型上的表现。系统提示在Qwen3-4B上用AIME 24优化,直接迁移到Qwen3-30B-A3B也能提升

还有一个值得注意的点:学到的系统提示可以跨模型迁移。在4B模型上优化的系统提示,直接应用到Qwen3-30B-A3B上同样有效。这说明 \(p1\) 学到的是真正通用的推理策略,而不是针对小模型的某种trick。

子集选择的影响

同一张表里还有几个对比:子集 [1,23] 和 [17,27] 都只有2条提示,但效果差异明显。[1,23] 在所有基准上都最优,[17,27] 虽然也优于全量RL,但幅度小很多。这说明选哪两条题很关键——不同提示的"区分力"差异很大。

论文也展示了单提示的可学习性与系统提示间方差的线性关系:

图4:系统提示间方差与训练奖励提升的关系

图4:10个不同的AIME单提示上,系统提示间方差与优化后的训练奖励提升呈明显线性关系。方差越大的提示越"可学"

这验证了方差分解的理论——系统提示间方差大,意味着不同系统提示之间确实存在可辨识的质量差异,优化器才有方向可走。

对比实验:指令遵循基准

在IFBench上,故事就不一样了:

方法 训练子集 M IFBench
Base / / 35.03
GEPA 32/32 / 39.12
RL全量 64 2 39.46
\(p1\) 16 8 37.41
\(p1\) 4 32 35.71
\(p1\) 1 128 35.37

在IFBench上,全量数据训练反而更好,\(p1\) 过滤越激进效果越差。

这个对比非常重要。IFBench是同构数据集——294道指令遵循题,评判标准一致,不同题目的"最优系统提示"方向一致。在这种场景下,更多数据确实提供了更稳定的梯度估计,不存在异构性导致的信号抵消问题。

所以 \(p1\) 不是万能药。它解决的是异构数据集上信号被噪声淹没的问题。如果你的任务本身就很同构,老老实实用全量数据才是正道。

定性分析:学到了什么?

论文对比了 \(p1\) 和 GEPA 学到的系统提示:

  • \(p1\) 学到的提示更通用:鼓励"自然、未过滤的思维流"、"结构化问题解决"等通用推理策略
  • GEPA 学到的提示更具体:包含大量几何定理公式、特定解题技巧等训练集相关的信息

这恰好解释了为什么 \(p1\) 泛化更好而 GEPA 不行——GEPA 在记忆训练集\(p1\)学习策略。当你只有2道题可以训练时,模型没法靠记忆通过,只能学到真正有用的推理模式。这和少样本学习中的"数据稀缺倒逼泛化"是一个道理。


和GEPA的对比

说到GEPA,这是2025年7月提出的提示优化方法,核心思路是用自然语言反思+进化搜索来优化系统提示,不需要RL梯度。GEPA之前在多个基准上表现很强,甚至声称超越了GRPO。

但在这篇论文的实验里,GEPA在AIME上几乎没涨(46.87 vs base 47.03,还降了一点),在IFBench上倒是有明显提升(39.12 vs base 35.03)。

这和论文的方差分析吻合:IFBench信噪比高,GEPA的反思机制能识别出好的改进方向;AIME信噪比低,GEPA的反思信号被噪声干扰,最终学到了训练集的表面特征而不是通用策略。

\(p1\) 的优势在于:先通过方差筛选提升信噪比,再让优化器工作。比起让GEPA在噪声中反思,不如先把噪声源去掉。


我的判断

这篇论文最值钱的地方在于方差分解这个理论框架。 它把"提示优化为什么不work"这个问题从模糊的经验观察变成了可量化的诊断工具——你只需要看一下系统提示间方差和响应间方差的比值,就能判断提示优化在你的任务上有没有戏。

\(p1\) 本身的方法倒是很简单,简单到第一反应是"就这?"但仔细想想,大道至简。核心洞察(异构数据集上加数据有害)本身就是反直觉的,能想到去过滤提示子集来提升信噪比,这个思路的方向比实现细节更重要。

几个值得注意的问题:

  1. 子集选择的敏感性:[1,23] 和 [17,27] 效果差距不小,但论文没有给出自动选到最优子集的方法。当前是暴力搜索 \(\binom{30}{2} = 435\) 个组合,当训练集更大时怎么办?

  2. 只验证了二元奖励:方差分解只在二元奖励下推导,密集奖励环境(比如代码生成、对话质量评估)是否适用还不清楚。

  3. IFBench上的表现不佳\(p1\) 在同构任务上不如全量训练,你得先判断任务是否异构,再决定用不用 \(p1\)。但"判断异构性"本身就需要方差分析——这不算是缺点,但增加了一步诊断成本。

  4. 和RL微调的对比缺失:论文只对比了提示优化方法,没有和权重微调(如GRPO on weights)做对比。提示优化再强,上限也在模型权重能力之内,如果微调权重能涨更多,\(p1\) 的实用价值就打了折扣。

不过话说回来,提示优化的意义恰恰在于不改权重——部署成本低、无安全风险、即插即用。在这个定位下,\(p1\) 给出了一个很实用的方案:先用方差诊断你的任务,再决定怎么训。

如果你也在做提示优化,遇到"训了半天没效果"的情况,强烈建议先跑一下方差分析,看看是不是信噪比的问题。2道题打败30道题,这事值得认真对待。


觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我