集成开发环境(IDE)提供工具支持,以自动化许多源代码编辑任务。传统上,IDE仅使用空间上下文,即开发人员正在编辑的位置来生成候选编辑建议。但是,仅空间上下文通常不足以自信地预测开发人员的下一个编辑,因此IDE在某个位置会产生许多建议。因此,IDE通常不会主动提供建议,而是需要单击特定图标或菜单,然后从大量潜在建议列表中进行选择。结果,开发人员通常会错过使用工具支持的机会,因为他们不知道它存在或忘记使用它。为了更好地理解开发人员行为中的常见模式并产生更好的编辑建议,我们还可以使用时间上下文,即开发人员最近执行的编辑。为了启用基于时间上下文的编辑建议,我们提出了《守望先锋》,这是一种从IDE中执行的开发人员编辑痕迹学习编辑序列模式的新颖技术。我们的实验表明,《守望先锋》具有78%的精度,守望先锋不仅完成了开发人员错过使用IDE工具支持的机会,而且还预测了在IDE中没有工具支持的新编辑。
translated by 谷歌翻译
大多数低编码平台的用户,例如Excel和PowerApps,都以特定于域的公式语言编写程序来执行非平凡的任务。用户通常可以编写他们想要的大部分程序,但是引入了一些小错误,这些错误会产生破损的公式。这些错误既可以是句法和语义,也很难让低代码用户识别和修复,即使只能通过一些编辑解决。我们正式化了产生最后一英里维修问题等编辑的问题。为了解决这个问题,我们开发了Lamirage,这是一种最后一英里的维修发动机发电机,结合了符号和神经技术,以低代码公式语言进行最后一英里维修。 Lamirage采用语法和一组特定领域的约束/规则,它们共同近似目标语言,并使用它们来生成可以用该语言修复公式的维修引擎。为了应对本地化错误和对候选维修进行排名的挑战,Lamirage利用神经技术,而它依赖于符号方法来生成候选维修。这种组合使Lamirage可以找到满足提供的语法和约束的维修,然后选择最自然的修复。我们将Lamirage与400个Real Excel和PowerFX公式的最新神经和符号方法进行了比较,其中Lamirage的表现优于所有基线。我们释放这些基准,以鼓励在低代码域中进行后续工作。
translated by 谷歌翻译
协作软件开发是现代软件开发生命周期不可或缺的一部分,这对于大规模软件项目的成功至关重要。当多个开发人员围绕相同的代码进行同时更改时,可能会发生合并冲突。这种冲突停滞不前的请求和连续的集成管道数小时至几天,严重损害了开发人员的生产力。为了解决这个问题,我们介绍了Mergebert,这是一个新型的神经程序合并框架,基于令牌级别的三向差异和变压器编码器模型。通过利用合并冲突决议的受限性质,我们重新制定了将分辨率序列作为分类任务生成的任务,而不是从现实世界合并提交提交数据中提取的一组原始合并模式上进行分类任务。我们的模型可实现合并分辨率合成的63-68%精度,对现有的半结构化的性能提高了近3倍,而对神经程序合并工具的改善为2倍。最后,我们证明Mergebert足够灵活地使用Java,JavaScript,Typescript和C#编程语言中的源代码文件。为了衡量Mergebert的实际使用,我们进行了一项用户研究,以评估Mergebert的建议,其中25位来自大型OSS项目的开发人员在他们遇到的122场现实世界冲突中进行了研究。结果表明,实际上,Mergebert决议将被接受比自动指标估计的精确度和准确性更高的速率。此外,我们使用参与者的反馈来确定未来改善Mergebert的途径。
translated by 谷歌翻译
Machine Learning for Source Code (ML4Code) is an active research field in which extensive experimentation is needed to discover how to best use source code's richly structured information. With this in mind, we introduce JEMMA, an Extensible Java Dataset for ML4Code Applications, which is a large-scale, diverse, and high-quality dataset targeted at ML4Code. Our goal with JEMMA is to lower the barrier to entry in ML4Code by providing the building blocks to experiment with source code models and tasks. JEMMA comes with a considerable amount of pre-processed information such as metadata, representations (e.g., code tokens, ASTs, graphs), and several properties (e.g., metrics, static analysis results) for 50,000 Java projects from the 50KC dataset, with over 1.2 million classes and over 8 million methods. JEMMA is also extensible allowing users to add new properties and representations to the dataset, and evaluate tasks on them. Thus, JEMMA becomes a workbench that researchers can use to experiment with novel representations and tasks operating on source code. To demonstrate the utility of the dataset, we also report results from two empirical studies on our data, ultimately showing that significant work lies ahead in the design of context-aware source code models that can reason over a broader network of source code entities in a software project, the very task that JEMMA is designed to help with.
translated by 谷歌翻译
深度学习方法的最新突破引发了人们对基于学习的错误探测器的兴趣。与传统的静态分析工具相比,这些错误检测器是直接从数据中学到的,因此更容易创建。另一方面,它们很难训练,需要大量数据,而这些数据不容易获得。在本文中,我们提出了一种称为Meta Bug检测的新方法,该方法比现有基于学习的错误探测器具有三个至关重要的优势:Bug-Type通用(即,能够捕获在培训期间完全没有观察到的错误类型),可以自我解释(即能够在没有任何外部可解释方法的情况下解释其自身的预测)和样本有效(即,比标准错误检测器所需的培训数据要少得多)。我们的广泛评估表明,我们的元错误检测器(MBD)有效地捕获了各种错误,包括NULL指针解除,阵列索引外部漏洞,文件句柄泄漏甚至是并发程序中的数据竞赛;在此过程中,MBD还大大优于几个值得注意的基线,包括Facebook推断,一种著名的静态分析工具和FICS,即最新的异常检测方法。
translated by 谷歌翻译
在本文中,我们解决了深入学习的软件漏洞自动修复问题。数据驱动漏洞修复的主要问题是已知确认漏洞的少数现有数据集仅由几千例组成。然而,培训深度学习模型通常需要数十万例的例子。在这项工作中,我们利用了错误修复任务和漏洞修复任务的直觉相关,并且可以传输来自错误修复的知识可以传输到修复漏洞。在机器学习界中,这种技术称为转移学习。在本文中,我们提出了一种修复名为Vreepair的安全漏洞的方法,该方法是基于转移学习。 vreepair首先在大型错误修复语料库上培训,然后在漏洞修复数据集上调整,这是一个较小的数量级。在我们的实验中,我们表明,仅在错误修复语料库上培训的模型可能已经修复了一些漏洞。然后,我们证明转移学习改善了修复易受攻击的C功能的能力。我们还表明,转移学习模型比具有去噪任务训练的模型更好,并在漏洞固定任务上进行微调。总而言之,本文表明,与在小型数据集上的学习相比,转移学习适用于修复C中的安全漏洞。
translated by 谷歌翻译
反向工程师受益于二进制中的标识符(例如函数名称)的存在,但通常将其删除以释放。训练机器学习模型自动预测功能名称是有希望的,但从根本上讲很难:与自然语言中的单词不同,大多数函数名称仅出现一次。在本文中,我们通过引入极端功能标签(XFL)来解决此问题,这是一种极端的多标签学习方法,可为二进制功能选择适当的标签。 XFL将函数名称分为代币,将每个功能视为具有自然语言标记文本的问题的信息标签。我们将二进制代码的语义与通过dexter进行标签,这是一种新颖的函数,将基于静态分析的特征与来自呼叫图的本地上下文和整个二进制的全局上下文相结合。我们证明,XFL/Dexter在Debian Project的10,047个二进制数据集上的功能标签上优于最新技术,获得了83.5%的精度。我们还研究了XFL与文献中的替代二进制嵌入的组合,并表明Dexter始终为这项任务做得最好。结果,我们证明了二进制函数标记可以通过多标签学习有效地措辞,并且二进制函数嵌入得益于包括明确的语义特征。
translated by 谷歌翻译
复杂的事件识别(CER)系统在过去二十年中变得流行,因为它们能够“立即”检测在实时事件流上的模式。然而,缺乏预测模式可能发生在例如由Cer发动机实际检测到这种发生之前的模式。我们提出了一项正式的框架,试图解决复杂事件预测(CEF)的问题。我们的框架结合了两个形式主义:a)用于编码复杂事件模式的符号自动机; b)预测后缀树,可以提供自动机构的行为的简洁概率描述。我们比较我们提出的方法,以防止最先进的方法,并在准确性和效率方面展示其优势。特别地,预测后缀树是可变的马尔可夫模型,可以通过仅记住足够的信息的过去序列来捕获流中的长期依赖性。我们的实验结果表明了能够捕获这种长期依赖性的准确性的益处。这是通过增加我们模型的顺序来实现的,以满足需要执行给定顺序的所有可能的过去序列的所有可能的过去序列的详尽枚举的全阶马尔可夫模型。我们还广泛讨论CEF解决方案如何最佳地评估其预测的质量。
translated by 谷歌翻译
行为树(BT)是一种在自主代理中(例如机器人或计算机游戏中的虚拟实体)之间在不同任务之间进行切换的方法。 BT是创建模块化和反应性的复杂系统的一种非常有效的方法。这些属性在许多应用中至关重要,这导致BT从计算机游戏编程到AI和机器人技术的许多分支。在本书中,我们将首先对BTS进行介绍,然后我们描述BTS与早期切换结构的关系,并且在许多情况下如何概括。然后,这些想法被用作一套高效且易于使用的设计原理的基础。安全性,鲁棒性和效率等属性对于自主系统很重要,我们描述了一套使用BTS的状态空间描述正式分析这些系统的工具。借助新的分析工具,我们可以对BTS如何推广早期方法的形式形式化。我们还显示了BTS在自动化计划和机器学习中的使用。最后,我们描述了一组扩展的工具,以捕获随机BT的行为,其中动作的结果由概率描述。这些工具可以计算成功概率和完成时间。
translated by 谷歌翻译
概率编程使代表概率模型作为程序变得容易。但是,建立单个模型只是概率建模的一步。概率建模的更广泛挑战在于理解和导航替代模型的空间。尽管它们的核心作用,但目前没有很好的方式来代表这些替代模型的空间。我们提出了概率编程的扩展,使每个程序都代表一个相互关联的概率模型网络。我们为这些多模型概率程序提供了正式的语义,用于模型网络操作的有效算法的集合以及在流行的概率编程语言STAN之上构建的示例实现。该模型网络表示形式开放了许多门,包括模型空间中的搜索和自动化,模型开发的跟踪和通信以及明确的建模者自由度,以减轻P-Hacking等问题。我们使用Stan实施来展示自动模型搜索和模型开发跟踪,并提出了更多可能的应用程序。
translated by 谷歌翻译
源代码的最先进的神经模型倾向于在代码的生成时进行评估,并且通常在长地平任务中的产生,例如整个方法体的产生。我们建议使用静态程序分析仪的弱监督来解决这一缺陷。我们的神经统计方法允许深入的生成模型来象征地计算它已经生成的代码中的静态分析工具,长距离语义关系。在培训期间,该模型观察这些关系,并学习生成条件上的程序。考虑到包含该方法的类的剩余部分,我们将我们的方法应用于生成整个Java方法的问题。我们的实验表明,该方法显着地优于最先进的变换器和模型,明确试图在制作程序中没有基本语义错误的程序以及在句法匹配地面真理方面来学习此任务的模型。
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 谷歌翻译
即使机器学习算法已经在数据科学中发挥了重要作用,但许多当前方法对输入数据提出了不现实的假设。由于不兼容的数据格式,或数据集中的异质,分层或完全缺少的数据片段,因此很难应用此类方法。作为解决方案,我们提出了一个用于样本表示,模型定义和培训的多功能,统一的框架,称为“ Hmill”。我们深入审查框架构建和扩展的机器学习的多个范围范式。从理论上讲,为HMILL的关键组件的设计合理,我们将通用近似定理的扩展显示到框架中实现的模型所实现的所有功能的集合。本文还包含有关我们实施中技术和绩效改进的详细讨论,该讨论将在MIT许可下发布供下载。该框架的主要资产是其灵活性,它可以通过相同的工具对不同的现实世界数据源进行建模。除了单独观察到每个对象的一组属性的标准设置外,我们解释了如何在框架中实现表示整个对象系统的图表中的消息推断。为了支持我们的主张,我们使用框架解决了网络安全域的三个不同问题。第一种用例涉及来自原始网络观察结果的IoT设备识别。在第二个问题中,我们研究了如何使用以有向图表示的操作系统的快照可以对恶意二进制文件进行分类。最后提供的示例是通过网络中实体之间建模域黑名单扩展的任务。在所有三个问题中,基于建议的框架的解决方案可实现与专业方法相当的性能。
translated by 谷歌翻译
归纳逻辑编程(ILP)是一种机器学习的形式。ILP的目标是诱导推广培训示例的假设(一组逻辑规则)。随着ILP转30,我们提供了对该领域的新介绍。我们介绍了必要的逻辑符号和主要学习环境;描述ILP系统的构建块;比较几个维度的几个系统;描述四个系统(Aleph,Tilde,Aspal和Metagol);突出关键应用领域;最后,总结了未来研究的当前限制和方向。
translated by 谷歌翻译
回答集编程(ASP)已成为一种流行的和相当复杂的声明问题解决方法。这是由于其具有吸引力的地址解决方案的工作流程,这是可以轻松解决问题解决的方法,即使对于计算机科学外的守护者而言。与此不同,底层技术的高度复杂性使得ASP专家越来越难以将想法付诸实践。有关解决此问题,本教程旨在使用户能够构建自己的基于ASP的系统。更确切地说,我们展示了ASP系统Clingo如何用于扩展ASP和实现定制的专用系统。为此,我们提出了两个替代方案。我们从传统的AI技术开始,并展示元编程如何用于扩展ASP。这是一种相当轻的方法,依赖于Clingo的reation特征来使用ASP本身表达新功能。与此不同,本教程的主要部分使用传统的编程(在Python中)来通过其应用程序编程接口操纵Clingo。这种方法允许改变和控制ASP的整个模型 - 地面解决工作流程。 COMENT of Clingo的新应用程序课程使我们能够通过自定义类似于Clingo中的进程来绘制Clingo的基础架构。例如,我们可能会互动到程序的抽象语法树,控制各种形式的多射击求解,并为外国推论设置理论传播者。另一种横截面结构,跨越元以及应用程序编程是Clingo的中间格式,即指定底层接地器和求解器之间的界面。我们通过示例和几个非琐碎的案例研究说明了本教程的前述概念和技术。
translated by 谷歌翻译
大规模的,预训练的语言模型几乎没有学习的方法是回答有关代码问题的有力方法,例如,如何完成给定的代码示例,甚至从头开始生成代码段。这些模型的成功提出了一个问题,它们是否可以作为构建广泛代码生成工具的基础。传统上,此类工具是为每个任务手动和单独构建的。取而代之的是,只需提供一些示例或对预期工具行为的自然语言描述,就可以从单个预训练的语言模型中获取不同的工具。本文研究了代码的最先进的,预先训练的代码模型,Codex可能会达到此目的。我们考虑通过一系列传统工具针对的三个代码操纵和代码生成任务:(i)代码突变; (ii)从自然语言文档中测试甲骨文的生成; (iii)测试案例生成。对于每个任务,我们将几杆学习与手动构建的工具进行比较。我们的结果表明,基于模型的工具补充(代码突变),在PAR上(测试Oracle生成),甚至超越了其各自的传统构建的工具(测试案例生成),同时施加了开发它们的努力。通过比较基于模型的工具的不同变体的有效性,我们提供了有关如何将适当输入(“提示”)设计到模型以及模型大小的影响的见解。例如,我们发现,提供对代码生成任务的小型自然语言描述是改善预测的一种简单方法。总体而言,我们得出的结论是,很少有语言模型令人惊讶地有效,但是还有更多的工作要做,例如探索更多样化的方式来促使和解决更多有关任务。
translated by 谷歌翻译
电子表格广泛用于桌面操作和演示。这些表的风格格式是演示和分析的重要属性。结果,流行的电子表格软件(例如Excel)支持基于数据依赖性规则的自动格式表。不幸的是,编写这些格式规则对于用户来说可能是具有挑战性的,因为这需要了解基础规则语言和数据逻辑。在本文中,我们提出了Cornet,这是一种神经符号系统,该系统解决了从格式化细胞的用户示例中自动学习此类格式规则的新问题。 Cornet从归纳计划的合成中汲取灵感,并根据半监督聚类和迭代决策树学习结合了符号规则,并与神经排名者一起产生条件格式的规则。为了激励和评估我们的方法,我们从超过40k真实电子​​表格的语料库中提取了表格的表格。使用这些数据,我们将短号与各种符号和神经基线进行了比较。我们的结果表明,与这些基线相比,Cornet可以在不同条件下更准确地学习规则。除了从用户示例中学习规则外,我们还提出了两个案例研究,以激发Cornet的其他用途:简化用户条件格式规则并恢复规则,即使用户可能手动格式化了其数据。
translated by 谷歌翻译
归因方法已成为基于输入功能的相关性来解释模型预测的流行方法。尽管功能重要性排名可以提供有关模型如何从原始输入中得出预测的见解,但它们并未对模型用于预测的关键特征使用明确定义。在本文中,我们提出了一种称为WHEACHA的新方法,用于解释代码模型的预测。尽管Wheacha采用追踪模型预测回到输入特征的相同机制,但它与所有现有归因方法的不同之处在于至关重要的方式。具体而言,WHEACHA将输入程序分为“小麦”(即,定义功能是模型预测其预测标签的原因)和其余的“ CHAFF”,以预测学习代码模型的任何预测。我们在工具中意识到WHEACHA,并使用它来解释四个突出的代码模型:Code2Vec,Seq-GNN,GGNN和Codebert。结果表明(1)Huoyan是有效的 - 平均以二十秒的速度服用以端到端方式计算输入程序的小麦(即包括模型预测时间); (2)所有模型用于预测输入程序的小麦均由简单的句法甚至词汇属性(即标识符名称)制成; (3)基于小麦,我们提出了一种新颖的方法,可以通过培训数据的镜头来解释代码模型的预测。
translated by 谷歌翻译
人类开发人员可以使用网络安全缺陷生产代码。可以新兴'智能'代码完成工具有助于修复这些缺点吗?在这项工作中,我们研究了对零拍摄漏洞修复的代码(如Openai的Codex和AI21的侏罗纪J-1)使用大型语言模型(如Openai的Codex和AI21的J-1)。我们调查设计方面的挑战,提示将Coax LLMS进入生成不安全代码的修复版本。由于许多方法来短语和句法 - 具有自然语言,这很困难。通过对四个商业,黑盒子,“现成的”典型的模型进行大规模研究,以及局部训练的模型,在合成,手工制作和现实世界的安全错误场景的混合中,我们的实验表明,LLMS可以共同修复100%的综合生成和手工制作的情景,以及58%的脆弱性,在真实的开源项目中的历史错误中选择。
translated by 谷歌翻译
The International Workshop on Reading Music Systems (WoRMS) is a workshop that tries to connect researchers who develop systems for reading music, such as in the field of Optical Music Recognition, with other researchers and practitioners that could benefit from such systems, like librarians or musicologists. The relevant topics of interest for the workshop include, but are not limited to: Music reading systems; Optical music recognition; Datasets and performance evaluation; Image processing on music scores; Writer identification; Authoring, editing, storing and presentation systems for music scores; Multi-modal systems; Novel input-methods for music to produce written music; Web-based Music Information Retrieval services; Applications and projects; Use-cases related to written music. These are the proceedings of the 3rd International Workshop on Reading Music Systems, held in Alicante on the 23rd of July 2021.
translated by 谷歌翻译