EcoSearch: A Constant-Delay Best-First Search Algorithm for Program Synthesis
CNRS(法国国家科学研究中心);LaBRI(波尔多计算机科学研究实验室);Université de Bordeaux(波尔多大学)
针对程序综合中的搜索空间爆炸问题,提出新型常数延迟最佳优先搜索算法EcoSearch,确保输出程序间计算量恒定,在两个经典领域实现显著加速。
2026-11-10 cs.AI cs.LG cs.PL
Relational program synthesis with numerical reasoning
University of Oxford(牛津大学)
程序合成方法努力学习具有数值的程序。一个特别困难的问题是在多个示例中学习连续值,例如区间。为了克服这个限制,我们引入了一个归纳逻辑程序设计方法,它结合了关系学习与数值推理。我们的方法,我们称之为NUMSYNTH,使用可满足性模理论求解器,有效地学习程序的数值。我们的方法可以识别线性算术片段中的数值,如实数差分逻辑,以及无穷域中的数值,如实数或整数。我们在四个不同领域的实验,包括游戏和程序合成,表明我们的方法可以(i)学习程序的数值线性算术推理,(ii)优于现有的方法在预测精度和学习时间。
2022-10-04 cs.LG cs.PL
Write, Execute, Assess: Program Synthesis with a REPL
MIT(麻省理工学院);Harvard University(哈佛大学)
我们提出了一个神经程序合成方法集成组件的编写,执行和评估代码导航的搜索空间的可能的程序。我们配备了一个解释器或读取-评估-打印循环(REPL),立即执行部分编写的程序,暴露他们的语义搜索过程。REPL解决了程序合成的一个基本挑战:语法上的微小变化可能导致语义上的巨大变化。我们训练了一对模型,一个建议编写新代码的策略,以及一个评估到目前为止编写的代码的前景的价值函数。在测试时,我们可以将这些模型与顺序蒙特卡罗算法结合起来。我们将我们的方法应用到两个领域:合成文本编辑程序和推断2D和3D图形程序。
2019-06-09 cs.AI cs.LG cs.PL
Relational decomposition for program synthesis
University of Southampton(索姆塞特大学);University of Oxford(牛津大学)
该研究提出将程序合成任务关系化分解为输入/输出事实并学习其间关系,使现成 ILP 系统在四个数据集上超过标准表示和领域专用方法。
2025-06-10 cs.AI cs.LG
Neural-Guided Deductive Search for Real-Time Program Synthesis from Examples
Georgia Tech(佐治亚理工学院);Microsoft Research India(微软研究院印度);Microsoft Research Redmond(微软研究院雷德蒙德)
从少量的输入输出示例中合成用户预期的程序是一个具有挑战性的问题,有几个重要的应用程序,如电子表格操作,数据处理和代码重构。现有的合成系统要么完全依赖于大量手工设计的演绎逻辑技术,要么依赖于需要大量数据的纯统计模型,并且通常无法在具有挑战性的基准上提供实时的【形】合成。在这项工作中,我们提出了神经引导演绎搜索(NGDS),一种混合合成技术,结合了最好的符号逻辑技术和统计模型。因此,它生成的程序通过构造满足所提供的规范,并在看不见的示例上很好地泛化,类似于数据驱动系统。我们的技术有效地利用了演绎搜索框架,以减少学习问题的神经组件到一个简单的监督学习设置。此外,这使我们能够在有限的真实世界数据上进行训练,并仍然利用强大的递归神经网络编码器。我们证明了我们的方法的有效性,通过对真实世界的客户场景进行评估,通过合成准确的程序,与最先进的系统相比,速度高达12倍。
2018-09-09 cs.AI cs.LG cs.PL
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
Transformer-based Program Synthesis for Low-Data Environments
大型预训练的Transformer模型(GPT 2/3,T5)的最新进展已经在程序合成中找到了用途,以生成满足一组输入/输出示例的程序。然而,这些模型在长时间和低数据任务上表现不佳,并且通常似乎不理解它们生成的语言的语义。我们调查的方法,解决这两个问题,通过使用属性上下文无关文法的程序设计语言生成的程序,然后分析生成的程序,使他们可以注释编译和运行时属性,如类型,使有关程序的信息可以记住在长期的地平线一代。我们首先发现,合成数据集可以有效地,可以提供Transformer模型与足够的数据,以执行一些合成任务。我们还发现,让模型访问程序属性在低数据环境中特别有效,并且倾向于提高transformer生成程序的质量并减少错误。
2022-05-18 cs.LG cs.PL
Program Synthesis Over Noisy Data with Guarantees
Massachusetts Institute of Technology(麻省理工学院)
我们探索和形式化的任务,合成程序在嘈杂的数据,即,可能包含损坏的输入输出示例的数据。通过形式化噪声源、输入源和程序上的先验分布的概念,我们形式化了构造噪声数据集的概率过程。这种形式主义使我们能够定义一个合成算法的正确性,在它的能力来合成隐藏的底层程序。合成算法正确的概率取决于噪声源与合成算法的优化过程中使用的损失函数之间的匹配。我们形式化的概念,最佳的损失函数给定先验信息的噪声源。我们提供了一种技术来设计最佳的损失函数给定的完美和不完美的信息的噪声源。我们还形式化的概念和收敛所需的条件,即,合成算法产生正确程序的概率随着噪声数据集的大小增加而增加的条件。本文给出了最优损失函数概念的第一种形式化,最优损失函数的第一种封闭形式定义,以及保证噪声综合算法具有收敛保证的第一个条件。
2021-04-27 cs.LG cs.PL
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
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
Toward Trustworthy Neural Program Synthesis
University of YYY(YYY大学);Institute of WWW(WWW研究所)
本文提出一种方法,通过同时采样候选程序和指定行为的谓词,来估计大型语言模型生成程序的正确性概率,并推断有用谓词以解释代码行为,人类研究显示该方法更受青睐,且保持最先进的生成准确率。
2023-10-09 cs.AI cs.LG cs.PL
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
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
Neural Program Synthesis By Self-Learning
UC San Diego(加州大学圣迭戈分校);USTC(中国科学技术大学)
神经归纳程序合成是一个任务生成指令,可以产生所需的输出从给定的输入。在本文中,我们专注于生成一块汇编代码,可以执行该代码以匹配CPU和RAM内的状态更改。我们开发了一个神经程序合成算法AutoAssemlet,通过自学习强化学习学习,有效地探索大的代码空间。策略网络和价值网络的学习,以减少的广度和深度的蒙特卡罗树搜索,导致更好的综合性能。我们还提出了一个有效的多熵策略采样技术,以减轻在线更新的相关性。我们将AutoAssemlet应用于基本编程任务,与几个竞争基准相比,成功率显着提高。
2019-10-13 cs.AI cs.LG cs.SE
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
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
CodeARC: Benchmarking Reasoning Capabilities of LLM Agents for Inductive Program Synthesis
Stanford University(斯坦福大学);University of Illinois Urbana-Champaign(伊利诺伊大学厄巴纳-香槟分校);MIT(麻省理工学院);Intel(英特尔);Nanjing University(南京大学)
本文提出CodeARC评估框架与基准,通过交互式差分测试和迭代优化评估LLM智能体在归纳式程序合成任务中的推理能力,实验表明该任务极具挑战性且微调能显著提升性能。
2025-08-08 cs.AI cs.CL cs.LG
Program Synthesis and Semantic Parsing with Learned Code Idioms
UC Berkeley(加州大学伯克利分校);Microsoft Research(微软研究院)
由于需要同时推理目标程序中的高级模式和低级实现细节,因此从自然语言规范对通用源代码进行程序合成具有挑战性。在这项工作中,我们提出了PATOIS,一个系统,允许神经程序合成器明确交错高层次和低层次的推理在每一代的步骤。它通过从给定的语料库中自动挖掘常见的代码习惯用法,将它们合并到神经合成的底层语言中,并训练基于树的神经合成器在代码生成期间使用这些习惯用法来实现这一点。我们评估两个复杂的语义解析数据集上的PATOIS,并表明使用学习的代码习惯用法提高了合成器的准确性。
2019-11-05 cs.AI cs.CL cs.LG
ExeDec: Execution Decomposition for Compositional Generalization in Neural Program Synthesis
Google DeepMind(谷歌DeepMind);UC Berkeley(加州大学伯克利分校);University of Illinois(伊利诺伊大学)
本文提出 ExeDec 执行分解策略,通过逐步预测执行子目标提升神经程序合成的组合泛化能力,并在 RobustFill、DeepCoder 及少样本大语言模型编程场景中验证其有效性。
2024-05-06 cs.LG cs.PL
CodeGen: An Open Large Language Model for Code with Multi-Turn Program Synthesis
Salesforce Research(赛富时研究院)
程序合成致力于生成一个计算机程序作为给定问题规范的解决方案,用输入-输出示例或自然语言描述来表达。大语言模型的流行促进了程序合成的发展,尽管有限的训练资源和数据阻碍了对此类模型的开放访问。为了实现这一点,我们训练并发布了一系列高达16.1 B参数的大语言模型,称为CODEGEN,基于自然语言和程序设计语言数据,并开源了训练库JAXFORMER。我们展示了训练模型的实用性,证明了它与HumanEval上的zero-shot Python代码生成上的先前最先进技术具有竞争力。我们进一步研究了程序合成的多步范式,其中一个单一的程序分解成多个指定子问题的提示。为此,我们构建了一个开放的基准,多回合编程基准(MTPB),由115个不同的问题集,分解成多回合提示。我们对MTPB的分析表明,以多回合方式提供给CODEGEN的相同意图比以单回合方式提供的意图显著改善了程序合成。我们将训练库JAXFORMER和模型检查点作为开源贡献提供:https://github.com/salesforce/CodeGen。
2023-02-27 cs.CL cs.LG cs.PL
Inductive Program Synthesis over Noisy Datasets using Abstraction Refinement Based Optimization
Massachusetts Institute of Technology(麻省理工学院)
我们提出了一种新的综合算法来解决噪声数据集上的程序合成,即,可能包含不正确/损坏的输入输出示例的数据。我们的算法使用了一个抽象的细化为基础的优化过程来合成程序,优化的噪声数据集的损失和合成程序的复杂性之间的权衡。该算法使用抽象来划分程序的搜索空间为子空间,通过计算一个抽象值,表示在一个子空间中的所有程序的输出。抽象值允许我们的算法计算,为每个子空间,一个声音的近似下界的损失在所有的程序在子空间。它迭代地细化这些抽象,以进一步将空间细分为更小的子空间,修剪不包含最优程序的子空间,并最终合成最优程序。我们在一个叫做Rose的工具中实现了这个算法。我们使用SyGuS 2018基准套件将Rose与当前最先进的嘈杂程序合成系统进行比较。我们的评估表明,Rose的性能明显优于之前的系统:在从SyGus 2018基准测试套件中提取的两个有噪声的基准测试程序合成问题集上,Rose提供了高达1587和81.7的加速比,中值加速比为20.5和81.7。Rose还终止了20个(共54个)和4个(共11个)比以前的系统多的基准问题。罗斯和以前的系统合成的程序是最佳的噪声数据集。对于基准测试集中的大多数问题($286$中的$272$),合成程序还为原始(未见过的)无噪声数据集中的所有输入产生正确的输出。这些结果突出了玫瑰可以提供有效的嘈杂程序合成的好处。
2021-04-27 cs.FL cs.LG cs.PL
Improved Tree Search for Automatic Program Synthesis
Tel Aviv University(特拉维夫大学)
在自动程序合成的任务中,获得匹配的输入和输出对,并且以特定的领域专用语言(DSL)生成计算机程序,给定每个样本输入,该计算机程序返回匹配的输出。一个关键因素是能够在有效程序的空间中执行有效的搜索。在这里,我们提出了一个MCTS的变体,它可以在两个截然不同的DSL上获得最先进的结果。我们提出的探索方法包括多个贡献:修改的访问计数,训练数据集的预处理过程,以及编码已经执行的程序部分。
2023-03-13 cs.LG cs.PL cs.SE
Choose Your Programming Copilot: A Comparison of the Program Synthesis Performance of GitHub Copilot and Genetic Programming
Johannes Gutenberg University(约翰内斯·古腾堡大学)
GitHub Copilot是由大规模语言模型Codex提供支持的Visual Studio Code开发环境的扩展,为软件开发人员提供自动程序合成。该模型在深度学习领域已经得到了广泛的研究,然而,与遗传编程的比较尚未进行,遗传编程也以其在自动程序合成中的性能而闻名。在本文中,我们评估GitHub Copilot在标准程序合成基准问题上的表现,并将所取得的结果与遗传编程文献中的结果进行比较。此外,我们讨论了这两种方法的性能。我们发现这两种方法在基准测试问题上的性能相当相似,然而,与GitHub Copilot相比,基于遗传编程的程序合成方法还不够成熟,无法支持程序员进行实际的软件开发。遗传编程通常需要大量昂贵的手工标记的训练案例,并且需要花费太多的时间来生成解决方案。此外,由遗传编程方法生成的源代码通常是臃肿的并且难以理解。对于未来的工作与遗传编程的程序合成,我们建议研究人员专注于提高执行时间,可读性和可用性。
2021-11-15 cs.LG cs.NE cs.SE
Towards Mixed Optimization for Reinforcement Learning with Program Synthesis
Google Brain(谷歌大脑)
深度强化学习最近取得了一些突破,尽管学习的策略通常基于黑盒神经网络。这使得它们难以解释,并在学习过程中施加所需的规范约束。我们提出了一个迭代的框架,MORL,使用程序合成,以提高学习的政策。具体地说,我们建议使用合成技术来获得一个符号表示的学习政策,然后可以手动或自动使用程序修复调试。在修复步骤之后,我们使用行为克隆来获得与修复程序相对应的策略,然后使用梯度下降来进一步改进该策略。这个过程一直持续到学习到的策略满足所需的约束。我们实例化MORL简单的CartPole问题,并表明,编程表示允许高层次的修改,从而导致改善学习的政策。
2018-07-03 cs.AI cs.LG stat.ML
Bayesian causal inference via probabilistic program synthesis
University of Massachusetts(马萨诸塞大学);Massachusetts Institute of Technology(麻省理工学院)
因果推理可以形式化为贝叶斯推理,其结合了因果模型的先验分布和解释观察和干预的可能性。我们表明,它是可能的,以实现这种方法,使用一个充分表达的概率程序设计语言。先验表示使用概率程序生成的源代码在一个特定领域的语言。干预是使用概率程序,编辑这个源代码修改原始的生成过程。这种方法可以直接将来自原子干预的数据,以及转移干预,方差缩放干预和其他修改因果结构的干预。这种方法也使得使用通用推理机的概率程序推断可能的因果结构和参数的数据。这一摘要描述了一个原型,这种方法在Gen概率程序设计语言。
2019-10-30 cs.AI cs.LG
Latent Execution for Neural Program Synthesis
UC Berkeley(加州大学伯克利分校);Facebook AI Research(Facebook人工智能研究院)
从输入-输出(IO)实例进行程序合成是一个长期存在的挑战。虽然最近的工作在领域特定语言(DSL)上取得了有限的成功,但将它们应用于现实世界的程序设计语言(如C)仍然具有很大的挑战性。由于复杂的语法和标记变化,存在三个主要挑战:(1)与许多DSL不同,像C这样的语言中的程序需要首先编译并且不通过解释器执行;(2)当程序设计语言的语法和语义变得更加复杂时,程序搜索空间呈指数级增长;以及(3)收集真实世界程序的大规模数据集是不平凡的。作为解决这些挑战的第一步,我们提出LaSynth,并显示其在限制C域的有效性。更具体地说,LaSynth学习潜在表示来近似部分生成的程序的执行,即使它们在语法上不完整(寻址(1))。学习的执行显著提高了现有方法的下一个令牌预测的性能,促进了搜索(寻址(2))。最后,一旦使用随机生成的地面实况程序及其IO对进行训练,LaSynth就可以合成更简洁的程序,类似于人类编写的代码。此外,用这些合成程序重新训练我们的模型,对于卡雷尔和C程序合成都用更少的样本产生了更好的性能,这表明利用学习的程序合成器来提高输入输出程序合成的数据集质量的前景(寻址(3))。当评估程序执行输出是否与IO对匹配时,LaSynth在生成具有数十个令牌(包括循环和分支)的简单C代码时达到了55.2%的准确率,比没有执行器的现有方法高出约20%。
2021-11-22 cs.LG cs.PL cs.SE
Shedding Light in Task Decomposition in Program Synthesis: The Driving Force of the Synthesizer Model
TU Clausthal(克劳斯塔尔工业大学)
本研究对比采用任务分解的ExeDec框架与仅依赖执行驱动综合的REGISM变体,探究任务分解与程序生成的相互作用,发现显式分解有特定优势,执行引导综合对性能提升至关重要。
2025-03-20 cs.LG cs.PL cs.SE
Synthesize, Execute and Debug: Learning to Repair for Neural Program Synthesis
UC Berkeley(加州大学伯克利分校);Technical University of Denmark(丹麦技术大学)
深度学习技术的使用已经在从输入-输出示例进行程序合成方面取得了重大进展。然而,当程序语义变得更加复杂,它仍然是一个挑战,综合程序是符合规范。在这项工作中,我们提出了SED,神经程序生成框架,包括合成,执行和调试阶段。SED不是纯粹依靠神经程序合成器来生成最终程序,而是首先使用神经程序合成器组件生成初始程序,然后利用神经程序调试器来迭代地修复生成的程序。调试器组件的集成使SED能够根据执行结果和规范修改程序,这类似于人类程序员的编码过程。在卡雷尔,一个具有挑战性的输入输出程序合成基准,SED降低了神经程序合成器本身的出错率相当大的利润,并优于标准的束搜索解码。
2020-10-22 cs.LG cs.SE stat.ML
Neural Program Synthesis with a Differentiable Fixer
University of Cambridge(剑桥大学);MPI Tübingen(马克斯·普朗克研究所图宾根分所);Google Research(谷歌研究院)
我们提出了一种新的程序合成方法,结合了一个基于编码器-解码器的合成架构与可微程序固定器。我们的方法的灵感来自于这样一个事实,即人类开发人员很少在第一次尝试时就正确地获得他们的程序,并执行基于迭代测试的程序修复以获得所需的程序功能。类似地,我们的方法首先学习一个分布在一组输入输出示例的编码条件下的程序,然后迭代地使用可微固定器执行修复操作。固定器将原始示例和示例输入上的当前程序的输出作为输入,并在程序上生成新的分布,其目标是减少当前程序输出和期望的示例输出之间的差异。我们训练我们的架构端到端的RobustFill域,并表明,除了固定器模块导致合成精度显着提高相比,使用波束搜索。
2020-06-19 cs.LG stat.ML
CrossBeam: Learning to Search in Bottom-Up Program Synthesis
Google Research(谷歌研究院);Cornell University(康奈尔大学)
CrossBeam 提出用神经模型学习自底向上程序合成的搜索策略,根据搜索历史与部分执行选择程序组合方式,并在字符串操作和逻辑编程任务上验证其能以更小的搜索空间实现高效合成。
2022-03-20 cs.LG cs.PL stat.ML
Automatic Program Synthesis of Long Programs with a Learned Garbage Collector
The School of Computer Science , Tel Aviv University(特拉维夫大学计算机科学学院);Facebook AI Research(Facebook人工智能研究院)
我们考虑的问题,自动生成代码给定样本的输入输出对。我们训练一个神经网络,将当前状态和输出映射到程序的下一个语句。神经网络同时优化多个任务:一组高级命令的下一个操作,下一个语句的操作数,以及哪些变量可以从内存中删除。使用我们的方法,我们能够创建的程序是现有的最先进的解决方案的两倍以上,同时提高了可比长度的成功率,并将运行时间缩短了两个数量级。我们的代码,包括各种文献基线的实现,可在https://github.com/amitz25/PCCoder上公开获取
2019-01-22 cs.LG cs.PL stat.ML
Knowledge Refactoring for Inductive Program Synthesis
KU Leuven(鲁汶大学);Oxford(牛津大学)
人类不断重组知识,以更有效地利用它。我们的目标是赋予机器学习系统类似的能力,以便它能够更有效地学习。我们介绍的\textit{knowledge refactoring}问题,其目标是重组一个学习者的知识库,以减少其大小,并尽量减少冗余it.We专注于归纳逻辑程序设计,其中的知识库是一个逻辑程序。我们介绍克诺尔夫,一个系统,解决了重构问题,使用约束优化。我们评估我们的方法上的两个程序感应域:现实世界中的字符串变换和乐高结构的建设。我们的实验表明,从重构的知识中学习可以将预测精度提高四倍,并将学习时间减少一半。
2020-11-24 cs.AI cs.LG stat.ML
Creating Synthetic Datasets via Evolution for Neural Program Synthesis
Wayfair Research(Wayfair 研究院);Northeastern University(东北大学)
程序合成是自动生成符合给定规范的程序的任务。指定程序的一种自然方式是提供所需输入-输出行为的示例,并且许多当前的程序合成方法在随机生成的输入-输出示例上进行训练后已经取得了令人印象深刻的结果。然而,最近的工作已经发现,这些方法中的一些推广较差的数据分布不同的随机生成的例子。我们表明,这个问题也适用于其他国家的最先进的方法,以及目前的方法来抵消这个问题是不够的。然后,我们提出了一种新的,对抗性的方法来控制合成数据分布的偏差,并表明它优于当前的方法。
2020-07-25 cs.LG stat.ML
BUSTLE: Bottom-Up Program Synthesis Through Learning-Guided Exploration
Google Research(谷歌研究院)
本文提出BUSTLE方法,通过学习模型引导自底向上搜索中的中间值组合优先级,利用程序执行语义和属性签名特征,在SyGuS竞赛及自建数据集上验证了学习与自底向上搜索结合的有效性。
2021-09-30 cs.LG cs.PL stat.ML
HOUDINI: Lifelong Learning as Program Synthesis
University of Edinburgh(爱丁堡大学);Rice University(莱斯大学)
我们提出了一个神经符号的框架,混合感知和程序推理的算法任务的终身学习。跨领域重用高级概念和学习复杂程序是终身学习的关键挑战。我们表明,一个程序合成的方法,结合梯度下降与组合搜索程序可以更有效地应对这些挑战比纯神经方法。我们的框架,称为HOUDINI,代表神经网络作为强类型,可微分的功能程序,使用符号高阶组合子组成的神经功能库。我们的学习算法包括:(1)一个符号程序合成器,它在参数化程序上执行类型定向搜索,并决定重用的库函数和组合它们的架构,同时学习一系列任务;(2)一个神经模块,它使用随机梯度下降训练这些程序。我们在三个基准上评估HOUDINI,这些基准将感知与计数,求和和最短路径计算的算法任务相结合。我们的实验表明,HOUDINI比传统的迁移学习和渐进式神经网络更有效地传输高级概念,并且网络的类型化表示显着加速了搜索。
2018-10-28 cs.LG cs.PL stat.ML
Evaluating Sequence-to-Sequence Learning Models for If-Then Program Synthesis
Talla, Inc(塔拉公司)
实施企业流程自动化通常需要大量的技术专业知识和工程工作。对于非技术用户来说,能够用自然语言描述业务流程并让智能系统生成可以自动执行的工作流将是有益的。流程自动化的一个构建块是If-Then程序。在消费者领域,像IFTTT和Zapier这样的网站允许用户通过使用图形界面定义If-Then程序来创建自动化。我们探讨了作为一个序列学习任务的If-Then程序建模的有效性。我们发现Seq 2Seq方法具有很高的潜力(在Zapier配方上表现强劲),可以作为一种有前途的方法来应对更复杂的程序合成挑战。
2020-02-10 cs.LG stat.ML
Leveraging Grammar and Reinforcement Learning for Neural Program Synthesis
University of Oxford(牛津大学);Microsoft Research(微软研究院);Google(谷歌);Deepmind(深度思维)
程序合成是自动生成符合规范的程序的任务。近年来,已经看到了许多用于程序合成的神经方法的提议,其中许多采用类似于神经机器翻译的序列生成范例,其中序列到序列模型被训练以最大化已知参考程序的可能性。虽然取得了令人印象深刻的成果,但这一战略有两个关键的局限性。首先,它忽略了程序别名:许多不同的程序可能满足给定的规范(特别是不完整的规范,如一些输入输出示例)。通过最大化只有一个参考程序的可能性,它惩罚了许多语义正确的程序,这可能会对合成器的性能产生不利影响。其次,这种策略忽略了这样一个事实,即程序有一个严格的语法,可以有效地检查。为了解决第一个限制,我们在监督模型之上执行强化学习,其目标是显式地最大化生成语义正确程序的可能性。为了解决第二个限制,我们引入了一个训练过程,直接最大限度地提高生成语法正确的程序,满足规范的概率。我们表明,我们的贡献导致模型的精度提高,特别是在训练数据有限的情况下。
2018-05-22 cs.LG stat.ML
Neural Guided Constraint Logic Programming for Program Synthesis
University of Toronto(多伦多大学);Vector Institute(向量研究所);University of Alabama at Birmingham(阿拉巴马大学伯明翰分校);Uber ATG(优步先进技术集团)
使用示例输入/输出来综合程序是人工智能中的经典问题。我们提出了一种方法来解决编程的例子(PBE)的问题,通过使用神经模型来指导搜索的约束逻辑编程系统称为miniKanren。至关重要的是,神经模型使用miniKanren的内部表示作为输入; miniKanren将PBE问题表示为由所提供的示例施加的递归约束。我们探讨了递归神经网络和图神经网络模型。我们提供了一个修改后的miniKanren,可由外部代理驱动,可在https://github.com/xuexue/neuralkanren上获得。我们表明,我们的神经引导的方法,使用约束可以合成程序更快地在许多情况下,重要的是,可以推广到更大的问题。
2018-10-26 cs.LG stat.ML
Learning Neurosymbolic Generative Models via Program Synthesis
University of Pennsylvania(宾夕法尼亚大学)
近年来,在设计更好的生成模型方面取得了重大进展。然而,尽管取得了这一进展,最先进的方法在很大程度上仍然无法捕捉复杂的全球数据结构。例如,建筑物的图像通常包含空间模式,例如以规则间隔重复的窗户;最先进的生成方法无法轻松再现这些结构。我们建议通过将代表全局结构的程序合并到生成模型中来解决这个问题-例如,2D for循环可以表示窗口的配置。此外,我们提出了一个学习这些模型的框架,利用程序合成生成训练数据。在合成和真实世界的数据上,我们证明了我们的方法在生成和完成包含全局结构的图像方面比最先进的方法要好得多。
2019-01-24 cs.LG stat.ML
(Vector) Space is Not the Final Frontier: Product Search as Program Synthesis
New York University(纽约大学);Bauplan
本研究针对商品搜索中向量空间模型主导的现状,提出程序合成方法对多类查询和市场参与者有显著优势,详述其行业意义与实现细节,并结合Tooso的系统构建经验回应质疑。
2023-06-11 cs.CL cs.IR cs.LG