在过去的几年中,深度学习(DL)一直在不断扩大其应用程序,并成为大型法规时代大规模源代码分析的推动力。由于意外的准确性降解,测试集与训练集不同的分布与训练集不同的分布与训练集不同。尽管最近在计算机视觉和自然语言过程等领域取得了分配转移基准测试的最新进展。对于源代码任务的分配转移分析和基准测试,进展有限,由于其数量和支持几乎所有工业部门的基础,都有很大的需求。为了填补这一空白,本文启动了提出代码,即用于源代码学习的分销基准数据集。具体而言,代码支持2种编程语言(即Java和Python)和5种代码分发偏移(即任务,程序员,时间戳记,代币和CST)。据我们所知,我们是第一个定义基于代码表示的分布变化的人。在实验中,我们首先评估现有分布探测器的有效性以及分配移位定义的合理性,然后测量流行代码学习模型(例如Codebert)对分类任务的模型概括。结果表明,1)仅基于SoftMax得分的OOD检测器在代码上表现良好,2)分配转移会导致所有代码分类模型中的准确性降解,3)基于表示的分布转移对模型的影响比其他模型具有更高的影响,并且4)预训练的模型对分布变化更具抵抗力。我们公开提供代码,从而实现了有关代码学习模型质量评估的后续研究。
translated by 谷歌翻译
在编程中,学习代码表示有各种应用程序,包括代码分类,代码搜索,注释生成,错误预测等。已经提出了在令牌,语法树,依赖图,代码导航路径或其变体组合方面的各种代码表示,但是,现有的vanilla学习技术具有鲁棒性的主要限制,即,型号很容易当输入以微妙的方式改变输入时,要进行错误的预测。为了增强稳健性,现有方法专注于识别对抗性样本,而不是在落在给定分布之外的有效样品上,我们将其称为分配(OOD)样本。识别出这样的ood样本是本文研究的新问题。为此,我们建议首先使用分发的样本进行in =分发数据集,使得当培训在一起时,它们将增强模型的鲁棒性。我们建议使用能量有界学习的目标函数来将更高的分数分配给分布式样本和较低的分数,以便将这种分布式样品纳入源的培训过程中代码模型。在检测和逆势样本检测方面,我们的评估结果表明,现有源代码模型的稳健性更加准确,在识别ood数据时,同时在同时对对抗性攻击更具抵抗力。此外,所提出的能量有限评分优于大幅的余量,包括Softmax置信度评分,Mahalanobis评分和Odin。
translated by 谷歌翻译
尽管对检测分配(OOD)示例的重要性一致,但就OOD示例的正式定义几乎没有共识,以及如何最好地检测到它们。我们将这些示例分类为它们是否表现出背景换档或语义移位,并发现ood检测,模型校准和密度估计(文本语言建模)的两个主要方法,对这些类型的ood数据具有不同的行为。在14对分布和ood英语自然语言理解数据集中,我们发现密度估计方法一致地在背景移位设置中展开校准方法,同时在语义移位设置中执行更糟。此外,我们发现两种方法通常都无法检测到挑战数据中的示例,突出显示当前方法的弱点。由于没有单个方法在所有设置上都效果很好,因此在评估不同的检测方法时,我们的结果呼叫了OOD示例的明确定义。
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 谷歌翻译
由于其在多个工业应用领域的竞争性能,深度学习在我们的日常生活中起着越来越重要的作用。作为基于DL的系统的核心,深度神经网络会自动从精心收集和有组织的培训数据中学习知识,以获得预测看不见数据的标签的能力。与需要全面测试的传统软件系统类似,还需要仔细评估DNN,以确保受过训练的模型的质量满足需求。实际上,评估行业中DNN质量的事实上的标准是检查其在收集的标记测试数据集中的性能(准确性)。但是,准备这样的标记数据通常不容易部分,部分原因是标签工作巨大,即数据标记是劳动密集型的,尤其是每天有大量新的新传入的未标记数据。最近的研究表明,DNN的测试选择是一个有希望的方向,可以通过选择最小的代表性数据来标记并使用这些数据来评估模型来解决此问题。但是,它仍然需要人类的努力,不能自动。在本文中,我们提出了一种名为Aries的新技术,可以使用原始测试数据获得的信息估算新未标记数据的DNN的性能。我们技术背后的关键见解是,该模型在与决策边界具有相似距离的数据上应具有相似的预测准确性。我们对13种数据转换方法的技术进行了大规模评估。结果表明,我们技术的有用性是,白羊座的估计准确性仅为0.03%-2.60%(平均0.61%),从真实的准确性中差。此外,在大多数(128个)情况下,白羊座还优于最先进的选择标记方法。
translated by 谷歌翻译
随着预先训练模型的巨大成功,Pretrain-Then-Finetune范式已被广泛采用下游任务,以获得源代码的理解。但是,与昂贵的培训从头开始培训,如何将预先训练的模型从划痕进行有效地调整到新任务的训练模型尚未完全探索。在本文中,我们提出了一种桥接预先训练的模型和与代码相关任务的方法。我们利用语义保留的转换来丰富下游数据分集,并帮助预先接受的模型学习语义特征不变于这些语义上等效的转换。此外,我们介绍课程学习以易于努力的方式组织转换的数据,以微调现有的预先训练的模型。我们将我们的方法应用于一系列预先训练的型号,它们在源代码理解的任务中显着优于最先进的模型,例如算法分类,代码克隆检测和代码搜索。我们的实验甚至表明,在没有重量训练的代码数据上,自然语言预先训练的模型罗伯塔微调我们的轻质方法可以优于或竞争现有的代码,在上述任务中进行微调,如Codebert和Codebert和GraphCodebert。这一发现表明,代码预训练模型中仍有很大的改进空间。
translated by 谷歌翻译
我们提出了Pangu-Coder,这是一种仅预读的解码器语言模型,该模型采用pangu-alpha架构进行文本到代码生成,即给定自然语言问题描述的编程语言解决方案的合成。我们使用两阶段策略训练Pangu-Coder:第一阶段采用因果语言建模(CLM)来预先培训原始编程语言数据,而第二阶段则使用因果语言建模和掩盖语言建模(MLM)的组合培训目标,专注于文本到代码生成的下游任务,并培训松散的自然语言程序定义和代码功能。最后,我们讨论了pangu-coder-ft,该pander the是通过竞争性编程问题和代码与持续集成测试的结合进行了微调的。我们评估了pangu-coder,重点是它是否生成功能上正确的程序,并证明它在参加较小的上下文窗口和较少的数据培训的同时,它比诸如Codex之类的类似大小的模型(例如Codex)实现等效性或更好的性能。
translated by 谷歌翻译
深层神经网络(DNN)越来越多地用于软件工程和代码智能任务。这些是强大的工具,能够通过数百万参数从大型数据集中学习高度概括的模式。同时,它们的大容量可以使他们容易记住数据点。最近的工作表明,当训练数据集嘈杂,涉及许多模棱两可或可疑的样本时,记忆风险特别强烈表现出来,而记忆是唯一的追索权。本文的目的是评估和比较神经代码智能模型中的记忆和概括程度。它旨在提供有关记忆如何影响神经模型在代码智能系统中的学习行为的见解。为了观察模型中的记忆程度,我们为原始训练数据集增加了随机噪声,并使用各种指标来量化噪声对训练和测试各个方面的影响。我们根据Java,Python和Ruby Codebase评估了几种最先进的神经代码智能模型和基准。我们的结果突出了重要的风险:数百万可训练的参数允许神经网络记住任何包括嘈杂数据,并提供错误的概括感。我们观察到所有模型都表现出某些形式的记忆。在大多数代码智能任务中,这可能会很麻烦,因为它们依赖于相当容易发生噪声和重复性数据源,例如GitHub的代码。据我们所知,我们提供了第一个研究,以量化软件工程和代码智能系统领域的记忆效应。这项工作提高了人们的意识,并为训练神经模型的重要问题提供了新的见解,这些问题通常被软件工程研究人员忽略。
translated by 谷歌翻译
准确地检测出具有不同语义和协变量转移相对于分布的数据(ID)数据的分布外(OOD)数据对于部署安全可靠的模型至关重要。当处理高度结果应用(例如医学成像,自动驾驶汽车等)时,情况尤其如此。目的是设计一个可以接受ID数据有意义变化的检测器,同时还拒绝了OOD制度的示例。在实践中,可以通过使用适当的评分函数(例如能量)来实现一致性来实现此双重目标,并校准检测器以拒绝一组策划的OOD数据(称为离群曝光或不久的OE)。尽管OE方法被广泛采用,但由于现实世界情景的不可预测性,组装代表性的OOD数据集既昂贵又具有挑战性,因此最新设计了无OE探测器的趋势。在本文中,我们做出了一个令人惊讶的发现,即控制对ID变化的概括和暴露于不同(合成)异常值的示例对于同时改善语义和模态转移检测至关重要。与现有方法相反,我们的方法样本在潜在空间中嵌入式体系,并通过负数据扩展构建异常示例。通过一项关于医学成像基准(MedMnist,ISIC2019和NCT)的严格实证研究,我们在语义和模态转移下的现有无OE,OOD检测方法上表现出显着的性能增长(AUROC中的15美元\%-35 \%$)。
translated by 谷歌翻译
As more and more conversational and translation systems are deployed in production, it is essential to implement and to develop effective control mechanisms guaranteeing their proper functioning and security. An essential component to ensure safe system behavior is out-of-distribution (OOD) detection, which aims at detecting whether an input sample is statistically far from the training distribution. Although OOD detection is a widely covered topic in classification tasks, it has received much less attention in text generation. This paper addresses the problem of OOD detection for machine translation and dialog generation from an operational perspective. Our contributions include: (i) RAINPROOF a Relative informAItioN Projection ODD detection framework; and (ii) a more operational evaluation setting for OOD detection. Surprisingly, we find that OOD detection is not necessarily aligned with task-specific measures. The OOD detector may filter out samples that are well processed by the model and keep samples that are not, leading to weaker performance. Our results show that RAINPROOF breaks this curse and achieve good results in OOD detection while increasing performance.
translated by 谷歌翻译
源代码存储库由大型代码库组成,通常包含容易发生的程序。软件的复杂性日益增加导致时间和识别这些缺陷的时间和成本急剧上升。存在各种方法可以自动生成错误代码的修复程序。但是,由于特定错误的可能解决方案的组合空间很大,因此没有很多工具和数据集可以有效地评估生成的代码。在这项工作中,我们介绍了FixeVal,这是一个基准,其中包括竞争性编程问题及其各自修复程序的基准。我们引入了丰富的测试套件,以评估和评估模型生成程序修复的正确性。我们将两种在编程语言上鉴定的变压器语言模型视为我们的基准,并使用基于匹配和基于执行的评估指标对其进行比较。我们的实验表明,基于匹配的指标不能准确反映模型生成的程序修复,而基于执行的方法通过专门为该解决方案设计的所有情况和场景评估程序。因此,我们认为FixeVal提供了朝着实际自动错误修复和模型生成的代码评估的步骤。
translated by 谷歌翻译
Automated Program Repair (APR) is defined as the process of fixing a bug/defect in the source code, by an automated tool. APR tools have recently experienced promising results by leveraging state-of-the-art Neural Language Processing (NLP) techniques. APR tools such as TFix and CodeXGLUE combine text-to-text transformers with software-specific techniques are outperforming alternatives, these days. However, in most APR studies the train and test sets are chosen from the same set of projects. In reality, however, APR models are meant to be generalizable to new and different projects. Therefore, there is a potential threat that reported APR models with high effectiveness perform poorly when the characteristics of the new project or its bugs are different than the training set's(Domain Shift). In this study, we first define and measure the domain shift problem in automated program repair. Then, we then propose a domain adaptation framework that can adapt an APR model for a given target project. We conduct an empirical study with three domain adaptation methods FullFineTuning, TuningWithLightWeightAdapterLayers, and CurriculumLearning using two state-of-the-art domain adaptation tools (TFix and CodeXGLUE) and two APR models on 611 bugs from 19 projects. The results show that our proposed framework can improve the effectiveness of TFix by 13.05% and CodeXGLUE by 23.4%. Another contribution of this study is the proposal of a data synthesis method to address the lack of labelled data in APR. We leverage transformers to create a bug generator model. We use the generated synthetic data to domain adapt TFix and CodeXGLUE on the projects with no data (Zero-shot learning), which results in an average improvement of 5.76% and 24.42% for TFix and CodeXGLUE, respectively.
translated by 谷歌翻译
分布(OOD)检测对于确保机器学习系统的可靠性和安全性至关重要。例如,在自动驾驶中,我们希望驾驶系统在发现在训练时间中从未见过的异常​​场景或对象时,发出警报并将控件移交给人类,并且无法做出安全的决定。该术语《 OOD检测》于2017年首次出现,此后引起了研究界的越来越多的关注,从而导致了大量开发的方法,从基于分类到基于密度到基于距离的方法。同时,其他几个问题,包括异常检测(AD),新颖性检测(ND),开放式识别(OSR)和离群检测(OD)(OD),在动机和方法方面与OOD检测密切相关。尽管有共同的目标,但这些主题是孤立发展的,它们在定义和问题设定方面的细微差异通常会使读者和从业者感到困惑。在这项调查中,我们首先提出一个称为广义OOD检测的统一框架,该框架涵盖了上述五个问题,即AD,ND,OSR,OOD检测和OD。在我们的框架下,这五个问题可以看作是特殊情况或子任务,并且更容易区分。然后,我们通过总结了他们最近的技术发展来审查这五个领域中的每一个,特别关注OOD检测方法。我们以公开挑战和潜在的研究方向结束了这项调查。
translated by 谷歌翻译
在过去的几年中,关于分类,检测和分割问题的3D学习领域取得了重大进展。现有的绝大多数研究都集中在规范的封闭式条件上,忽略了现实世界的内在开放性。这限制了需要管理新颖和未知信号的自主系统的能力。在这种情况下,利用3D数据可以是有价值的资产,因为它传达了有关感应物体和场景几何形状的丰富信息。本文提供了关于开放式3D学习的首次广泛研究。我们介绍了一种新颖的测试床,其设置在类别语义转移方面的难度增加,并且涵盖了内域(合成之间)和跨域(合成对真实)场景。此外,我们研究了相关的分布情况,并开放了2D文献,以了解其最新方法是否以及如何在3D数据上有效。我们广泛的基准测试在同一连贯的图片中定位了几种算法,从而揭示了它们的优势和局限性。我们的分析结果可能是未来量身定制的开放式3D模型的可靠立足点。
translated by 谷歌翻译
代码克隆是实现类似功能的代码段对。克隆检测是自动源代码理解的基本分支,在重构建议,窃检测和代码摘要中具有许多应用程序。克隆检测的一个特别有趣的案例是检测语义克隆,即具有相同功能但实现方面有显着差异的代码段。检测语义克隆的一种有希望的方法是对比度学习(CL),这是一种在计算机视觉中流行的机器学习范式,但尚未用于代码处理。我们的工作旨在评估最受欢迎的CL算法以及两个任务上的三个源代码表示形式。第一个任务是代码克隆检测,我们在包含104个算法的实现的POJ-104数据集上进行了评估。第二个任务是窃检测。为了评估此任务上的模型,我们介绍了CodeTransFormator,这是用于转换源代码的工具。我们使用它来创建一个基于竞争性编程解决方案模仿窃代码的数据集。我们为这两项任务培训了九个模型,并将其与现有的六种方法进行了比较,包括传统工具和现代培训的神经模型。我们评估的结果表明,提议的模型在每个任务中都具有多样性,但是基于图的模型的性能通常高于其他模型。在CL算法中,SIMCLR和SWAV带来更好的结果,而MoCo是最强大的方法。我们的代码和训练有素的模型可在https://doi.org/10.5281/zenodo.6360627,https://doi.org/10.5281/zenodo.5596345获得。
translated by 谷歌翻译
由于其实际重要性,在提高神经网络安全部署方面的实际重要性,最近经济分配(OOD)检测最近受到了很大的关注。其中一个主要挑战是模型往往会对OOD数据产生高度自信的预测,这在ood检测中破坏了驾驶原理,即该模型应该仅对分布式样品充满信心。在这项工作中,我们提出了反应 - 一种简单有效的技术,用于减少对数据数据的模型过度限制。我们的方法是通过关于神经网络内部激活的新型分析,其为OOD分布显示出高度独特的签名模式。我们的方法可以有效地拓展到不同的网络架构和不同的OOD检测分数。我们经验证明,反应在全面的基准数据集套件上实现了竞争检测性能,并为我们的方法进行了理论解释。与以前的最佳方法相比,在ImageNet基准测试中,反应将假阳性率(FPR95)降低25.05%。
translated by 谷歌翻译
软件工程(ML4SE)的机器学习是一个积极发展的研究领域,专注于帮助程序员工作的方法。为了在实践中应用开发的方法,他们需要实现合理的质量,以帮助而不是分散开发人员的注意力。尽管开发新方法来代码表示和数据收集可以提高模型的整体质量,但它没有考虑到我们可以从手头项目中获得的信息。在这项工作中,我们研究了如果我们针对特定项目,则如何提高模型的质量。我们开发一个框架来评估质量改进,模型可以在特定项目上的方法名称预测任务进行微调后获得。我们评估了三种不同复杂性的模型,并在三个设置中进行了比较它们的质量:在大型Java项目的大型数据集上进行培训,进一步对特定项目的数据进行了微调,并从头开始训练了此数据。我们表明,每项项目的微调可以极大地提高模型的质量,因为它们捕获了项目的领域和命名约定。我们开放用于数据收集的工具以及运行实验的代码:https://zenodo.org/record/6040745。
translated by 谷歌翻译
机器学习的最新进展显着改善了对源代码数据的理解,并在许多下游任务上取得了良好的表现。像GitHub这样的开源存储库使用丰富的未标记代码数据启用此过程。但是,缺乏高质量标记的数据在很大程度上阻碍了几个相关任务的进度,例如程序翻译,摘要,合成和代码搜索。本文介绍了XLCOST,跨语言代码摘要数据集,这是一种用于跨语言代码智能的新基准数据集。我们的数据集包含来自8种语言(7种常用编程语言和英语)的细粒并行数据,并支持10个跨语性代码任务。据我们所知,就规模和语言数量而言,它是源代码的最大并行数据集。我们还为每个任务提供了几种最先进的基线模型的性能。我们认为,这个新数据集可能是研究界的宝贵资产,并促进了跨语法代码智能的新方法的开发和验证。
translated by 谷歌翻译
人工智能的最新趋势是将验证的模型用于语言和视觉任务,这些模型已经实现了非凡的表现,但也令人困惑。因此,以各种方式探索这些模型的能力对该领域至关重要。在本文中,我们探讨了模型的可靠性,在其中我们将可靠的模型定义为一个不仅可以实现强大的预测性能,而且在许多涉及不确定性(例如选择性预测,开放式设置识别)的决策任务上,在许多决策任务上表现出色,而且表现良好。强大的概括(例如,准确性和适当的评分规则,例如在分布数据集中和分发数据集上的对数可能性)和适应性(例如,主动学习,几乎没有射击不确定性)。我们设计了40个数据集的10种任务类型,以评估视觉和语言域上可靠性的不同方面。为了提高可靠性,我们分别开发了VIT-PLEX和T5-PLEX,分别针对视觉和语言方式扩展了大型模型。 PLEX极大地改善了跨可靠性任务的最先进,并简化了传统协议,因为它可以改善开箱即用的性能,并且不需要设计分数或为每个任务调整模型。我们演示了高达1B参数的模型尺寸的缩放效果,并预处理数据集大小最多4B示例。我们还展示了PLEX在具有挑战性的任务上的功能,包括零射门的开放式识别,主动学习和对话语言理解中的不确定性。
translated by 谷歌翻译
在本文中,我们解决了深入学习的软件漏洞自动修复问题。数据驱动漏洞修复的主要问题是已知确认漏洞的少数现有数据集仅由几千例组成。然而,培训深度学习模型通常需要数十万例的例子。在这项工作中,我们利用了错误修复任务和漏洞修复任务的直觉相关,并且可以传输来自错误修复的知识可以传输到修复漏洞。在机器学习界中,这种技术称为转移学习。在本文中,我们提出了一种修复名为Vreepair的安全漏洞的方法,该方法是基于转移学习。 vreepair首先在大型错误修复语料库上培训,然后在漏洞修复数据集上调整,这是一个较小的数量级。在我们的实验中,我们表明,仅在错误修复语料库上培训的模型可能已经修复了一些漏洞。然后,我们证明转移学习改善了修复易受攻击的C功能的能力。我们还表明,转移学习模型比具有去噪任务训练的模型更好,并在漏洞固定任务上进行微调。总而言之,本文表明,与在小型数据集上的学习相比,转移学习适用于修复C中的安全漏洞。
translated by 谷歌翻译