QualityFlow: An Agentic Workflow for Program Synthesis Controlled by LLM Quality Checks
Iowa State University(爱荷华州立大学);Amazon Web Services(亚马逊云科技);University of California, Irvine(加利福尼亚大学欧文分校)
QualityFlow提出一种由LLM质量检查器动态控制的智能体工作流,通过想象执行结果来指导代码生成、测试与调试,在MBPP、HumanEval等基准上取得最先进成果。
2025-03-24 cs.AI cs.SE
Iterative Genetic Improvement: Scaling Stochastic Program Synthesis
Michigan State University(密歇根州立大学);Beihang University(北京航空航天大学)
程序合成旨在{ \it自动}从底层程序设计语言中找到满足给定规范的程序。虽然这有可能彻底改变计算,但如何有效地搜索程序的广阔空间是程序合成中尚未解决的挑战。在需要大型程序来求解的情况下,通常认为{ \it随机}搜索比其他类别的搜索技术具有优势。不幸的是,现有的随机程序合成器不能很好地满足这一期望,遭受的可扩展性问题。在这里,我们提出了一个新的框架随机程序合成,称为迭代遗传改进,以克服这个问题,一种技术的灵感来自实践的软件开发过程。迭代遗传改进算法的核心思想是先对参考程序进行遗传改进,然后用最优的程序迭代地替换参考程序,与传统的随机综合方法相比,迭代遗传改进算法能够以更稳健的方式逐步增加程序的复杂度。我们评估的方法上的两个程序合成域:列表操作和字符串转换。我们的实证结果表明,这种方法具有相当大的优势,几个代表性的随机程序合成器技术,无论是在可扩展性和解决方案的质量。
2022-02-26 cs.AI cs.NE cs.SE
AbstractBeam: Enhancing Bottom-Up Program Synthesis using Library Learning
University of Mannheim(曼海姆大学)
针对现有程序合成算法LambdaBeam未利用重复程序结构的问题,提出集成库学习的AbstractBeam框架,将重复结构融入DSL,在整数列表操作领域显著提升合成效果与效率,拓展了库学习的适用范围。
2024-09-12 cs.AI cs.PL cs.SE
Neural Program Synthesis By Self-Learning
UC San Diego(加州大学圣迭戈分校);USTC(中国科学技术大学)
神经归纳程序合成是一个任务生成指令,可以产生所需的输出从给定的输入。在本文中,我们专注于生成一块汇编代码,可以执行该代码以匹配CPU和RAM内的状态更改。我们开发了一个神经程序合成算法AutoAssemlet,通过自学习强化学习学习,有效地探索大的代码空间。策略网络和价值网络的学习,以减少的广度和深度的蒙特卡罗树搜索,导致更好的综合性能。我们还提出了一个有效的多熵策略采样技术,以减轻在线更新的相关性。我们将AutoAssemlet应用于基本编程任务,与几个竞争基准相比,成功率显着提高。
2019-10-13 cs.AI cs.LG cs.SE
Herb.jl: A Unifying Program Synthesis Library
Technical University Delft(代尔夫特理工大学)
Herb.jl是一个用Julia编写的统一程序合成库,旨在通过分解底层算法为可扩展的子组件,简化程序合成的重用和调整过程。
2026-01-30 cs.AI cs.PL cs.SE
Efficient Bottom-Up Synthesis for Programs with Local Variables
University of Michigan, Ann Arbor, USA(密歇根大学安娜堡分校);University of Washington, USA(华盛顿大学)
针对含局部变量的程序自底向上综合时搜索空间难缩减、速度慢的问题,提出基于提升解释的新型综合算法,可系统枚举变量绑定上下文以缩减搜索空间,应用于网页自动化的工具Arborist性能优于现有前沿技术。
2023-11-07 cs.AI cs.PL cs.SE
Structured Program Synthesis using LLMs: Results and Insights from the IPARC Challenge
Thoughtworks Technologies, Pune, India Dept. of CSIS \& APPCAIR, BITS Pilani, Goa Campus, India School of CSE, University of New South Wales, Sydney, Australia
本文提出一种结合LLMs的结构化归纳编程方法,成功解决IPARC挑战中600个受控程序合成任务,并揭示了预先结构化、代码冻结与复用等人类-LLM协作的关键机制。
2025-06-15 cs.AI cs.PL cs.SE
Hierarchical Neural Program Synthesis
USC(南加州大学);KAIST(韩国科学技术院);Naver AI Lab(Naver人工智能实验室);National Taiwan University(国立台湾大学)
程序合成的目标是自动构造满足给定任务规范的人类可读程序,例如输入/输出对或演示。最近的工作已经证明了令人鼓舞的结果,在各种领域,如字符串变换,张量操纵,并描述具体代理的行为。大多数现有的程序合成方法被设计成从头开始合成程序,逐行逐标记地生成程序。这从根本上阻止了这些方法扩展到合成更长或更复杂的程序。在这项工作中,我们提出了一个可扩展的程序合成框架,而不是合成一个程序的层次结构组成的程序。具体来说,我们首先学习一个任务嵌入空间和一个程序解码器,它可以解码嵌入到程序中的任务。然后,我们训练一个高级模块来理解任务规范(例如,输入/输出对或演示),并产生任务嵌入序列,然后由程序解码器解码并合成以产生合成程序。我们广泛地评估我们提出的框架中的字符串变换域的输入/输出对。实验结果表明,所提出的框架可以合成的程序是显着更长,更复杂的程序比以前的程序合成工程。网址:https://thoughtp0lice.github.io/hnps_web/
2023-03-09 cs.AI cs.LG cs.PL
Synthesis of Parametric Programs using Genetic Programming and Model Checking
Bar Ilan University(巴伊兰大学)
形式化方法应用基于数学原理的算法来增强系统的可靠性。尝试从验证、模型检验或根据系统的正式规范测试系统到自动构建系统,这是很自然的。经典的算法综合理论提供了有趣的算法,但也令人震惊的高复杂性和不可判定性的结果。结合模型检验和测试,遗传编程的使用提供了一个强大的启发式综合程序。该方法不是完全自动的,因为它由设置规格和参数的用户进行微调。它也不能保证总是成功并收敛到满足所有所需属性的解决方案。然而,我们成功地将其应用于相当重要的示例,并设法找到解决方案,以应对困难的编程挑战,以及改进和纠正代码。我们在这里描述了几个版本的我们的方法合成顺序和并发系统。
2014-02-27 cs.AI cs.NE cs.SE
AlgoPilot: Fully Autonomous Program Synthesis Without Human-Written Programs
针对现有程序合成依赖人类输入、难生成新型可复用算法的问题,提出AlgoPilot方法,以随机Python函数轨迹训练的TLM引导RL从零合成算法,在排序任务中无需先验知识即可生成经典算法轨迹,开辟算法发现新范式。
2025-01-11 cs.AI
Write, Execute, Assess: Program Synthesis with a REPL
MIT(麻省理工学院);Harvard University(哈佛大学)
我们提出了一个神经程序合成方法集成组件的编写,执行和评估代码导航的搜索空间的可能的程序。我们配备了一个解释器或读取-评估-打印循环(REPL),立即执行部分编写的程序,暴露他们的语义搜索过程。REPL解决了程序合成的一个基本挑战:语法上的微小变化可能导致语义上的巨大变化。我们训练了一对模型,一个建议编写新代码的策略,以及一个评估到目前为止编写的代码的前景的价值函数。在测试时,我们可以将这些模型与顺序蒙特卡罗算法结合起来。我们将我们的方法应用到两个领域:合成文本编辑程序和推断2D和3D图形程序。
2019-06-09 cs.AI cs.LG cs.PL
Program Synthesis from Visual Specification
University of Wisconsin-Madison(威斯康星大学麦迪逊分校)
程序合成是自动地将规范翻译成计算机代码的过程。传统的合成设置需要一个正式的,精确的规范。出于计算机教育应用程序的学生学习代码简单的海龟风格的绘图程序,我们研究了一种新的合成设置,只有一个嘈杂的用户意图绘图指定。这使得学生能够绘制他们想要的输出,可选地与他们自己的未完成的程序一起,以自动生成完整的程序。我们制定这个综合问题的搜索空间的程序,与得分的状态之间的Hausdorff距离的程序输出和用户绘图。我们比较了几种搜索算法的语料库组成的真实用户图纸和相应的程序,并证明我们的算法可以合成最佳满足规范的程序。
2018-06-04 cs.AI cs.PL
Neural Program Synthesis with Priority Queue Training
Google Brain(谷歌大脑)
我们考虑的任务程序合成在存在的奖励功能的程序的输出,其中的目标是找到最大的奖励程序。我们采用了迭代优化方案,其中我们训练RNN的K个最佳方案的数据集从优先级队列生成的程序到目前为止。然后,我们合成新的程序,并通过从RNN中采样将它们添加到优先级队列中。我们基准测试我们的算法,称为优先级队列训练(或PQT),对遗传算法和强化学习基线上的一个简单的,但表达图灵完整的程序设计语言称为BF。我们的实验结果表明,我们的简单PQT算法显着优于基线。通过在奖励函数中增加程序长度惩罚,我们能够合成简短的人类可读程序。
2018-03-23 cs.AI
Genetic Algorithm for Program Synthesis
一种演绎程序合成工具将规范作为输入并导出满足该规范的程序。这种方法的缺点是,这种正确程序的搜索空间往往是巨大的,使得难以在实际超时内导出正确的程序。为了加快这样的程序推导,我们改进了搜索策略的演绎程序合成工具,SuSLik,使用演化计算。我们的交叉验证表明,改进所带来的演化计算概括到不可预见的问题。
2023-01-19 cs.AI cs.NE cs.PL
Latent Programmer: Discrete Latent Codes for Program Synthesis
Google Research(谷歌研究院)
在许多序列学习任务中,如程序合成和文档摘要,一个关键问题是在大空间的可能输出序列中搜索。我们建议学习专门用于搜索的输出表示:足够丰富以指定所需的输出,但足够紧凑以使搜索更有效。离散的潜在代码是吸引人的,因为它们自然允许复杂的组合搜索策略。使用自监督学习原理学习潜在代码,其中首先在输出序列上训练离散自动编码器,然后将所得潜在代码用作端到端序列预测任务的中间目标。基于这些见解,我们介绍了\emph{Latent Programmer},一个程序合成方法,首先预测一个离散的潜在代码从输入/输出的例子,然后生成的程序在目标语言。我们评估潜在的程序员在两个领域:字符串转换程序的合成,并从自然语言描述的程序生成。我们证明,离散的潜在表示显着提高合成精度。
2021-08-05 cs.AI cs.LG
Selecting Representative Examples for Program Synthesis
Massachusetts Institute of Technology(麻省理工学院)
程序合成是一类回归问题,其中人们以源代码程序的形式寻求解决方案,将输入精确地映射到其相应的输出。由于其精确和组合的性质,程序合成通常被公式化为约束满足问题,其中输入-输出示例被编码为约束并使用约束求解器来求解。这种公式化的一个关键挑战是可扩展性:虽然约束求解器可以很好地处理一些精心选择的示例,但大量的示例可能会在时间和内存方面产生显着的开销。我们描述了一种方法来发现一个子集的例子,这是小的和代表性的:该子集是迭代构造的,使用神经网络来预测未选择的例子的概率条件下,在子集中选择的例子,并greenly添加最不可能的例子。我们经验性地评估由我们的方法构建的子集的代表性,并证明这样的子集可以显着提高合成时间和稳定性。
2018-06-07 cs.AI
GALOIS: Boosting Deep Reinforcement Learning via Generalizable Logic Synthesis
Nanyang Technological University(南洋理工大学);Tianjin University(天津大学);University of Alberta(阿尔伯塔大学)
尽管在人类级别的控制问题中实现了卓越的性能,但与人类不同,深度强化学习(DRL)缺乏高阶智能(例如,逻辑推理和重用),因此在复杂问题的学习和概括方面,它的表现不如人类有效。以往的工作试图直接合成一个白盒逻辑程序作为DRL策略,体现逻辑驱动的行为。然而,大多数合成方法都是建立在命令式或声明式编程的基础上的,每种方法都有各自的局限性。前者忽略了综合过程中的因果逻辑,导致任务间的可概括性低。后者是严格的证明为基础的,因此无法合成程序与复杂的层次逻辑。在本文中,我们结合上述两种范式一起,提出了一种新的广义逻辑综合(GALOIS)框架综合层次和严格因果逻辑程序。GALOIS利用程序草图并定义了一种新的基于草图的混合程序语言来指导合成。在此基础上,GALOIS提出了一种基于草图的程序合成方法,用于自动生成具有可泛化和可解释因果逻辑的白盒程序。对具有复杂逻辑的各种决策任务的广泛评估表明,GALOIS在渐进性能、泛化能力和跨不同环境的知识重用性方面优于主流基线。
2022-05-27 cs.AI
Program Synthesis as Dependency Quantified Formula Modulo Theory
Indian Institute of Technology Kanpur(印度理工学院坎普尔分校);National University of Singapore(新加坡国立大学)
给定在背景理论$\mathbb{T}$上定义的输入$X$和输出$Y$上的规范$φ(X,Y)$,程序合成的问题是设计程序$f$,使得$Y=f(X)$满足规范$φ$。在过去的十年中,语法引导合成(SyGuS)已经成为程序合成的主要方法,其中除了规范$φ$之外,最终用户还指定语法$L$以辅助底层合成引擎。本文研究了无语法综合技术的可行性,定义为$\mathbb{T}$ -约束综合的子类。我们证明了$\mathbb{T}$约束合成可以简化为DQF($\mathbb{T}$),即,找到一个独立的量化公式模理论的证明的问题。当底层理论是位向量理论时,相应的DQF(BV)问题可以进一步简化为依赖量化布尔公式(DQBF)。我们依靠在DQBF解决的进展,设计DQBF为基础的合成器,优于特定领域的程序合成技术,从而定位DQBF作为核心表示语言的程序合成。我们的实证分析表明,$\mathbb{T}$约束合成可以实现显着更好的性能比语法指导的方法。此外,通用的DQBF求解器执行与特定领域的合成技术。
2021-05-19 cs.AI cs.LO
Program Synthesis Guided Reinforcement Learning for Partially Observed Environments
MIT(麻省理工学院);Microsoft Research(微软研究院);University of Pennsylvania(宾夕法尼亚大学);Autodesk Research(欧特克研究院)
强化学习的一个关键挑战是解决长期规划问题。最近的工作利用程序来指导这些设置中的强化学习。然而,这些方法给用户带来了很大的手动负担,因为它们必须为每个新任务提供指导程序。部分观察的环境使编程任务进一步复杂化,因为程序必须实现正确且理想地最优地处理环境的隐藏区域的每一种可能配置的策略。我们提出了一种新的方法,模型预测程序合成(MPPS),使用程序合成自动生成的指导程序。它训练一个生成模型来预测世界上未观察到的部分,然后基于该模型的样本以对其不确定性具有鲁棒性的方式合成一个程序。在我们的实验中,我们表明,我们的方法显着优于非程序引导的方法在一组具有挑战性的基准,包括二维Minecraft启发的环境中,代理必须完成一系列复杂的子任务,以实现其目标,并实现了类似的性能,使用手工制作的程序来指导代理。我们的研究结果表明,我们的方法可以获得程序引导的强化学习的好处,而不需要用户提供一个新的指导计划,每一个新的任务。
2021-11-01 cs.AI
Out-of-Distribution Generalization in the ARC-AGI Domain: Comparing Execution-Guided Neural Program Synthesis and Test-Time Fine-Tuning
Simon Ouellette
本文在ARC-AGI领域通过受控组合泛化实验比较执行引导的神经程序合成与测试时微调,发现前者在组合新方案上优于所有参考算法,而后者主要依赖激发分布内知识。
2025-09-21 cs.AI
Relational decomposition for program synthesis
University of Southampton(索姆塞特大学);University of Oxford(牛津大学)
该研究提出将程序合成任务关系化分解为输入/输出事实并学习其间关系,使现成 ILP 系统在四个数据集上超过标准表示和领域专用方法。
2025-06-10 cs.AI cs.LG
A Divide-Align-Conquer Strategy for Program Synthesis
University of Bamberg(班贝格大学);TU Delft(代尔夫特理工大学);KU Leuven(鲁汶大学)
针对搜索型程序合成中搜索空间指数增长的问题,提出基于结构映射理论的结构对齐与分解驱动方法,在字符串转换及ARC视觉推理任务上超越ILP基线且预测精度随示例单调增加。
2024-12-24 cs.AI
Recent Advances in Neural Program Synthesis
UC Berkeley(加州大学伯克利分校)
近年来,深度学习在许多以前人工智能无法触及的领域取得了巨大进展。在这些问题上的成功使研究人员开始考虑智能系统解决人类最近才考虑的问题的可能性:程序合成。这一挑战与其他挑战不同,例如对象识别和语音翻译,因为其抽象性和对严格性的要求使得即使是人类也很难尝试。虽然神经程序合成还远未被解决,甚至与大多数现有的方法竞争,但它是一门迅速发展的学科,如果完全实现,它将有很大的希望。在本文中,我们从探索程序合成的问题陈述和挑战开始。然后,我们研究了程序归纳模型的迷人演变,以及它们是如何成功的,失败的和被重新想象的。最后,我们得出结论,对比看程序合成和未来的研究领域的建议。
2018-02-07 cs.AI cs.PL
Pragmatic inference and visual abstraction enable contextual flexibility during visual communication
Stanford University(斯坦福大学);University of California, San Diego(加利福尼亚大学圣迭戈分校)
视觉交流方式在现代生活中无处不在-从地图到数据图再到政治漫画。在这里,我们研究绘画,视觉传达的最基本形式。参与者在一个在线环境中配对,玩一个基于绘画的参考游戏。在每次试验中,两名参与者都被展示了相同的四个物体,但位置不同。草图绘制者的目标是绘制这些对象之一,以便查看者可以从数组中选择它。在“近距离”试验中,物体属于同一基本级别类别,而在“远距离”试验中,物体属于不同类别。我们发现,人们利用共享的信息来有效地交流目标对象:在远距离试验中,素描者在使用更少的笔画,使用更少的墨水和花费更少的时间在他们的绘画上的同时实现了高识别准确率。我们假设,人类成功地完成这项任务是通过招募两个核心能力:视觉抽象,感知物体与其绘画之间的对应关系的能力;以及语用推理,判断哪些信息可以帮助观众区分目标和干扰物的能力。为了评估这一假设,我们开发了一个包含这两种能力的素描器计算模型,实例化为嵌套在概率程序中的深度卷积神经网络。我们发现这个模型很好地拟合了人类数据,并且优于病变变体。总之,这项工作提供了视觉感知和社会认知如何共同支持视觉传达中的上下文灵活性的第一个算法明确的理论。
2019-03-28 cs.AI cs.OH
Toward Trustworthy Neural Program Synthesis
University of YYY(YYY大学);Institute of WWW(WWW研究所)
本文提出一种方法,通过同时采样候选程序和指定行为的谓词,来估计大型语言模型生成程序的正确性概率,并推断有用谓词以解释代码行为,人类研究显示该方法更受青睐,且保持最先进的生成准确率。
2023-10-09 cs.AI cs.LG cs.PL
Geometry of Program Synthesis
University of Melbourne(墨尔本大学)
我们重新评估通用计算的基础上综合的图灵机。这导致了一种观点的程序作为奇点的分析品种,或等价地,作为阶段的贝叶斯后综合问题。这种新的观点揭示了程序合成的研究方向,其中神经网络是一个子集,例如在相变,复杂性和概括。我们也奠定了这些新方向的经验基础,报告我们的代码中的一些简单的实验实施。
2021-03-30 cs.AI cs.LG cs.PL
Report of the Workshop on Program Synthesis for Scientific Computing
Argonne National Laboratory(阿贡国家实验室);Lawrence Livermore National Laboratory(劳伦斯利弗莫尔国家实验室);University of Washington(华盛顿大学);Stanford University(斯坦福大学);GrammaTech, Inc.(GrammaTech公司);University of Wisconsin - Madison(威斯康星大学麦迪逊分校);Microsoft Corporation(微软公司);NVIDIA Corporation(英伟达公司);Brookhaven National Laboratory(布鲁克海文国家实验室);Carnegie Mellon University(卡内基梅隆大学);University of Pennsylvania(宾夕法尼亚大学);Kestrel Institute(红隼研究所);Massachusetts Institute of Technology(麻省理工学院);Intel Corporation(英特尔公司);Texas A&M University(德州农工大学);University of Arizona(亚利桑那大学);University of Texas at Austin(德克萨斯大学奥斯汀分校);Oak Ridge National Laboratory(橡树岭国家实验室);Center for Computing Sciences(计算科学中心);University of Oregon(俄勒冈大学);Stony Brook University(石溪大学);Boise State Univeristy(博伊西州立大学);Facebook(脸书);University of Michigan(密歇根大学);Grinnell College(格林内尔学院);University of Utah(犹他大学);University of California, Berkeley(加州大学伯克利分校);Amazon(亚马逊)
程序合成是学术界、国家实验室和工业界的一个活跃的研究领域。然而,直接适用于科学计算的工作虽然取得了一些令人印象深刻的成功,但仍然有限。本报告回顾了科学计算的程序合成工作的相关领域,讨论了迄今为止取得的成功,并概述了未来工作的机会。本报告是科学计算程序合成研讨会的成果,该研讨会于2020年8月4日至5日举行(https://www.github.io/2020/)。
2021-02-02 cs.AI cs.LG cs.PL
Modelling Program Spaces in Program Synthesis with Constraints
TU Delft(代尔夫特理工大学)
针对程序合成中候选程序空间过大的问题,提出利用语法约束建模程序空间的方法,开发求解器BART,实验显示其最多可削减99%的程序空间,显著缩短枚举时间。
2025-07-10 cs.AI cs.PL
Program Synthesis Benchmark for Visual Programming in XLogoOnline Environment
MPI-SWS(马克斯·普朗克软件系统研究所);University of Trier(特里尔大学)
本文构建了基于XLogoOnline真实任务、需多技能结合的可视化编程程序综合基准,发现现有先进模型表现不佳,还提出带仿真器反馈课程的微调方法提升了模型性能,并将公开基准以支持相关研究。
2025-10-06 cs.AI
Autoencoders as Tools for Program Synthesis
Eindhoven University of Technology(埃因霍温理工大学)
近年来,源代码语言建模的研究取得了许多进展。应用范围从代码建议和完成到代码摘要。然而,工业级程序设计语言的完全程序合成仍然是一个悬而未决的问题。在这项工作中,我们介绍和实验验证变分自编码器模型的程序合成的工业级程序设计语言。该模型利用了代码固有的树结构,并可与无梯度优化技术(如进化方法)结合使用,以生成最大化给定适应度函数的程序,例如,通过一组测试用例。可在https://tree2tree.app上获得演示
2021-09-05 cs.AI cs.PL
Multi-modal Program Inference: a Marriage of Pre-trainedLanguage Models and Component-based Synthesis
Purdue University(普渡大学);Microsoft(微软)
多模态程序合成是指根据以不同形式给出的程序规范(代码)(例如自然语言和示例的组合)来合成程序(代码)的任务。示例提供了精确但不完整的规范,而自然语言提供了模糊但更“完整”的任务描述。机器学习的预训练模型(PTM)擅长处理模糊的自然语言,但难以生成语法和语义精确的代码。程序合成技术可以生成正确的代码,甚至经常从不完整但精确的规范,如例子,但他们无法与自然语言的歧义。我们提出了一种方法,结合PTM和基于组件的合成(CBS):PTM是用来产生候选程序从自然语言描述的任务,然后用来指导CBS过程中找到的程序,匹配精确的基于实例的规格。我们使用我们的组合方法来实例化多模态合成系统的两个编程域:域的正则表达式和域的CSS选择器。我们的评估表明,我们的域不可知的方法相比,一个国家的最先进的专门系统的有效性,我们的方法在提供多模态程序合成从自然语言和例子在不同的编程域的一般性。
2021-09-03 cs.AI cs.PL
Program Synthesis via Test-Time Transduction
Dept. of ECE, Seoul National University(电子工程系,首尔国立大学);IPAI, Seoul National University(IPAI,首尔国立大学);Adobe Research(Adobe研究院)
本文提出测试时转导的程序合成框架,利用 LLM 主动标注测试输入并筛选程序假设,在四个基准上同时提升准确率与效率。
2025-10-21 cs.AI cs.CL
Learning Program Synthesis for Integer Sequences from Scratch
Czech Technical University in Prague(布拉格捷克理工大学)
我们提出了一种从整数序列合成程序的自学习方法。我们的方法依赖于一个学习的政策指导下的树搜索。我们的系统进行了测试的在线百科全书的序列。在那里,它发现,自己,解决方案27987序列从基本的运营商和没有人写的训练样本。
2022-11-29 cs.AI cs.SC
Knowledge-Driven Program Synthesis via Adaptive Replacement Mutation and Auto-constructed Subprogram Archives
University of Tsukuba(筑波大学)
我们引入知识驱动的程序合成(KDPS)作为一个变种的程序合成任务,需要代理解决一系列的程序合成问题。在KDPS中,智能体应该使用来自早期问题的知识来解决后期问题。提出了一种基于PushGP的KDPS问题求解方法,该方法将子程序作为知识。所提出的方法提取子程序从以前解决的问题的解决方案,甚至分区(EP)的方法,并使用这些子程序来解决即将到来的编程任务,使用自适应替换变异(ARM)。我们称之为PushGP+EP+ ARM,使用PushGP+EP+ARM,在知识提取和利用过程中不需要人工努力。我们比较所提出的方法与PushGP,以及使用子程序手动提取的人的方法。我们的PushGP+EP+ARM实现了比PushGP更好的训练错误、成功计数和更快的收敛。此外,我们证明了PushGP+EP+ARM的优越性时,连续解决一系列的六个程序合成问题。
2022-09-08 cs.AI cs.NE
LTLf Synthesis on First-Order Agent Programs in Nondeterministic Environments
RWTH Aachen University(亚琛工业大学);Roskilde University(罗斯基勒大学)
本文研究非确定性环境中Golog智能体程序的策略合成,通过构建有限博弈舞台并采用博弈论方法,确保在满足LTLf时序规范的同时实现程序,为无界对象环境下的稳健智能体行为提供框架。
2025-03-01 cs.AI cs.LO
From {Solution Synthesis} to {Student Attempt Synthesis} for Block-Based Visual Programming Tasks
MPI-SWS(马克斯·普朗克软件系统研究所)
基于块的可视化编程环境越来越多地用于向初学者介绍计算概念。鉴于编程任务是开放式的和概念性的,新手学生在这些环境中学习时经常会遇到困难。人工智能驱动的编程导师在自动帮助有困难的学生方面有很大的希望,并且需要几个组件来实现这种潜力。我们调查的学生建模的关键组成部分,特别是,自动推断学生的误解预测(合成)他们的行为的能力。我们介绍了一种新的基准,StudentSyn,围绕以下挑战:对于一个给定的学生,合成学生的尝试后,观察学生的尝试在一个固定的参考任务的一个新的目标任务。该挑战类似于程序合成的挑战;然而,不是合成{解决方案}(即,专家会编写的程序),这里的目标是合成{学生尝试}(即,一个学生会写的程序)。我们首先表明,人类专家(TutorSS)可以实现高性能的基准,而简单的基线表现不佳。然后,我们开发了两种神经/符号技术(NeurSS和SymSS),以缩小与TutorSS的差距。
2023-03-29 cs.AI cs.CY cs.LG
NAPS: Natural Program Synthesis Dataset
NEAR
我们提出了一个面向程序合成的数据集,由人类编写的问题陈述和解决方案,这些问题。问题陈述是通过众包收集的,程序解决方案是从编程竞赛中的人类书面解决方案中提取的,并附有输入/输出示例。我们建议使用此数据集的程序合成任务,旨在与真正的用户生成的数据。作为基线,我们提出了几个模型,最好的模型达到8.8%的准确率,展示了数据集的复杂性和未来研究的巨大空间。
2018-07-06 cs.AI cs.LG cs.PL
BF++: a language for general-purpose program synthesis
Eindhoven University of Technology(埃因霍温理工大学);Philips Research Eindhoven(飞利浦埃因霍温研究院)
大多数基于强化学习(RL)的最先进的决策系统是数据驱动的黑盒神经模型,其中通常难以将专家知识并入模型中或让专家审查和验证学习的决策机制。在涉及人类健康和安全的许多应用中,知识插入和模型审查是重要的要求。弥合数据和知识驱动系统之间的差距的一种方法是程序合成:用神经网络或通过遗传编程生成的符号程序替换输出决策的神经网络。我们提出了一种新的程序设计语言BF++,专门用于部分可观察马尔可夫决策过程(POMDP)设置中的代理自动编程,并应用神经程序合成来解决标准OpenAI Gym基准测试。
2022-07-08 cs.AI cs.LG cs.NE
Inductive Synthesis for Probabilistic Programs Reaches New Horizons
Brno University of Technology(布尔诺理工大学);University of California, Berkeley(加州大学伯克利分校);RWTH Aachen University(亚琛工业大学)
本文提出了一种概率程序自动综合的新方法。起点是一个程序草图,表示一个有限的家庭有限状态马尔可夫链相关,但不同的拓扑结构,和PCTL规范。该方法建立在一个新的归纳预言机,greetly产生反例(CE)违反程序,并使用它们来修剪家庭。这些CE利用的语义的家庭在其最好的和最坏的情况下的行为提供了一个演绎的oracle使用MDP抽象的界限的形式。该方法还监测合成的性能,并自适应地在归纳推理和演绎推理之间切换。我们的实验表明,新的CE建设提供了一个显着更快,更有效的修剪策略,导致加速的合成过程中广泛的基准。对于具有挑战性的问题,如分散部分可观测控制器的合成,我们减少了运行时间从一天到几分钟。
2021-01-29 cs.AI cs.LO
HYSYNTH: Context-Free LLM Approximation for Guiding Program Synthesis
UC San Diego(加利福尼亚大学圣迭戈分校)
针对纯神经方法在陌生DSL下程序合成准确率低、纯符号方法扩展性差的问题,提出HYSYNTH混合方法,用LLM补全学习任务特定上下文无关代理模型指导合成,在三个领域性能优于现有方法。
2024-11-01 cs.AI cs.PL
Stepping Stones to Inductive Synthesis of Low-Level Looping Programs
Parity Computing, Inc.(Parity Computing公司)
归纳程序合成,从输入/输出的例子,可以提供一个机会,自动从头开始创建程序,而无需预先假设的算法形式的解决方案。对于带有循环的通用程序的归纳(相对于无循环程序,或特定领域语言的综合),最先进的是入门编程作业的水平。大多数需要算法精细性的问题,如快速排序,如果没有重要的特定问题背景知识的帮助,仍然无法实现。一个关键的挑战是识别可用于引导搜索正确循环程序的线索。我们提出了MAKESPEARE,一个简单的延迟接受爬山法,从输入/输出的例子,合成低层次的循环程序。在搜索过程中,延迟接受绕过小的收益,以确定显着改进的垫脚石程序,往往推广和实现进一步的进展。该方法在一组已建立的基准上表现良好,并成功地解决了以前未解决的“Collatz数”程序合成问题。其他基准测试包括快速排序整数数组的问题,其中我们观察到梳状排序(一种Shell排序变体,根据经验快速)的出现。MAKESPEARE还合成了一个创纪录的程序,从TIS-100汇编语言编程游戏的难题之一。
2018-11-26 cs.AI cs.LG cs.PL
A Reinforcement Learning Environment for Mathematical Reasoning via Program Synthesis
Cash App Labs(Cash App实验室);Lawrence Berkeley National Laboratory(劳伦斯伯克利国家实验室)
我们将DeepMind数学数据集转换为强化学习环境,将其解释为程序合成问题。在环境中采取的每个动作都将运算符或输入添加到离散计算图中。计算正确答案的图产生正奖励,从而能够优化策略以构建以问题语句为条件的计算图。基线模型使用Double DQN在各种问题类型的子集上进行训练,展示了学习正确构建图形的能力,尽管存在组合爆炸和噪声奖励的挑战。
2021-07-16 cs.AI cs.LG
Towards Neural-Guided Program Synthesis for Linear Temporal Logic Specifications
University of Toronto(多伦多大学);Vector Institute(向量研究所)
综合实现逻辑规范的程序是计算机科学中的经典问题。我们研究了一种特殊类型的程序合成,其目标是合成一种策略,该策略对潜在的敌对环境做出反应,同时确保所有执行满足线性时序逻辑(LTL)规范。不幸的是,通过逻辑推理解决所谓的LTL合成的精确方法不具有规模。在这项工作中,我们铸造LTL合成作为一个优化问题。我们采用了一个神经网络学习Q函数,然后用来指导搜索,并构建程序,随后验证的正确性。我们的方法在将搜索与深度学习相结合以实现LTL合成方面是独特的。在我们的实验中,学习的Q-函数提供了有效的指导与相对较小的规格的综合问题。
2019-12-31 cs.AI cs.FL cs.GT
GPU accelerated program synthesis: Enumerate semantics, not syntax!
University of Sussex and Montanarius Ltd(苏塞克斯大学和蒙塔纳里乌斯有限公司);CNRS, LaBRI and Université de Bordeaux(国家科学研究中心、LaBRI和波尔多大学);Independent Researcher(独立研究者)
本文探讨了在GPU上实现基于搜索的程序合成器,通过利用公式语义最小化数据移动和减少依赖数据的分支等GPU友好技术,使合成器能处理更大规模问题且速度远超此前基于CPU的最先进方法。
2025-04-26 cs.AI cs.LO cs.PL
EgoCoder: Intelligent Program Synthesis with Hierarchical Sequential Neural Network Model
Florida State University(佛罗里达州立大学);University of Chinese Academy of Sciences(中国科学院大学)
编程一直是计算机科学和其他相关领域的研究人员和从业人员的重要技能。对于初学者来说,要学习基本的编程技能,通常需要长时间的系统训练。根据最近的一份市场报告,预计计算机软件市场将继续以加速的速度扩大,但合格的软件开发人员的市场供应难以满足如此巨大的需求。近年来,文本生成研究的兴起为解决这一难题提供了契机,即通过自动程序合成来解决这一难题。本文从数据采掘的角度对解决程序合成问题进行了尝试。为了解决这个问题,本文将介绍一种新的生成模型,即EgoCoder。EgoCoder有效地将程序代码解析为抽象语法树(AST),其中树节点将包含程序代码/注释内容,并且树结构可以捕获程序逻辑流。基于一种新的单元模型Hsu,EgoCoder可以有效地捕获程序AST中的层次模式和顺序模式。大量的实验将进行比较EgoCoder与国家的最先进的文本生成方法,实验结果表明EgoCoder在解决程序合成问题的有效性。
2018-05-22 cs.AI cs.NE stat.ML
Scaling Neural Program Synthesis with Distribution-based Search
CNRS, LaBRI and Université de Bordeaux(法国国家科学研究中心、波尔多计算机科学实验室与波尔多大学);The Alan Turing Institute of data science(艾伦·图灵数据科学研究所);Cornell University(康奈尔大学);University of Paris(巴黎大学);Indian Institute of Technology Bombay(印度理工学院孟买分校)
我们考虑的问题,自动构造计算机程序从输入输出的例子。我们研究如何增加概率和神经程序合成方法与新的搜索算法,提出了一个框架,称为基于分布的搜索。在这个框架内,我们介绍了两个新的搜索算法:堆搜索,枚举方法,和SQRT采样,概率方法。我们证明了这两种方法的某些最优性保证,展示了它们如何与概率和神经技术相结合,并演示了它们如何在并行计算环境中大规模运行。总的来说,这些发现提供了搜索算法的理论和应用研究的程序合成,结合最近的发展,机器学习程序合成器。
2021-10-24 cs.AI cs.LG cs.PL
Towards Mixed Optimization for Reinforcement Learning with Program Synthesis
Google Brain(谷歌大脑)
深度强化学习最近取得了一些突破,尽管学习的策略通常基于黑盒神经网络。这使得它们难以解释,并在学习过程中施加所需的规范约束。我们提出了一个迭代的框架,MORL,使用程序合成,以提高学习的政策。具体地说,我们建议使用合成技术来获得一个符号表示的学习政策,然后可以手动或自动使用程序修复调试。在修复步骤之后,我们使用行为克隆来获得与修复程序相对应的策略,然后使用梯度下降来进一步改进该策略。这个过程一直持续到学习到的策略满足所需的约束。我们实例化MORL简单的CartPole问题,并表明,编程表示允许高层次的修改,从而导致改善学习的政策。
2018-07-03 cs.AI cs.LG stat.ML
Are There Good Mistakes? A Theoretical Analysis of CEGIS
Intel(英特尔);UC Berkeley(加州大学伯克利分校)
反例引导的归纳综合CEGIS是用来综合程序从候选空间的程序。当候选程序空间有限时,该方法保证终止并综合出正确的程序。但是,如果程序的候选空间是无限的,该技术可能会或可能不会终止于正确的程序。本文对反例引导的归纳综合技术进行了理论分析。我们调查的候选空间,正确的程序可以使用CEGIS合成的集合是否取决于在归纳合成中使用的反例,也就是说,是否有好的错误,这将增加合成功率。我们调查是否使用最小的反例,而不是任意的反例扩大了一组候选空间的程序,归纳合成可以成功地合成一个正确的程序。我们考虑两类反例:极小反例和历史有界反例。在CEGIS的任何迭代中使用的历史有界反例由在归纳综合的先前迭代中使用的示例所限定。我们研究在这两种情况下归纳综合的功率的相对变化。我们发现,使用最小的反例MinCEGIS的合成技术具有相同的合成功率CEGIS,但使用历史有界反例HCEGIS的合成技术具有不同的功率比CEGIS,但没有占主导地位的其他。
2014-07-21 cs.AI cs.LG cs.LO
Program Synthesis and Semantic Parsing with Learned Code Idioms
UC Berkeley(加州大学伯克利分校);Microsoft Research(微软研究院)
由于需要同时推理目标程序中的高级模式和低级实现细节,因此从自然语言规范对通用源代码进行程序合成具有挑战性。在这项工作中,我们提出了PATOIS,一个系统,允许神经程序合成器明确交错高层次和低层次的推理在每一代的步骤。它通过从给定的语料库中自动挖掘常见的代码习惯用法,将它们合并到神经合成的底层语言中,并训练基于树的神经合成器在代码生成期间使用这些习惯用法来实现这一点。我们评估两个复杂的语义解析数据集上的PATOIS,并表明使用学习的代码习惯用法提高了合成器的准确性。
2019-11-05 cs.AI cs.CL cs.LG
Solving Probability and Statistics Problems by Program Synthesis
Harvard University(哈佛大学);MIT(麻省理工学院);Columbia University(哥伦比亚大学)
我们使用OpenAI的Codex,一个经过文本训练和代码微调的Transformer,通过程序合成来解决大学水平的概率和统计问题。我们将麻省理工学院的18.05概率与统计导论和哈佛大学的STAT110概率转换为编程任务。然后我们执行生成的代码以获得解决方案。由于这些课程问题是基于概率的,我们通常的目标是让Codex生成概率程序,模拟大量的概率依赖关系来计算其解决方案。我们的方法需要提示工程将问题从其原始形式转换为一个明确的,易于处理的形式,从而产生正确的程序和解决方案。为了估计将原始问题翻译成易于处理的形式所需的工作量,我们测量原始问题和转换后的问题之间的相似性。我们的工作是第一次引入一个新的数据集的大学水平的概率和统计问题,并解决这些问题的可扩展的方式使用程序合成能力的大语言模型。
2021-11-16 cs.AI cs.CL cs.LG
Bayesian Synthesis of Probabilistic Programs for Automatic Data Modeling
Massachusetts Institute of Technology(麻省理工学院)
我们提出了新的技术,自动构建数据分析,解释和预测的概率程序。这些技术与概率领域特定的数据建模语言一起工作,这些语言捕获广泛类别的数据生成过程的关键属性,使用贝叶斯推理在给定观察数据的情况下在这些建模语言中合成概率程序。我们提供了一个精确的配方贝叶斯合成自动数据建模,确定了充分的条件所产生的合成过程是健全的。我们还推导出一般类的合成算法指定的概率上下文无关文法的特定领域的语言,并建立健全的方法,这些语言。我们应用的技术,自动合成的概率程序的时间序列数据和多元表格数据。我们展示了如何分析合成程序的结构,以计算感兴趣的关键定性属性,潜在的数据生成过程表现出这些属性的概率。其次,我们翻译概率程序在特定领域的语言概率程序的风险投资,一个通用的概率编程系统。然后执行翻译后的Venture程序,以获得新的时间序列数据和新的多变量数据记录的预测。实验结果表明,我们的技术可以准确地推断多个真实世界的数据集的定性结构,并在预测和预测新数据的标准数据分析方法。
2019-07-14 cs.AI cs.LG cs.PL
EcoSearch: A Constant-Delay Best-First Search Algorithm for Program Synthesis
CNRS(法国国家科学研究中心);LaBRI(波尔多计算机科学研究实验室);Université de Bordeaux(波尔多大学)
针对程序综合中的搜索空间爆炸问题,提出新型常数延迟最佳优先搜索算法EcoSearch,确保输出程序间计算量恒定,在两个经典领域实现显著加速。
2024-12-23 cs.AI cs.LG cs.PL
Synthetic Datasets for Neural Program Synthesis
UC Berkeley(加州大学伯克利分校);Google Brain(谷歌大脑)
程序合成的目标是根据相应的规范(如输入输出行为)自动生成特定语言的程序。许多当前的方法在有限的领域特定语言(DSL)中随机生成的I/O示例上进行训练后取得了令人印象深刻的结果,就像RobustFill中的字符串转换一样。然而,我们根据经验发现,将测试输入生成技术应用于具有控制流和丰富输入空间的语言会导致深度网络对某些数据分布的泛化能力较差;为了纠正这一点,我们提出了一种新的方法来控制和评估程序和规范上的合成数据分布的偏差。我们使用Karel DSL和小型Calculator DSL证明,在这些分布上训练深度网络可以提高交叉分布泛化性能。
2019-12-27 cs.AI cs.LG cs.PL
Program Synthesis Through Reinforcement Learning Guided Tree Search
Princeton University(普林斯顿大学)
程序合成是根据提供的规范生成程序的任务。传统上,这被程序设计语言(PL)社区视为搜索问题,最近被机器学习社区视为监督学习问题。在这里,我们提出了第三种方法,将给定程序的合成任务表示为可通过强化学习(RL)求解的马尔可夫决策过程。从部分程序的状态的观察,我们试图找到一个程序,是最佳的奖励度量对程序和状态。我们在RISC-V汇编语言的一个子集上实例化了这种方法,该语言操作于浮点数,作为PL社区基于搜索的技术的优化,我们将RL与优先级搜索树相结合。我们评估这种实例化,并证明了我们的组合方法的有效性相比,各种基线,包括纯RL消融和最先进的马尔可夫链蒙特卡罗搜索方法在这项任务上。
2018-06-08 cs.AI cs.LG cs.NE