← 最新论文
💬 NLP

Probabilistic Programs of Thought

该论文提出了一种名为“概率思维程序”的新颖测试时框架,通过利用大语言模型生成程序时的令牌概率构建紧凑的概率程序,从而在不增加 GPU 计算成本的情况下从少量生成中高效采样出指数级数量的确定性程序,显著提升了代码生成、理解及数学推理任务的性能。

原作者: Poorva Garg, Renato Lui Geh, Daniel Israel, Todd Millstein, Kyle Richardson, Guy Van den Broeck

发布于 2026-04-21
📖 1 分钟阅读☕ 轻松阅读

原作者: Poorva Garg, Renato Lui Geh, Daniel Israel, Todd Millstein, Kyle Richardson, Guy Van den Broeck

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

这篇论文提出了一种名为**“概率思维程序”(Probabilistic Programs of Thought, 简称 PPoT)**的新方法。

为了让你轻松理解,我们可以把大型语言模型(LLM)想象成一位**“才华横溢但偶尔会犯迷糊的厨师”,而我们要他做的任务就是“写代码”**(比如解决数学题或生成图表)。

1. 现在的困境:昂贵的“试错法”

现状:
当你让这位厨师做一道复杂的菜(比如解一道数学题),他可能会第一次就写错(比如把数字搞错,或者公式用错)。
为了得到正确答案,通常的做法是:

  1. 让厨师做一遍。
  2. 尝一口(运行代码),发现是咸的(错了)。
  3. 重新叫厨师,让他再做一遍。
  4. 再尝一口,还是错的。
  5. 重复这个过程,直到尝到满意的为止。

问题:
每一次“叫厨师重新做”,都需要消耗大量的GPU 算力(就像厨师要重新开火、切菜、炒菜,非常费电、费时间、费钱)。如果你想让厨师多试几次(比如试 20 次),成本就会高得吓人。

2. PPoT 的妙招:把“菜谱”变成“概率云”

这篇论文提出了一个绝妙的想法:既然厨师已经做了一次,为什么还要让他重新做呢?我们可以直接修改他刚才写下的“菜谱”!

核心比喻:从“死板的菜谱”到“魔法菜谱”

  • 传统做法(确定性程序):
    厨师写下的菜谱是固定的。

    “放 200 克面粉,加 10 克糖。”
    如果厨师把 200 写错了,或者把 10 写错了,这道菜就毁了。你必须让他重写整个菜谱。

  • PPoT 做法(概率思维程序):
    论文发现,厨师在写菜谱时,其实心里是有**“犹豫”**的。
    比如,当他写"200"的时候,他的脑子里可能闪过"200"(概率 80%),但也闪过"20"(概率 15%)或者"2000"(概率 5%)。

    PPoT 的做法是:

    1. 抓住犹豫的瞬间: 我们不让厨师重写,而是把他写下的菜谱里的关键数字和符号(比如 200、10、+、-)变成**“魔法变量”**。
    2. 注入概率: 我们告诉电脑:“这里的数字不要只写死,要保留厨师当时犹豫时的所有可能性。”
      • 原来的 200 变成了 X,而 X 有 80% 是 200,15% 是 20,5% 是 2000。
    3. 低成本试错: 现在,我们不需要厨师重新下厨了。我们只需要在厨房里(CPU 上)快速模拟一下:
      • 如果 X 是 20,菜会怎样?
      • 如果 X 是 2000,菜会怎样?
      • 如果 X 是 200,菜会怎样?

    这些模拟是在电脑内存里瞬间完成的,不需要再消耗昂贵的 GPU 算力,也不需要厨师重新开火。

3. 具体是怎么工作的?(三步走)

  1. 生成初稿(LLM 调用):
    让大模型(厨师)生成一次代码。这是唯一一次需要昂贵 GPU 算力的步骤。

    • 例子:模型生成了 total = 200,但正确答案可能是 20
  2. 提取“犹豫点”(编译成概率程序):
    分析这段代码,找出那些模型“拿不准”的地方(通常是数字、运算符)。把这些地方变成随机变量。

    • 200 变成一个随机变量,它的分布基于模型当时生成 200 时的概率。
  3. 快速采样(CPU 推理):
    在这个“概率菜谱”里,快速生成成千上万种可能的变体。

    • 电脑瞬间算出:如果这里是 20,结果是对的;如果这里是 200,结果是错的。
    • 直接选出那个能算出正确答案的变体。

4. 为什么这很厉害?

  • 省钱(算力): 以前为了得到 100 个答案,需要调用模型 100 次(100 次 GPU 开销)。现在只需要调用模型 1 次,剩下的 99 次答案由电脑在几秒钟内“算”出来(几乎零 GPU 开销)。
  • 高效: 就像你不用重新去菜市场买菜,直接在冰箱里把现有的食材重新搭配,就能做出新菜。
  • 效果好: 实验证明,这种方法在数学题(GSM8k)、代码生成(Plot2Code)等任务上,准确率比传统方法提高了 2% 到 7%,而且用的“昂贵算力”少得多。

总结

PPoT 就像是给大模型装了一个“后悔药”和“平行宇宙模拟器”。

当模型第一次犯错时,我们不是让它“推倒重来”(浪费钱),而是利用它第一次生成时的“犹豫痕迹”,在电脑里快速模拟出“如果当时它选了另一个数字会怎样”的无数种平行宇宙,然后从中挑出那个正确的结果。

一句话概括: 用极低的成本,把一次“不完美”的生成,变成成千上万次“完美”的尝试。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →