We integrate contrastive learning (CL) with adversarial learning to co-optimize the robustness and accuracy of code models. Different from existing works, we show that code obfuscation, a standard code transformation operation, provides novel means to generate complementary `views' of a code that enable us to achieve both robust and accurate code models. To the best of our knowledge, this is the first systematic study to explore and exploit the robustness and accuracy benefits of (multi-view) code obfuscations in code models. Specifically, we first adopt adversarial codes as robustness-promoting views in CL at the self-supervised pre-training phase. This yields improved robustness and transferability for downstream tasks. Next, at the supervised fine-tuning stage, we show that adversarial training with a proper temporally-staggered schedule of adversarial code generation can further improve robustness and accuracy of the pre-trained code model. Built on the above two modules, we develop CLAWSAT, a novel self-supervised learning (SSL) framework for code by integrating $\underline{\textrm{CL}}$ with $\underline{\textrm{a}}$dversarial vie$\underline{\textrm{w}}$s (CLAW) with $\underline{\textrm{s}}$taggered $\underline{\textrm{a}}$dversarial $\underline{\textrm{t}}$raining (SAT). On evaluating three downstream tasks across Python and Java, we show that CLAWSAT consistently yields the best robustness and accuracy ($\textit{e.g.}$ 11$\%$ in robustness and 6$\%$ in accuracy on the code summarization task in Python). We additionally demonstrate the effectiveness of adversarial learning in CLAW by analyzing the characteristics of the loss landscape and interpretability of the pre-trained models.
translated by 谷歌翻译
对比度学习(CL)可以通过在其顶部的线性分类器上学习更广泛的特征表示并实现下游任务的最先进的性能。然而,由于对抗性稳健性在图像分类中变得至关重要,但仍然不清楚CL是否能够为下游任务保留鲁棒性。主要挑战是,在自我监督的预押率+监督的FineTuning范式中,由于学习任务不匹配从预先追溯到Fineetuning,对抗性鲁棒性很容易被遗忘。我们称之为挑战“跨任务稳健性转移性”。为了解决上述问题,在本文中,我们通过稳健性增强的镜头重新审视并提前CL原理。我们展示了(1)对比视图的设计事项:图像的高频分量有利于提高模型鲁棒性; (2)使用伪监督刺激(例如,诉诸特征聚类)增强CL,有助于保持稳健性而不会忘记。配备了我们的新设计,我们提出了一种新的对抗对比预制框架的advcl。我们表明Advcl能够增强跨任务稳健性转移性,而不会损失模型精度和芬降效率。通过彻底的实验研究,我们展示了Advcl优于跨多个数据集(CiFar-10,CiFar-100和STL-10)和FineTuning方案的最先进的自我监督的自我监督学习方法(线性评估和满模型fineetuning)。
translated by 谷歌翻译
最近的工作通过从上下文重建令牌来了解源代码的上下文表示。对于诸如英语中汇总代码的下游语义理解任务,这些表示应该理想地捕获程序功能。但是,我们表明流行的基于重建的BERT模型对源代码编辑敏感,即使编辑保存语义。我们提出了僵局:一种学习代码功能的对比预训练任务,而不是形成。触发预先训练神经网络,以识别许多不等效的干扰者之间的程序的功能类似的变体。我们使用自动源到源编译器作为数据增强的形式来缩放可扩展这些变体。对比预训练将JavaScript摘要和打字类型推理准确性提高2%至13%。我们还提出了一个新的零拍摄JavaScript代码克隆检测数据集,显示施加均比更强大和语义有意义。就此而言,我们以39%的Auroc在普发的环境中以39%的AUROC倾斜,高达5%的自然代码。
translated by 谷歌翻译
最近,对抗性训练已被纳入自我监督的对比预训练中,以增强标签效率,并具有令人兴奋的对抗性鲁棒性。但是,鲁棒性是经过昂贵的对抗训练的代价。在本文中,我们表明了一个令人惊讶的事实,即对比的预训练与稳健性具有有趣而隐含的联系,并且在经过训练的代表中如此自然的鲁棒性使我们能够设计出一种强大的鲁棒算法,以防止对抗性攻击,Rush,将标准组合在一起。对比的预训练和随机平滑。它提高了标准准确性和强大的精度,并且与对抗训练相比,培训成本大大降低了。我们使用广泛的经验研究表明,拟议中的Rush在一阶攻击下的共同基准(CIFAR-10,CIFAR-100和STL-10)的大幅度优于对抗性训练的强大分类器。特别是,在$ \ ell _ {\ infty} $下 - 大小为8/255 PGD攻击CIFAR-10的标准扰动,我们使用RESNET-18作为骨架达到77.8%的型号达到77.8%稳健精度和87.9%的标准精度。与最先进的工作相比,我们的工作的鲁棒精度提高了15%以上,标准准确性略有提高。
translated by 谷歌翻译
随着预先训练模型的巨大成功,Pretrain-Then-Finetune范式已被广泛采用下游任务,以获得源代码的理解。但是,与昂贵的培训从头开始培训,如何将预先训练的模型从划痕进行有效地调整到新任务的训练模型尚未完全探索。在本文中,我们提出了一种桥接预先训练的模型和与代码相关任务的方法。我们利用语义保留的转换来丰富下游数据分集,并帮助预先接受的模型学习语义特征不变于这些语义上等效的转换。此外,我们介绍课程学习以易于努力的方式组织转换的数据,以微调现有的预先训练的模型。我们将我们的方法应用于一系列预先训练的型号,它们在源代码理解的任务中显着优于最先进的模型,例如算法分类,代码克隆检测和代码搜索。我们的实验甚至表明,在没有重量训练的代码数据上,自然语言预先训练的模型罗伯塔微调我们的轻质方法可以优于或竞争现有的代码,在上述任务中进行微调,如Codebert和Codebert和GraphCodebert。这一发现表明,代码预训练模型中仍有很大的改进空间。
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 谷歌翻译
自我监督的学习方法,如对比学习,在自然语言处理中非常重视。它使用对培训数据增强对具有良好表示能力的编码器构建分类任务。然而,在对比学习的学习成对的构建在NLP任务中更难。以前的作品生成单词级更改以形成对,但小变换可能会导致句子含义的显着变化作为自然语言的离散和稀疏性质。在本文中,对对抗的训练在NLP的嵌入空间中产生了挑战性和更难的学习对抗性示例作为学习对。使用对比学学习提高了对抗性培训的泛化能力,因为对比损失可以使样品分布均匀。同时,对抗性培训也提高了对比学习的稳健性。提出了两种小说框架,监督对比对抗学习(SCAS)和无监督的SCAS(USCAL),通过利用对比学习的对抗性培训来产生学习成对。利用基于标签的监督任务丢失,以产生对抗性示例,而无监督的任务会带来对比损失。为了验证所提出的框架的有效性,我们将其雇用到基于变换器的模型,用于自然语言理解,句子语义文本相似性和对抗学习任务。胶水基准任务的实验结果表明,我们的微调监督方法优于BERT $ _ {基础} $超过1.75 \%。我们还评估我们对语义文本相似性(STS)任务的无监督方法,并且我们的方法获得77.29 \%with bert $ _ {base} $。我们方法的稳健性在NLI任务的多个对抗性数据集下进行最先进的结果。
translated by 谷歌翻译
源代码的预训练的生成语言模型(例如PLBART,CODET5,SPT-CODE)在过去几年中对多个任务(包括代码生成和翻译)产生了强劲的结果。这些模型采用了不同的训练前目标,以自我监督的方式从非常大规模的语料库中学习代码构建的统计数据。预训练模型的成功很大程度上取决于这些预训练的目标。本文提出了一个新的预训练目标,即“归化”源代码,利用代码的双峰,双通道(正式和自然渠道)性质。与自然语言不同,代码的双峰,双通道的性质使我们能够大规模生成语义上等效的代码。我们介绍了六类的语义保存转换,以引入非自然的代码形式,然后强迫我们的模型制作开发人员编写的更自然的原创程序。学习在没有明确的手动监督的情况下,通过大型的开源代码来生成等效但更自然的代码,有助于模型学习摄入和生成代码。我们将模型在三个生成软件工程任务中微调:代码生成,代码翻译和代码改进,具有有限的人类策划标记数据并实现最先进的性能与CODET5。我们表明,我们的预训练模型在零射门和少数学习方面特别有竞争力,并且在学习代码属性(例如语法,数据流)方面更好。
translated by 谷歌翻译
尽管基于3D点云表示的基于自我监督的对比度学习模型最近取得了成功,但此类预训练模型的对抗性鲁棒性引起了人们的关注。对抗性对比学习(ACL)被认为是改善预训练模型的鲁棒性的有效方法。相比之下,投影仪被认为是在对比度预处理过程中删除不必要的特征信息的有效组成部分,并且大多数ACL作品还使用对比度损失,与预测的功能表示形式相比损失,在预处理中产生对抗性示例,而“未转移”的功能表征用于发电的对抗性输入。在推理期间。由于投影和“未投影”功能之间的分布差距,其模型受到限制,以获取下游任务的可靠特征表示。我们介绍了一种新方法,通过利用虚拟对抗性损失在对比度学习框架中使用“未重新注射”功能表示,以生成高质量的3D对抗示例,以进行对抗训练。我们介绍了强大的意识损失功能,以对抗自我监督对比度学习框架。此外,我们发现选择具有正常操作员(DON)操作员差异的高差异作为对抗性自学对比度学习的附加输入,可以显着提高预训练模型的对抗性鲁棒性。我们在下游任务上验证我们的方法,包括3D分类和使用多个数据集的3D分割。它在最先进的对抗性学习方法上获得了可比的鲁棒精度。
translated by 谷歌翻译
训练有素的机器学习模型,利用大量的开源软件数据,现在已经成为自动化许多软件工程任务的有趣方法。几个硒任务都受到这种方法,在过去的几年里,性能逐渐改善,具有更好的模型和培训方法。更多,更多样化,清洁,标记数据更好的培训;但构建高质量的数据集是耗时和挑战。增强清洁量和多样性的方法,标记数据通常具有广泛的适用性。对于某些语言(例如,Ruby)标记的数据不那么丰富;在其他(例如,JavaScript)中,可用数据可能更多地关注某些应用域,从而更加多样化。作为围绕此类数据瓶颈,我们提出了证据表明,不同语言(执行相同功能)的人写代码相当相似,特别是保留标识符命名模式;我们进一步提出了证据表明标识符是软件工程任务培训数据的一个非常重要的要素。我们利用这种相当偶然的现象来查找可用的多语言训练数据(跨不同语言)的证据可用于放大性能。我们研究这一点3个不同的任务:代码摘要,代码检索和功能命名。我们注意到,这种数据增强方法与不同的任务,语言和机器学习模型广泛兼容。
translated by 谷歌翻译
基于预先训练的语言模型(PRLMS)在源代码理解任务中取得的巨大成功,当前的文献研究要么进一步改善PRLM的性能(概括)或对对抗性攻击的鲁棒性。但是,他们必须在这两个方面之间的权衡方面妥协,而且它们都没有考虑以有效和实用的方式改善双方。为了填补这一空白,我们建议使用语义保护对抗代码嵌入(空间),以找到最坏的传播语义保留攻击,同时迫使模型在这些最坏情况下预测正确的标签。实验和分析表明,在提高PRLMS代码的性能的同时,空间可以保持强大的防御性攻击。
translated by 谷歌翻译
变量名称对于传达预期的程序行为至关重要。基于机器学习的程序分析方法使用变量名称表示广泛的任务,例如建议新的变量名称和错误检测。理想情况下,这些方法可以捕获句法相似性的名称之间的语义关系,例如,名称平均和均值的事实是相似的。不幸的是,以前的工作发现,即使是先前的最佳的表示方法主要是捕获相关性(是否有两个变量始终链接),而不是相似性(是否具有相同的含义)。我们提出了VarCLR,一种用于学习变量名称的语义表示的新方法,这些方法有效地捕获了这种更严格的意义上的可变相似性。我们观察到这个问题是对比学习的优秀契合,旨在最小化明确类似的输入之间的距离,同时最大化不同输入之间的距离。这需要标记的培训数据,因此我们构建了一种新颖的弱监督的变量重命名数据集,从GitHub编辑开采。我们表明VarCLR能够有效地应用BERT等复杂的通用语言模型,以变为变量名称表示,因此也是与变量名称相似性搜索或拼写校正等相关的下游任务。 varclr产生模型,显着越优于idbench的最先进的现有基准,明确地捕获可变相似度(与相关性不同)。最后,我们贡献了所有数据,代码和预先训练模型的版本,旨在为现有或未来程序分析中使用的可变表示提供的可变表示的替代品。
translated by 谷歌翻译
Pre-trained programming language (PL) models (such as CodeT5, CodeBERT, GraphCodeBERT, etc.,) have the potential to automate software engineering tasks involving code understanding and code generation. However, these models operate in the natural channel of code, i.e., they are primarily concerned with the human understanding of the code. They are not robust to changes in the input and thus, are potentially susceptible to adversarial attacks in the natural channel. We propose, CodeAttack, a simple yet effective black-box attack model that uses code structure to generate effective, efficient, and imperceptible adversarial code samples and demonstrates the vulnerabilities of the state-of-the-art PL models to code-specific adversarial attacks. We evaluate the transferability of CodeAttack on several code-code (translation and repair) and code-NL (summarization) tasks across different programming languages. CodeAttack outperforms state-of-the-art adversarial NLP attack models to achieve the best overall drop in performance while being more efficient, imperceptible, consistent, and fluent. The code can be found at https://github.com/reddy-lab-code-research/CodeAttack.
translated by 谷歌翻译
最近的自我监督方法在学习特征表示中取得了成功,这些特征表示可以与完全监督竞争,并且已被证明以几种方式有利于模型:例如改善模型的鲁棒性和分布外检测。在我们的论文中,我们进行了一个实证研究,以更准确地了解自我监督的学习 - 作为训练技术或反对派训练的一部分 - 影响模型鲁棒性至$ l_2 $和$ l _ {\ infty} $对抗扰动和自然形象腐败。自我监督确实可以改善模型稳健性,但事实证明魔鬼是细节。如果只有对逆势训练的串联增加自我监督损失,那么当用更小或与$ \ epsilon_ {rest} $的价值进行对抗的对手扰动评估时,可以看到模型的准确性提高。但是,如果一个人观察到$ \ epsilon_ {test} \ ge \ epsilon_ {train} $的准确性,则模型精度下降。事实上,监督损失的重量越大,性能下降越大,即损害模型的鲁棒性。我们确定自我监督可以添加到对抗的主要方式,并观察使用自我监督损失来优化网络参数,发现对抗性示例导致模型稳健性最强的改善,因为这可以被视为合奏对抗培训的形式。尽管与随机重量初始化相比,自我监督的预训练产生益处改善对抗性培训,但如果在对抗培训中,我们将在模型鲁棒性或准确性中观察到模型鲁棒性或准确性。
translated by 谷歌翻译
这项工作提出了一种新型的自我监督的预训练方法,以学习有效的表示,而没有在组织病理学医学图像上使用放大倍率的因素进行标签。其他最先进的工作主要集中在完全监督的学习方法上,这些学习方法严重依赖人类注释。但是,标记和未标记数据的稀缺性是组织病理学的长期挑战。当前,没有标签的表示学习仍未探索组织病理学领域。提出的方法是放大事先的对比相似性(MPC),可以通过利用放大倍率,电感转移和减少人类先验的宽度乳腺癌数据集中的无标签来进行自我监督的学习。当仅20%的标签用于微调和表现以前的工作中,在完全监督的学习环境中,该方法与恶性分类的最新学习相匹配。它提出了一个假设,并提供了经验证据来支持,从而减少人类优先导致自学​​中有效表示学习。这项工作的实施可在github-https://github.com/prakashchhipa/magnification-prior-self-supervised-method上在线获得。
translated by 谷歌翻译
在本文中,我们引入了一个新型的神经网络训练框架,该框架增加了模型对对抗性攻击的对抗性鲁棒性,同时通过将对比度学习(CL)与对抗性训练(AT)结合在一起,以保持高清洁精度。我们建议通过学习在数据增强和对抗性扰动下保持一致的特征表示来提高对对抗性攻击的模型鲁棒性。我们利用对比的学习来通过将对抗性示例视为另一个积极的例子来提高对抗性的鲁棒性,并旨在最大化数据样本的随机增强及其对抗性示例之间的相似性,同时不断更新分类头,以避免在认知解离之间分类头和嵌入空间。这种分离是由于CL将网络更新到嵌入空间的事实引起的,同时冻结用于生成新的积极对抗示例的分类头。我们在CIFAR-10数据集上验证了我们的方法,具有对抗性特征(CLAF)的对比度学习,在该数据集上,它在替代监督和自我监督的对抗学习方法上均优于强大的精度和清洁精度。
translated by 谷歌翻译
自我监督的学习(SSL)通过大量未标记的数据的先知,在各种医学成像任务上取得了出色的性能。但是,对于特定的下游任务,仍然缺乏有关如何选择合适的借口任务和实现细节的指令书。在这项工作中,我们首先回顾了医学成像分析领域中自我监督方法的最新应用。然后,我们进行了广泛的实验,以探索SSL中的四个重要问题用于医学成像,包括(1)自我监督预处理对不平衡数据集的影响,(2)网络体系结构,(3)上游任务对下游任务和下游任务和下游任务的适用性(4)SSL和常用政策用于深度学习的堆叠效果,包括数据重新采样和增强。根据实验结果,提出了潜在的指南,以在医学成像中进行自我监督预处理。最后,我们讨论未来的研究方向并提出问题,以了解新的SSL方法和范式时要注意。
translated by 谷歌翻译
预训练在机器学习的不同领域表现出成功,例如计算机视觉,自然语言处理(NLP)和医学成像。但是,尚未完全探索用于临床数据分析。记录了大量的临床记录,但是对于在小型医院收集的数据或处理罕见疾病的数据仍可能稀缺数据和标签。在这种情况下,对较大的未标记临床数据进行预训练可以提高性能。在本文中,我们提出了专为异质的多模式临床数据设计的新型无监督的预训练技术,用于通过蒙版语言建模(MLM)启发的患者预测,通过利用对人群图的深度学习来启发。为此,我们进一步提出了一个基于图形转换器的网络,该网络旨在处理异质临床数据。通过将基于掩盖的预训练与基于变压器的网络相结合,我们将基于掩盖的其他域中训练的成功转化为异质临床数据。我们使用三个医学数据集Tadpole,Mimic-III和一个败血症预测数据集,在自我监督和转移学习设置中展示了我们的预训练方法的好处。我们发现,我们提出的培训方法有助于对患者和人群水平的数据进行建模,并提高所有数据集中不同微调任务的性能。
translated by 谷歌翻译
Robustness evaluation against adversarial examples has become increasingly important to unveil the trustworthiness of the prevailing deep models in natural language processing (NLP). However, in contrast to the computer vision domain where the first-order projected gradient descent (PGD) is used as the benchmark approach to generate adversarial examples for robustness evaluation, there lacks a principled first-order gradient-based robustness evaluation framework in NLP. The emerging optimization challenges lie in 1) the discrete nature of textual inputs together with the strong coupling between the perturbation location and the actual content, and 2) the additional constraint that the perturbed text should be fluent and achieve a low perplexity under a language model. These challenges make the development of PGD-like NLP attacks difficult. To bridge the gap, we propose TextGrad, a new attack generator using gradient-driven optimization, supporting high-accuracy and high-quality assessment of adversarial robustness in NLP. Specifically, we address the aforementioned challenges in a unified optimization framework. And we develop an effective convex relaxation method to co-optimize the continuously-relaxed site selection and perturbation variables and leverage an effective sampling method to establish an accurate mapping from the continuous optimization variables to the discrete textual perturbations. Moreover, as a first-order attack generation method, TextGrad can be baked into adversarial training to further improve the robustness of NLP models. Extensive experiments are provided to demonstrate the effectiveness of TextGrad not only in attack generation for robustness evaluation but also in adversarial defense.
translated by 谷歌翻译
对比自我监督学习(CSL)已设法匹配或超过图像和视频分类中监督学习的表现。但是,仍然未知两个学习范式引起的表示的性质是否相似。我们在对抗性鲁棒性的角度下对此进行了研究。我们对该问题的分析治疗揭示了CSL对监督学习的内在更高灵敏度。它将数据表示形式在CSL表示空间中的单位过球上的统一分布是这种现象的关键因素。我们确定这会增加模型对输入扰动的敏感性,而在培训数据中存在假阴性的情况下。我们的发现得到了对对抗性扰动和其他输入损坏的图像和视频分类的广泛实验的支持。在洞察力的基础上,我们制定了简单但有效地通过CSL培训改善模型鲁棒性的策略。我们证明,对抗攻击的CSL及其受监督的对手之间的性能差距最高可下降68%。最后,我们通过将我们的发现纳入对抗性的自我监督学习中,为强大的CSL范式做出了贡献。我们证明,在该域中的两种不同的最新方法中,平均增益约为5%。
translated by 谷歌翻译