抽象束: 使用库学习增强自底向上的程序合成
DAPIP 是一种通过学习 API 和 DSL 实现数据转换任务的 Programming-By-Example 系统,并提出了一种新的神经合成算法来在 DSL 中寻找与给定示例一致的程序,该算法在合成程序方面性能优于基准方法。
Apr, 2017
提出一种基于MAKESPEARE简单推迟接受式爬山法的归纳编程综合方法,该方法可以从输入/输出示例中合成低级循环程序,成功解决了之前未解决的“Collatz Numbers”程序合成问题,并在一些基准测试中表现出色,在整数数组的快速排序问题中观察到组合排序的出现。
Nov, 2018
该论文提出了一种神经程序合成方法,该方法使用读取-执行-打印循环(REPL)集成组件来定位可能程序的搜索空间,并通过训练政策模型和价值函数模型,能够合成文本编辑和2D、3D图像程序。
Jun, 2019
我们提出了一种自学习方法,用于从整数序列合成程序。我们的系统测试了在OEIS表格上,通过基本操作并在没有人工训练例子的情况下,自主发现了27987个序列的解决方案。
Feb, 2022
为了解决程序综合中搜索空间膨胀的问题,我们提出了 CrossBeam,它训练一个神经模型来学习自底向上的搜索策略,从而更加高效地探索程序空间。我们在字符串操作和逻辑编程领域实验后发现,CrossBeam 学会了高效搜索,相比最先进的技术,它探索了更小的程序空间。
Mar, 2022
该论文介绍了语料库引导的自顶向下合成,作为一种从某个特定领域语言(DSL)程序语料库中合成捕捉常见功能的库函数的机制。该算法直接从初始DSL原语中构建抽象,使用中间抽象的句法模式匹配来智能地剪枝搜索空间,并指导算法朝向最大程度捕捉语料库中共享结构的抽象。我们在一个名为 Stitch 的工具中介绍了该方法的实现,并将其与 DreamCoder 的最新演绎库学习算法进行了评估。我们的评估结果显示,与DreamCoder相比,Stitch快3-4个数量级,使用的内存少2个数量级,同时保持相当或更好的库质量。我们还演示了Stitch在包含数百个复杂程序的语料库上的可扩展性,这些程序采用先前的演绎方法是难以处理的,并在实证上表明,它对提前终止搜索过程是鲁棒的,从而通过提前停止的方式使其能够应对具有挑战性的数据集的扩展。
Nov, 2022
设计了一种搜索算法LambdaBeam,在DSL中构建任意Lambda函数的语义向量表示,并训练神经策略网络,将它们作为参数传递给高阶函数进行循环计算,相比基于神经网络、符号和LLM的技术,在整数列表操作领域性能更优。
Jun, 2023
该论文通过引入一种名为Bee Search的新的最佳优先从底向上搜索算法,解决了现有的基于成本指导的底向上搜索算法在信息损失和成本函数排序方面的问题。实证结果表明,Bee Search在更复杂的领域特定语言(DSLs)中优于现有的成本指导的BUS算法,在简单的DSLs中与先前的方法表现相当好。此外,我们的新成本函数在字符串操作任务上优于先前的成本函数。
Oct, 2023
基于大型语言模型(LLMs)的自动化软件工程在最近的进展中得到了极大的增强。尽管当前的基准测试表明LLMs可以完成各种软件工程任务,如人类开发人员一样,但它们的大多数评估仅限于简短的、自包含的算法任务。解决具有挑战性和实际意义的编程任务需要利用多种函数调用作为工具,以有效地实现数据分析和Web开发等功能。此外,使用多个工具来解决一个任务需要通过准确理解复杂的指令来进行组合推理。同时实现这两个特征对于LLMs来说是一个巨大的挑战。为了评估LLMs解决具有挑战性和实际意义的编程任务的能力,我们引入了一个基准测试集Bench,其中挑战LLMs以从139个库和7个领域中选择1,140个细粒度的编程任务中调用多个函数调用作为工具。为了对LLMs进行严格评估,每个编程任务包括5.6个测试用例,平均分支覆盖率达到99%。此外,我们提出了Bench的自然语言导向变体Benchi,它将原始的文档字符串自动转换为仅具有基本信息的简短指令。我们对60个LLMs进行了广泛评估,结果显示LLMs还不能准确地遵循复杂指令来使用函数调用,得分最高仅为60%,明显低于人类的97%。这些结果强调了在这个领域进一步改进的需要。
Jun, 2024