Skip to main content
QUICK REVIEW

[论文解读] Semantic Robustness of Models of Source Code

Goutham Ramakrishnan, Jordan Henkel|arXiv (Cornell University)|Feb 7, 2020
Adversarial Robustness in Machine Learning被引用 16
一句话总结

本文评估了神经代码模型(特别是 seq2seq 和 code2seq 架构)在 Java 和 Python 代码数据集上的语义鲁棒性,测量其在语法和语义扰动下的表现。研究发现,与 seq2seq 模型相比,基于 code2seq 训练的模型在结构和语义变化下表现出显著更高的鲁棒性,扰动下 F1 分数最高提升达 30%。

ABSTRACT

Deep neural networks are vulnerable to adversarial examples - small input perturbations that result in incorrect predictions. We study this problem for models of source code, where we want the network to be robust to source-code modifications that preserve code functionality. (1) We define a powerful adversary that can employ sequences of parametric, semantics-preserving program transformations; (2) we show how to perform adversarial training to learn models robust to such adversaries; (3) we conduct an evaluation on different languages and architectures, demonstrating significant quantitative gains in robustness.

研究动机与目标

  • 评估神经代码生成模型在源代码语法和语义扰动下的鲁棒性。
  • 在受控扰动下比较 seq2seq 和 code2seq 架构的性能表现。
  • 评估在结构变化下,基于 code2seq 训练的模型是否能保持更高的语义保真度。
  • 识别模型架构是否会影响其对常见代码变换(如重命名或重排序)的抗扰能力。

提出的方法

  • 在 Java 和 Python 代码数据集(c2s/java-small, csn/java, csn/python)上训练 seq2seq 和 code2seq 模型。
  • 应用变量重命名、语句重排和控制流变化等扰动,以测试语义鲁棒性。
  • 通过原始代码和扰动后代码输入下的 F1 分数来测量模型性能。
  • 使用真实世界扰动(Q1_R, Q5_R)和生成扰动(Q1_G, Q5_G)评估鲁棒性。
  • 采用标准的序列到序列和基于 code2vec 的架构,以隔离架构影响。
  • 报告多个指标的结果:F1 (seq2seq)、F1 (code2seq) 和归一化性能(Nor)

实验结果

研究问题

  • RQ1seq2seq 和 code2seq 模型在面对语法和语义代码扰动时,其鲁棒性有何差异?
  • RQ2变量重命名和语句重排对不同架构模型性能的影响如何?
  • RQ3在扰动下,code2seq 模型是否相比 seq2seq 模型保持更高的 F1 分数?
  • RQ4代码表示的选择(如 code2vec)如何影响对结构变化的鲁棒性?
  • RQ5在真实世界扰动与生成扰动下,模型性能是否存在显著差距?

主要发现

  • 在语义扰动下,code2seq 模型的 F1 分数最高比 seq2seq 模型高出 30%,表明其鲁棒性更优。
  • code2seq 架构在所有扰动类型下,对 Java 和 Python 数据集均表现出一致的性能提升。
  • 在 Q1_R、Q5_R、Q1_G 和 Q5_G 扰动设置下,基于 code2seq 训练的模型表现出更高的归一化鲁棒性(Nor)。
  • 在 csn/python 上,code2seq 的 F1 分数在重排序和重命名下保持稳定,而 seq2seq 模型的性能显著下降。
  • 在生成扰动(Q1_G, Q5_G)下,鲁棒性提升最为显著,code2seq 比 seq2seq 的 F1 分数高出超过 20 分。
  • 本研究证实,架构选择——尤其是使用 code2vec 表示——能显著提升代码模型的语义鲁棒性。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。