用示例预测符号程序和提示程序的性能
摘要
本文研究使用贝叶斯抛硬币模型对符号程序(如Python)和提示程序进行性能预测,发现符号程序的性能是全有或全无的,而提示程序具有分散的先验分布,并介绍了RAP(检索近似先验)用于性能预测。
arXiv:2605.21515v1 Announce Type: new
Abstract: LLM提示被广泛用于自然表述的任务,但它不可靠,可能在少数测试用例上成功,但在部署时失败。我们研究性能预测:给定一个程序,无论是符号程序(如Python)还是在LLM上执行的提示程序,以及少量域内示例,预测其在同一域中未见任务上的性能。我们使用一个简单的抛硬币模型,将每次通过/失败的程序执行视为一个伯努利随机变量,其成功概率就是程序未知的性能。在此模型中,性能完全取决于:1)测试用例上观察到的执行结果,以及2)性能的先验分布。我们从包含多种程序和任务的语料库中汇编了经验性能先验,发现符号程序(如Python)的性能是全有或全无的,而提示程序具有分散的先验,存在许多几乎正确的程序。这种差异解释了为什么少数通过的测试可以验证符号程序,但不能验证提示程序。基于这一见解,我们开发了RAP(检索近似先验),它从现有语料库中检索类似的任务和提示程序,构建一个代理先验,然后用它来预测性能。我们展示RAP取得了可靠的性能。
查看缓存全文
缓存时间: 2026/05/22 08:47
# 通过示例预测符号程序与提示程序的性能
来源:https://arxiv.org/html/2605.21515
\\UseRawInputEncoding
Keya Hu麻省理工学院,美国
Shuzhi Liu南洋理工大学,新加坡
Tao Wu南洋理工大学,新加坡
Kevin Ellis康奈尔大学,美国
Yewen Pu南洋理工大学,新加坡
###### 摘要
LLM 提示广泛应用于自然描述的任务,但它并不可靠——可能在少数测试用例上成功,但在部署时失败。我们研究**性能预测**:给定一个程序——无论是符号程序(如 Python)还是在 LLM 上执行的提示程序,以及少量领域内示例,预测其在该领域未见任务上的性能。我们采用一个简单的抛硬币模型,将每次通过/失败的程序执行视为一个伯努利随机变量,其成功概率 θ 即为程序的未知性能。在该模型中,性能完全取决于:1)在测试用例上的观察到的执行结果,以及 2)性能的先验分布。我们从包含多样程序和任务的语料库中编译了**经验性能先验**,发现符号程序(如 Python)的性能呈现“全或全无”的特点,而提示程序的先验则较为分散,包含许多接近正确的程序。这一差异解释了为什么少数通过测试可以认证符号程序,却无法认证提示程序。基于这一洞察,我们开发了 RAP(检索近似先验),它从现有语料库中检索相似任务和提示程序,构建一个代理先验,进而用于性能预测。我们展示了 RAP 能够取得良好的性能。
## 1 引言
如果一个程序通过了几个具有代表性的测试用例,人们有理由相信它在未来相同任务的实例上仍能保持正确。但对于 LLM 提示而言,情况并非如此——提示可能在开发过程中看似正确,但在部署时却意外失败(Zhou 等人,2025)。为什么少数示例能认证符号程序(如 Python 代码),却不能认证提示程序(由 LLM 执行的自然语言指令)?我们通过贝叶斯视角研究这一问题,将测试结果建模为独立的抛硬币,并用其推断程序的性能。
先前的工作表明提示是脆弱的(Mizrahi 等人,2024)——细微的措辞或风格变化可能导致性能大幅下降,且即使是强大的 LLM 也可能在简单任务上失败(Zhou 等人,2024)。然而,提示仍被广泛使用,因为它通用、简单,并且在非关键场景下往往“足够好”,此时 80% 的性能仍有价值。这激发了**性能预测**:给定一个提示程序和少量测试用例,推断其真实成功率的分布,从而可以判断提示是否可部署以及置信度如何(例如,“部署后可能约为 0.8 ± 0.1”)。
本文是首个同时对**符号程序**(sp)和**提示程序**(pp)进行性能预测的研究。我们将符号程序定义为部署行为由符号解释器(如 Python、正则表达式或其他形式语言)执行的程序,而提示程序则由 LLM 在部署时执行。关键区别在于部署时委托的对象:如果 LLM 仅用于*编写*Python 代码,而部署的工件是该代码,我们将其归类为 sp;相反,如果部署的工件是自然语言提示,必须由 LLM 运行以对新输入产生输出,则归类为 pp。图 1 展示了一个模式匹配任务,它可以作为 sp 或 pp 求解,在这两种情况下,我们都通过评估解在从任务中采样的实例上的表现来衡量性能 θ。
我们采用一个简单的性能模型,将每次评估结果视为一次伯努利抛硬币。在该模型下,给定由 O=(a,b) 总结的观测(a 次通过,b 次失败于某些测试用例),性能的后验分布为 P(θ|O) ∝ P(θ) P(O|θ)。虽然似然 P(O|θ) ∝ θ^a (1−θ)^b 容易计算,但性能的先验 P(θ) 仍然未知。为解决此问题,我们从一组多样化的任务和程序中为 sp 和 pp 编译了经验性能先验。这些经验先验揭示了一个显著差异:sp 呈现出集中在 0.0 和 1.0 附近的“全或无”先验,而 pp 的先验则更分散,在接近正确的中等性能上有大量质量(图 2)。因此,通过少数测试用例可以认证 sp 的性能,但会使 pp 的性能不确定(图 3)。因此,我们的简单性能模型能够**量化**“符号代码通常容易由少量测试用例认证,而提示程序则不然”这一直觉。
参考图注
图 1:解决电话号码验证任务的两种方式。符号程序(sp)使用显式模式,而提示程序(pp)将预测委托给 LLM。在这两种情况下,性能 θ 是正确解决的任务实例的比例。注意,我们认为 LLM 的选择和诸如温度等参数是提示程序的一部分。
基于这一洞察,我们假设为了准确预测 pp 的性能,需要构建一个更好的先验。我们开发了 **RAP**(*检索近似先验*)。给定一个提示程序、少量领域内测试用例以及一个*任意*的任务和提示语料库,RAP 从该语料库中检索相似任务和提示程序,并构建一个近似先验用于性能预测。我们展示了 RAP 优于基线性能预测器,并具有几个理想的性质:随着测试用例数量的增加,它收敛到领域内后验;随着语料库增大而改进;并且对语料库中的无关信息具有鲁棒性。
**贡献** 我们做出三个同等重要的贡献:
1. 将**性能预测**形式化为简单抛硬币模型下的贝叶斯推断,根据观察到的执行结果 P(θ∣O) 推断程序的性能。
2. 从多样化任务和程序中为 sp 和 pp 编译经验先验,并表明 sp 是“全或无”的,而 pp 是分散且大量接近正确的。这解释了为什么少量测试能认证 sp 但不能认证 pp。
3. 引入 **RAP**(*检索近似先验*),一种基于检索的方法,从语料库中构建近似领域特定先验,并优于强基线方法。
## 2 通过示例预测性能
本节形式化“通过示例预测性能”的问题。我们首先定义程序及其在任务上的性能的含义,然后定义预测该性能的目标以及如何评估预测质量。
### 2.1 定义
**任务** 一个任务 T 是实例的分布 (x,y) ∼ T,其中输入为 x,由 oracle 标注的输出为 y。例如,在排序任务中,输入可以是任意随机整数数组,输出是按从小到大排序的同一个整数数组。在本工作中,我们假设实例是独立同分布采样的。
**程序** 一个程序 f 是从输入到输出的映射 f: x → y。给定任务 T,通过从 f ∼ P(f|T) 采样来编写程序。实践中,可以让人为任务编写程序,或者提示 LLM 为任务编写程序,从而获得一个样本。
**正确性** 给定一个实例 (x,y),程序在该实例上的正确性是一个指示变量 Z = 𝟙(f(x)=y)。
**性能** 给定程序 f 和任务 T,函数的(真实)性能 θ_f^* 是 f 在 (x,y) ∼ T 上产生正确输出 y 的期望成功率:
θ_f^*(f,T) = E_{(x,y)∼T}[𝟙(f(x)=y)]。 (1)
在本文中,我们简写为 θ_f,隐含每个程序都是为某个任务编写的。
**观测** 一个观测是 K 个指示变量 Z_{1…K} 的集合,其中 Z_i = 𝟙(f(x)=y),(x_i,y_i) ∼ T (2)
我们可以通过成功次数 a 和失败次数 b 来总结观测结果:
O=(a,b),a=∑_i Z_i,b=∑_i (1−Z_i) (3)
表 1:本研究使用的基准领域,涵盖了多样的任务结构、输入模态和符号求解器表示。这种多样性使得我们能够在异构程序类型之间系统评估性能预测。在所有领域中,我们总共评估了 700 个符号程序和 700 个提示程序,每个任务大约有 100 个评估实例。
### 2.2 通过示例预测性能
给定运行程序 f 在一组采样实例上得到的观测结果 O,我们希望推断程序的真实性能:
P(θ_f|O) (4)
这个后验分布可以通过两种方式评估:
**真实值的概率密度** 将真实值 θ_f^* 代入后验分布,得到其概率密度值 P(θ_f=θ_f^*|O)。差的后验得分低,好的后验得分高,极限趋于无穷大(狄拉克 Delta 后验)。
**绝对误差** 取后验均值作为预测,并计算预测值与真实值之间的绝对差值 |θ_f̂−θ_f^*|。
### 2.3 一个简单的抛硬币模型
在本文中,我们采用最简单的模型来估计 θ_f,将每个观测 Z_i 视为一个伯努利随机变量:
Z_i ∼ Bernoulli(θ_f) (5)
观测 O=(a,b) 的似然函数遵循二项分布(省略常数):
P(O|θ_f) ∝ θ_f^a (1−θ_f)^b (6)
因此,给定观测后程序性能的后验可以通过贝叶斯规则写出:
P(θ_f|O) ∝ P(θ_f) θ_f^a (1−θ_f)^b (7)
可以看出,**性能先验** P(θ_f) 在确定后验分布 P(θ_f|O) 中起着关键作用。在下一节中,我们将解释如何为符号程序和提示程序经验性地估计性能先验。
参考图注
(a) 符号程序的性能先验
(b) 提示程序的性能先验
图 2:sp 和 pp 的经验性能先验,分别由 700 个采样程序构建。符号程序具有尖锐的双模态先验,大多数程序要么完美要么完全错误。提示程序的先验更分散,在中等性能上有大量质量。
参考图注
(a) 在 3 个测试用例成功后的 sp 后验
(b) 在 3 个测试用例成功后的 pp 后验
图 3:在观察到 3 个测试用例成功后的符号程序 P(θ_sp | [T,T,T]) 和提示程序 P(θ_pp | [T,T,T]) 的性能后验分布。似然更新 θ^3 对 sp 和 pp 相同;后验的差异完全源于它们不同的性能先验。sp 的后验支持接近 100% 的性能预测,而 pp 的后验不能提供可靠的性能保证。
## 3 性能先验
性能先验可以写为:
P(θ) = Pr_{T∼P(T), f∼P(f∣T)} [θ=θ_f]。 (8)
即,首先采样一个任务 T∼P(T),然后从该任务中采样一个程序 f∼P(f|T)(无论是来自人类还是 LLM),然后评估其在任务上的性能。我们重复多次,将获得一个大的性能值列表 [θ_{f1}, θ_{f2}, ...],这些值共同构成性能先验。理想情况下,我们需要一个从“我们曾为其编写程序的所有任务”中得出的“完美”性能先验,但这不现实。相反,我们为 sp 和 pp 经验性地近似性能先验。
### 3.1 经验性能先验
#### 采样任务 P(T)
我们选择了一组多样化的编程领域——从归纳推理到基于语言的代码生成,然后从这些领域中随机采样任务。所选领域和任务数量如表 1 所示。关键的是,这些领域的任务通常可以同时通过 sp 和 pp 合理求解。例如,在正则表达式领域,可以编写一个匹配电话号码模式的正则表达式(sp),或者直接询问 LLM(pp)来判断字符串是否为电话号码。总共,我们采样了 70 个任务。
#### 采样程序 P(f|T)
对于每个采样的任务,我们通过提示 LLM 从任务生成代码来采样多个 sp,并通过提示 LLM 生成可以直接输出答案的提示来采样多个 pp。理想情况下,我们也可以雇佣人类程序员编写程序和提示,以获得更自然的程序集。采样的任务和程序共同构成一个语料库 M,从这个语料库 M 中我们可以构建经验性能先验 P(θ_f)。对于本工作,我们每个任务为 sp 和 pp 各采样了 10 个程序,共计 700 个 sp 和 700 个 pp。
#### 采样实例 P((x,y)|T) 以估计 θ_f
每个任务配备了一个实例采样器 P((x,y)|T),我们可以查询大量输入 x 和 oracle 标注的输出 y(例如,大量随机生成的字符串,以及该字符串是否为有效电话号码)。我们通过程序在采样实例上的平均性能来近似其真实性能:
θ̃_f := 1/N ∑_{i=1}^N 𝟙[f(x_i)=y_i], (x_i,y_i) ∼ p((x,y)∣T)。 (9)
在此部分,我们每个任务采样 N=100 个实例。总共,我们执行了 70000 次函数调用来执行 sp,以及 70000 次 LLM API 调用来执行 pp。
#### sp 和 pp 的经验性能先验
将 700 个 sp 和 pp 的近似性能汇总,形成符号程序 P(θ_sp) 和提示程序 P(θ_pp) 的经验性能先验(图 2)。最显著的差异是,sp 呈现尖锐的双峰分布,程序要么完全正确(1.0)要么完全错误(0.0),而 pp 的先验则分散得多,包含大量“近乎完美”的程序。
参考图注
(a) 真实值的概率密度相似文章
提示优化为何有效,为何有时无效:基于因果启发的编辑级分析
本文对自动化提示优化进行了基于因果启发的分析,涵盖多种框架、大语言模型和任务,识别出特定编辑类型(如复杂度增加型、元指令型)根据任务特征具有系统的负面或正面效应,从而解释了泛化失败的原因。
使用探针目标归因定位大型语言模型中的提示模糊性
介绍了PRIG,一种梯度归因方法,通过训练线性探针区分清晰提示和模糊提示,并将探针得分归因于残差流中的标记表示,从而定位大型语言模型中的提示模糊性,在合成和人工编写的基准测试上取得了强劲性能。
从数据到洞察:探索程序思维提示在图表摘要中的应用
本文介绍了一种基于程序思维提示(Program-of-Thoughts prompting)的零样本图表摘要策略,其中轻量级视觉语言模型(VLMs)生成Python程序来计算统计数据,从而在事实准确性上优于现有方法。
PromptPrint:通过自然语言提示在大语言模型中实现行为生物特征识别
介绍PromptPrint,一项系统性研究,表明用户在LLM提示中的习惯性词汇和句法构成可学习的行为生物特征,词汇特征优于语义编码器,并揭示了独特性-一致性悖论。
单一提示不够:指令敏感性削弱嵌入模型评估
本文通过实证表明,对指令调优嵌入模型进行单一提示评估是不够的,因为性能随提示措辞显著变化,且排行榜排名可通过提示选择被操纵。