PLANSEARCH——搜索正确的思路,然后实现它!CursorAI编码能力提升的核心

问题和假设

目前已经证明通过增加模型训练资源可以显著的提高模型的性能表现,但是增加推理资源却不能获得相应的收益。目前导致这个问题主要原因就是模型给出的答案过于雷同,缺乏多样性。这往往是由于在预训练的基础上,模型会在特定的数据集上进行进一步的训练,以适应特定的应用场景或任务所导致的。经过大量实证研究证明,许多大语言模型往往会被优化,以产生一个正确的答案。

在论文中提到DeepSeek-Coder-V2-Lite-Instruct模型刚开始的性能表现要好于DeepSeek-Coder-V2-Lite-Base模型。但是随着k的增加,DeepSeek-Coder-V2-Lite的基础模型的表现逐渐增强,甚至优于DeepSeek-Coder-V2-Lite的指令模型。实验结果如下图所示:

这就会导致当模型解决一个问题的时候,模型给出的答案会非常相似,因为它们是从模型中重复抽取的。这种情况下,即使模型花费更多推理时间,也难以获得更好的搜索结果。

所以针对上面的问题,论文就如何在大语言模型推理过程中提高回答的多样性进行了探索。对此,他们提出了假设,想让模型输出的答案更加丰富,需要在自然语言的概念或想法的空间内进行搜索。这就是下面要提到的PLANSEARCH算法。

PLANSEARCH

规划搜索不同于之前的搜索方法(通常是搜索单个 token、代码行甚至整个程序)不一样,规划搜索是搜索解决当前问题的可能规划。这里,规划(plan)的定义是:有助于解决某个特定问题的高层级观察和草案的集合。

为了生成新规划,规划搜索会生成大量有关该问题的观察,然后再将这些观察组合成用于解决问题的候选规划。这个操作需要对生成的观察的每个可能子集都执行,以最大化地鼓励在思路空间中进行探索,之后再将结果转译成最终的代码解决方案。如下图所示: 

具体规划搜索的步骤如下:

1.通过提示来获取观察

首先假设有一个问题陈述 P,通过向 LLM 发送提示词来获取对该问题的「观察」/ 提示。这里将这些观察记为  O^1_i,其中 i ∈ {1, . . . , n_1};这是因为它们是一阶观察。通常而言,n_1 的数量级在 3 到 6 之间。具体数量取决于 LLM 输出。为了利用这些观察结果来启发未来的思路,该团队创建了 O^1_i 的集合 S^1 的且大小至多为 2 的所有子集。其中每个子集都是观察结果的一个组合。这里将每个子集记为 C^1_i,其中 i ∈ {1, . . . , l_1},而l1 = 1 + n1 + ( n1 2 ).

2. 推导新的观察

这样一来,所有观察结果的集合都可以定义为深度为 1 的有向树,其中根节点为 P,并且每个 C^1_i 都有一条从 P 指向 C^1_i  的边。然后,在每个叶节点 C^1_i 上重复上一步流程,从而生成一个二阶观察集 S^2。为了得到二阶观察,该团队的做法是在给模型的提示词中包含原始问题 P 和 C^1_i 中包含的所有观察 —— 这些观察被构造为解决 P 所必需的原始观察。然后再提示 LLM,让其使用 / 合并在 C^1_i 中找到的观察来得出新的观察。这个过程可以继续延伸,但由于计算限制,这里在深度为 2 时对该树进行了截断操作。

3. 将观察变成代码

在得到了观察之后,必须先将它们实现成具体思路,然后再将它们转译成代码。具体来说,对于每个叶节点,将所有观察以及原始问题 P 放入提示词来调用 LLM,以便生成问题 P 的自然语言解决方案。为了提升多样性,对于每个生成的思路,该团队通过假设该思路是错误的来生成一个额外的思路,并要求 LLM 给出批评 / 反馈,从而将提议的思路翻倍了。

原文链接:

https://arxiv.org/pdf/2409.03733icon-default.png?t=O83Ahttps://arxiv.org/pdf/2409.03733

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值