程序合成的目标是从示例中找到一个与给定的输入输出示例一致的计算机程序。基于大多数基于学习的方法都尝试找到一个满足所有示例的程序一次。相比之下,我们的工作考虑了一个将问题分为两个阶段的方法:(a)查找只满足一个示例的程序,(b)利用这些每个示例解决方案来产生满足所有示例的程序。我们基于多主题注意机制介绍跨聚合器神经网络模块,该机制学会组合在这些每个示例解决方案中存在的提示来合成全局解决方案。在不同长度和两个不同的实验设置下的评估显示,当鉴于同时预算时,我们的技术显着提高了PCODER的成功率[Zohar等。 AL 2018]和其他消融基线。我们工作的代码,数据和经过培训的模型可以在https://github.com/shrivastavadisha/n-peps找到。
translated by 谷歌翻译
Alphazero,Leela Chess Zero和Stockfish Nnue革新了计算机国际象棋。本书对此类引擎的技术内部工作进行了完整的介绍。该书分为四个主要章节 - 不包括第1章(简介)和第6章(结论):第2章引入神经网络,涵盖了所有用于构建深层网络的基本构建块,例如Alphazero使用的网络。内容包括感知器,后传播和梯度下降,分类,回归,多层感知器,矢量化技术,卷积网络,挤压网络,挤压和激发网络,完全连接的网络,批处理归一化和横向归一化和跨性线性单位,残留层,剩余层,过度效果和底漆。第3章介绍了用于国际象棋发动机以及Alphazero使用的经典搜索技术。内容包括minimax,alpha-beta搜索和蒙特卡洛树搜索。第4章展示了现代国际象棋发动机的设计。除了开创性的Alphago,Alphago Zero和Alphazero我们涵盖Leela Chess Zero,Fat Fritz,Fat Fritz 2以及有效更新的神经网络(NNUE)以及MAIA。第5章是关于实施微型α。 Shexapawn是国际象棋的简约版本,被用作为此的示例。 Minimax搜索可以解决六ap峰,并产生了监督学习的培训位置。然后,作为比较,实施了类似Alphazero的训练回路,其中通过自我游戏进行训练与强化学习结合在一起。最后,比较了类似α的培训和监督培训。
translated by 谷歌翻译
随着未来以数据为中心的决策,对数据库的无缝访问至关重要。关于创建有效的文本到SQL(Text2SQL)模型以访问数据库的数据有广泛的研究。使用自然语言是可以通过有效访问数据库(尤其是对于非技术用户)来弥合数据和结果之间差距的最佳接口之一。它将打开门,并在精通技术技能或不太熟练的查询语言的用户中引起极大的兴趣。即使提出或研究了许多基于深度学习的算法,在现实工作场景中使用自然语言来解决数据查询问题仍然非常具有挑战性。原因是在不同的研究中使用不同的数据集,这带来了其局限性和假设。同时,我们确实缺乏对这些提议的模型及其对其训练的特定数据集的局限性的彻底理解。在本文中,我们试图介绍过去几年研究的24种神经网络模型的整体概述,包括其涉及卷积神经网络,经常性神经网络,指针网络,强化学习,生成模型等的架构。我们还概述11个数据集,这些数据集被广泛用于训练Text2SQL技术的模型。我们还讨论了无缝数据查询中文本2SQL技术的未来应用可能性。
translated by 谷歌翻译
输入 - 输出(IO)示例的程序综合是一项长期挑战。虽然最近的作品在特定于域的语言(DSL)上表现出有限的成功,但将它们应用于现实世界的编程语言,例如C.由于复杂的语法和令牌变化,有三种主要挑战:(1)与许多DSL不同,像C如语言的程序需要首先编译,并且不会通过解释器执行; (2)程序搜索空间在编程语言的语法和语义变得更加复杂时呈指数增长; (3)收集实际计划的大规模数据集是非微不足道的。作为解决这些挑战的第一步,我们提出了Lasynth,并在限制-C域中表现出其疗效。更具体地,Lasynth学习潜在的表示,以近似于执行部分生成的程序的执行,即使它们在语法中不完整(寻址(1))。学习的执行显着提高了对现有方法的下一个令牌预测的性能,便于搜索(寻址(2))。最后,一旦接受了随机生成的地面真理计划和IO对,Lasynth可以合成更多简明的程序,类似于人为人写的代码。此外,使用这些合成程序再培训我们的模型,对于Karel和C程序合成的样本较少,表明利用学习程序合成器的承诺来提高输入 - 输出程序合成的数据集质量(寻址(3))。在评估程序执行输出是否与IO对匹配时,Lasynth达到55.2%的精度,即用数十个代币生成简单的C代码,包括环和分支,优先表现出没有执行者的现有方法约20%。
translated by 谷歌翻译
源代码的最先进的神经模型倾向于在代码的生成时进行评估,并且通常在长地平任务中的产生,例如整个方法体的产生。我们建议使用静态程序分析仪的弱监督来解决这一缺陷。我们的神经统计方法允许深入的生成模型来象征地计算它已经生成的代码中的静态分析工具,长距离语义关系。在培训期间,该模型观察这些关系,并学习生成条件上的程序。考虑到包含该方法的类的剩余部分,我们将我们的方法应用于生成整个Java方法的问题。我们的实验表明,该方法显着地优于最先进的变换器和模型,明确试图在制作程序中没有基本语义错误的程序以及在句法匹配地面真理方面来学习此任务的模型。
translated by 谷歌翻译
In the past few years, neural architecture search (NAS) has become an increasingly important tool within the deep learning community. Despite the many recent successes of NAS, however, most existing approaches operate within highly structured design spaces, and hence explore only a small fraction of the full search space of neural architectures while also requiring significant manual effort from domain experts. In this work, we develop techniques that enable efficient NAS in a significantly larger design space. To accomplish this, we propose to perform NAS in an abstract search space of program properties. Our key insights are as follows: (1) the abstract search space is significantly smaller than the original search space, and (2) architectures with similar program properties also have similar performance; thus, we can search more efficiently in the abstract search space. To enable this approach, we also propose a novel efficient synthesis procedure, which accepts a set of promising program properties, and returns a satisfying neural architecture. We implement our approach, $\alpha$NAS, within an evolutionary framework, where the mutations are guided by the program properties. Starting with a ResNet-34 model, $\alpha$NAS produces a model with slightly improved accuracy on CIFAR-10 but 96% fewer parameters. On ImageNet, $\alpha$NAS is able to improve over Vision Transformer (30% fewer FLOPS and parameters), ResNet-50 (23% fewer FLOPS, 14% fewer parameters), and EfficientNet (7% fewer FLOPS and parameters) without any degradation in accuracy.
translated by 谷歌翻译
在本文中,我们试图通过引入深度学习模型的句法归纳偏见来建立两所学校之间的联系。我们提出了两个归纳偏见的家族,一个家庭用于选区结构,另一个用于依赖性结构。选区归纳偏见鼓励深度学习模型使用不同的单位(或神经元)分别处理长期和短期信息。这种分离为深度学习模型提供了一种方法,可以从顺序输入中构建潜在的层次表示形式,即更高级别的表示由高级表示形式组成,并且可以分解为一系列低级表示。例如,在不了解地面实际结构的情况下,我们提出的模型学会通过根据其句法结构组成变量和运算符的表示来处理逻辑表达。另一方面,依赖归纳偏置鼓励模型在输入序列中找到实体之间的潜在关系。对于自然语言,潜在关系通常被建模为一个定向依赖图,其中一个单词恰好具有一个父节点和零或几个孩子的节点。将此约束应用于类似变压器的模型之后,我们发现该模型能够诱导接近人类专家注释的有向图,并且在不同任务上也优于标准变压器模型。我们认为,这些实验结果为深度学习模型的未来发展展示了一个有趣的选择。
translated by 谷歌翻译
这本数字本书包含在物理模拟的背景下与深度学习相关的一切实际和全面的一切。尽可能多,所有主题都带有Jupyter笔记本的形式的动手代码示例,以便快速入门。除了标准的受监督学习的数据中,我们将看看物理丢失约束,更紧密耦合的学习算法,具有可微分的模拟,以及加强学习和不确定性建模。我们生活在令人兴奋的时期:这些方法具有从根本上改变计算机模拟可以实现的巨大潜力。
translated by 谷歌翻译
This paper introduces corpus-guided top-down synthesis as a mechanism for synthesizing library functions that capture common functionality from a corpus of programs in a domain specific language (DSL). The algorithm builds abstractions directly from initial DSL primitives, using syntactic pattern matching of intermediate abstractions to intelligently prune the search space and guide the algorithm towards abstractions that maximally capture shared structures in the corpus. We present an implementation of the approach in a tool called Stitch and evaluate it against the state-of-the-art deductive library learning algorithm from DreamCoder. Our evaluation shows that Stitch is 3-4 orders of magnitude faster and uses 2 orders of magnitude less memory while maintaining comparable or better library quality (as measured by compressivity). We also demonstrate Stitch's scalability on corpora containing hundreds of complex programs that are intractable with prior deductive approaches and show empirically that it is robust to terminating the search procedure early -- further allowing it to scale to challenging datasets by means of early stopping.
translated by 谷歌翻译
随着大型语言模型(LLM)的成功及其用作代码助手(例如GitHub Copilot中使用的法典),在及时设计过程中引入特定领域知识的技术变得很重要。在这项工作中,我们提出了一个名为Repo级提示生成器的框架,该框架学会使用一组规则生成示例特定的提示。这些规则从整个存储库中获取上下文,从而结合了存储库的结构和其他相关文件(例如导入,父类文件)的上下文。我们的技术不需要访问LLM的权重,因此在我们只能使用Black-Box访问LLM的情况下,它适用。我们使用从Google Code Archives获取的代码存储库进行了有关单线代码Autocossletion任务的实验。我们证明,根据我们提出的规则构建的甲骨文允许对法典的相对改进多达36%,显示了规则的质量。此外,我们表明,当我们训练模型以选择最佳规则时,我们可以在Codex上获得显着的性能提高。可以在以下网址找到我们工作的代码:https://github.com/shrivastavadisha/repo_level_prompt_generation。
translated by 谷歌翻译
即使机器学习算法已经在数据科学中发挥了重要作用,但许多当前方法对输入数据提出了不现实的假设。由于不兼容的数据格式,或数据集中的异质,分层或完全缺少的数据片段,因此很难应用此类方法。作为解决方案,我们提出了一个用于样本表示,模型定义和培训的多功能,统一的框架,称为“ Hmill”。我们深入审查框架构建和扩展的机器学习的多个范围范式。从理论上讲,为HMILL的关键组件的设计合理,我们将通用近似定理的扩展显示到框架中实现的模型所实现的所有功能的集合。本文还包含有关我们实施中技术和绩效改进的详细讨论,该讨论将在MIT许可下发布供下载。该框架的主要资产是其灵活性,它可以通过相同的工具对不同的现实世界数据源进行建模。除了单独观察到每个对象的一组属性的标准设置外,我们解释了如何在框架中实现表示整个对象系统的图表中的消息推断。为了支持我们的主张,我们使用框架解决了网络安全域的三个不同问题。第一种用例涉及来自原始网络观察结果的IoT设备识别。在第二个问题中,我们研究了如何使用以有向图表示的操作系统的快照可以对恶意二进制文件进行分类。最后提供的示例是通过网络中实体之间建模域黑名单扩展的任务。在所有三个问题中,基于建议的框架的解决方案可实现与专业方法相当的性能。
translated by 谷歌翻译
最近,深增强学习(DRL)方法在各种域中的任务方面取得了令人印象深刻的性能。然而,用DRL方法产生的神经网络政策不是人为可解释的,并且通常难以推广到新颖的情景。为了解决这些问题,事先作品探索学习更具可诠释和构建的概括的程序政策。然而,这些作品要么采用有限的政策表示(例如,决策树,状态机或预定义的程序模板)或需要更强的监督(例如输入/输出状态对或专家演示)。我们提出了一个框架,而是学习合成一个程序,该程序详细介绍了以灵活和表现力的方式解决任务的过程,仅来自奖励信号。为了减轻学习难以从头开始诱发所需的代理行为的难度,我们建议首先了解一个程序嵌入空间,以不传达的方式连续参加各种行为,然后搜索嵌入空间以产生程序最大化给定任务的返回。实验结果表明,所提出的框架不仅可以可靠地综合任务解决方案,而且在产生可解释和更广泛的政策的同时优于DRL和程序合成基线。我们还可以证明所提出的两级学习计划的必要性,并分析了学习计划嵌入的各种方法。
translated by 谷歌翻译
我们提出了一项合成任务,乐高(学习平等和小组操作),该任务封装了遵循推理链的问题,我们研究了变压器体系结构如何学习这项任务。我们特别注意数据效应,例如预处理(看似无关的NLP任务)和数据集组成(例如,训练和测试时间时的链长度不同),以及体系结构变体,例如重量绑定层或添加卷积组件。我们研究了受过训练的模型最终如何在任务中取得成功,尤其是我们能够在某种程度上(一定程度地)理解一些注意力头以及网络中的信息如何流动。基于这些观察结果,我们提出了一个假设,即在这里进行预训练仅是因为是智能初始化而不是网络中存储的深层知识。我们还观察到,在某些数据制度中,受过训练的变压器发现“快捷方式”解决方案遵循推理链,这阻碍了该模型将其推广到主要任务的简单变体的能力,而且我们发现人们可以防止适当的快捷方式架构修改或仔细的数据准备。在我们的发现的激励下,我们开始探索学习执行C程序的任务,在此过程中,对变压器进行了卷积修改,即在密钥/查询/值图中添加卷积结构,显示出令人鼓舞的优势。
translated by 谷歌翻译
归纳逻辑编程(ILP)是一种机器学习的形式。ILP的目标是诱导推广培训示例的假设(一组逻辑规则)。随着ILP转30,我们提供了对该领域的新介绍。我们介绍了必要的逻辑符号和主要学习环境;描述ILP系统的构建块;比较几个维度的几个系统;描述四个系统(Aleph,Tilde,Aspal和Metagol);突出关键应用领域;最后,总结了未来研究的当前限制和方向。
translated by 谷歌翻译
复杂的推理问题包含确定良好行动计划所需的计算成本各不相同的状态。利用此属性,我们提出了自适应亚go搜索(ADASUBS),这是一种适应性地调整计划范围的搜索方法。为此,ADASUBS在不同距离上产生了不同的子目标。采用验证机制来迅速滤除无法到达的子目标,从而使人专注于可行的进一步子目标。通过这种方式,ADASUBS受益于计划的效率更长的子目标,以及对较短的计划的良好控制。我们表明,ADASUB在三个复杂的推理任务上大大超过了层次规划算法:Sokoban,The Rubik的Cube和不平等现象证明了基准INT,为INT设定了新的最先进。
translated by 谷歌翻译
Large language models (LLMs) have demonstrated an impressive ability to generate code for various programming tasks. In many instances, LLMs can generate a correct program for a task when given numerous trials. Consequently, a recent trend is to do large scale sampling of programs using a model and then filtering/ranking the programs based on the program execution on a small number of known unit tests to select one candidate solution. However, these approaches assume that the unit tests are given and assume the ability to safely execute the generated programs (which can do arbitrary dangerous operations such as file manipulations). Both of the above assumptions are impractical in real-world software development. In this paper, we propose CodeRanker, a neural ranker that can predict the correctness of a sampled program without executing it. Our CodeRanker is fault-aware i.e., it is trained to predict different kinds of execution information such as predicting the exact compile/runtime error type (e.g., an IndexError or a TypeError). We show that CodeRanker can significantly increase the pass@1 accuracy of various code generation models (including Codex, GPT-Neo, GPT-J) on APPS, HumanEval and MBPP datasets.
translated by 谷歌翻译
程序合成或代码生成旨在生成满足问题规范的程序。使用大规模预处理的语言模型(LMS)的最新方法显示出令人鼓舞的结果,但它们有一些关键的局限性。特别是,他们经常遵循标准监督的微调程序,仅从对自然语言问题描述和基础真相计划对培训代码生成模型。这种范式在很大程度上忽略了问题规范中的一些重要但潜在的信号,例如单位测试,因此在求解复杂的看不见的编码任务时通常会导致性能差。为了解决这些局限性,我们提出了“ Coderl”,这是通过验证的LMS和深入强化学习(RL)实现程序合成任务的新框架。具体而言,在培训期间,我们将代码生成的LM视为参与者网络,并引入批评网络,该网络经过培训,以预测生成的程序的功能正确性,并为演员提供密集的反馈信号。在推理期间,我们引入了一种新一代程序,具有关键的抽样策略,该过程允许模型根据示例单位测试和评论家分数的反馈自动重新生成程序。对于模型骨架,我们扩展了Codet5的编码器架构,具有增强的学习目标,更大的模型大小和更好的预处理数据。我们的方法不仅在具有挑战性的应用程序基准上实现了新的SOTA结果,而且还显示出强大的零弹性传输能力,并在简单的MBPP基准上具有新的SOTA结果。
translated by 谷歌翻译
We present a self-learning approach for synthesizing programs from integer sequences. Our method relies on a tree search guided by a learned policy. Our system is tested on the On-Line Encyclopedia of Integer Sequences. There, it discovers, on its own, solutions for 27987 sequences starting from basic operators and without human-written training examples.
translated by 谷歌翻译
预先训练的大语言模型(LLM)(例如OpenAI Codex)通过从非正式自然语言(NL)意图中生成自然代码来自动化编码的重要方面。但是,生成的代码无法满足用户意图的任何正确性保证。实际上,很难定义正确性的概念,因为自然语言可能是模棱两可的,并且缺乏正式的语义。在本文中,我们通过提出测试驱动的用户形式化(TDUIF)的工作流程来解决以上问题的第一步,该工作流利用轻量级用户的反馈共同将用户的意图正式化为测试(部分规范) ),(b)生成符合正式用户意图的代码。要对算法进行可扩展的大规模自动化评估,而无需循环中的用户,我们描述了如何使用参考解决方案模拟用户与高保真性的互动。我们还描述并实施了几种算法组件(包括突变和排名一组测试)的替代实现,这些实现可用于有效解决TDUIF问题。我们已经开发了一个系统的Ticoder,该系统实现了多种解决方案来进行TDUIF,并将其对MBPP学术代码生成基准测试的相对有效性进行了比较。在MBPP上使用OpenAI Codex LLM的结果很有希望:我们的最佳算法将通行证@1代码生成准确度指标从48.39%提高到单个用户查询,最高为85.48%,最多可达55.48%,最多可提供5个用户查询。其次,我们可以生成与用户意图在1.69个用户查询中的非平凡功能单位测试,该数据集为90.40%的示例,用于此数据集。
translated by 谷歌翻译
在本文中,我们解决了深入学习的软件漏洞自动修复问题。数据驱动漏洞修复的主要问题是已知确认漏洞的少数现有数据集仅由几千例组成。然而,培训深度学习模型通常需要数十万例的例子。在这项工作中,我们利用了错误修复任务和漏洞修复任务的直觉相关,并且可以传输来自错误修复的知识可以传输到修复漏洞。在机器学习界中,这种技术称为转移学习。在本文中,我们提出了一种修复名为Vreepair的安全漏洞的方法,该方法是基于转移学习。 vreepair首先在大型错误修复语料库上培训,然后在漏洞修复数据集上调整,这是一个较小的数量级。在我们的实验中,我们表明,仅在错误修复语料库上培训的模型可能已经修复了一些漏洞。然后,我们证明转移学习改善了修复易受攻击的C功能的能力。我们还表明,转移学习模型比具有去噪任务训练的模型更好,并在漏洞固定任务上进行微调。总而言之,本文表明,与在小型数据集上的学习相比,转移学习适用于修复C中的安全漏洞。
translated by 谷歌翻译