[论文解读] STRATA: Simple, Gradient-Free Attacks for Models of Code
STRATA 提出了一种针对代码神经模型的简单、无梯度攻击方法,通过利用训练数据中标记频率与学习到的标记嵌入 L2 范数之间的强相关性。通过将局部变量替换为高 L2 范数值的标记(无需梯度即可识别),STRATA 在代码2seq 模型上实现了最先进的对抗性成功率,计算成本极低,优于基于梯度的方法,并且在对抗鲁棒模型上依然有效。
Neural networks are well-known to be vulnerable to imperceptible perturbations in the input, called adversarial examples, that result in misclassification. Generating adversarial examples for source code poses an additional challenge compared to the domains of images and natural language, because source code perturbations must retain the functional meaning of the code. We identify a striking relationship between token frequency statistics and learned token embeddings: the L2 norm of learned token embeddings increases with the frequency of the token except for the highest-frequnecy tokens. We leverage this relationship to construct a simple and efficient gradient-free method for generating state-of-the-art adversarial examples on models of code. Our method empirically outperforms competing gradient-based methods with less information and less computational effort.
研究动机与目标
- 探究代码模型中标记频率与学习到的标记嵌入之间的统计关系是否可用于对抗性样本生成。
- 开发一种计算高效的无梯度攻击方法,无需模型梯度或大量搜索。
- 评估所提方法在最先进的代码摘要模型(如 code2seq)上的有效性。
- 测试该攻击在对抗性训练以抵御基于梯度的攻击的模型上的迁移能力和鲁棒性。
- 证明与频率相关的高 L2 范数值标记在变量替换攻击中更具有效性。
提出的方法
- 该方法在多个代码数据集上识别出训练数据中标记频率与对应学习到的标记嵌入 L2 范数之间的强相关性。
- 仅根据嵌入 L2 范数值选择用于局部变量的替换标记,优先选择高 L2 范数值标记以最大化对抗性影响。
- 该攻击以变量替换策略实现,将局部变量标识符替换为同一词汇表中的高 L2 范数值标记。
- 该方法无需梯度计算或迭代优化,可在仅使用 CPU 的系统上实现快速执行。
- 该方法在白盒和黑盒设置下均适用,利用频率-L2 范数关系生成高效的黑盒攻击。
- 该攻击在基于 Java-small、Java-medium、Java-large 和 Python150k 数据集训练的 code2seq 模型上进行了评估。
实验结果
研究问题
- RQ1代码训练数据中标记频率与学习到的标记嵌入 L2 范数之间是否存在统计显著关系?
- RQ2该关系是否可用于生成有效、无梯度的代码模型对抗性样本?
- RQ3所提出的 STRATA 攻击在性能上与基于梯度和基于搜索的对抗性攻击方法相比如何?
- RQ4STRATA 攻击在经过对抗性训练以抵御基于梯度攻击的模型上是否依然有效?
- RQ5该攻击是否可仅使用频率和嵌入信息,在黑盒设置下有效应用?
主要发现
- 标记频率与嵌入 L2 范数之间存在强非线性相关性:高频标记通常具有更高的 L2 范数,但极高频率的标记例外,其范数出现下降。
- STRATA 在 code2seq 上优于竞争的基于梯度的方法,以显著更低的计算开销实现了更高的对抗性成功率。
- 在 code2seq/java-large 模型上,STRATA 在测试集上实现了 38.7% 的成功率,优于基线方法,并表现出跨数据集的高迁移能力。
- 该方法在仅使用 CPU 的机器上仅需数秒即可生成对抗性样本,而同等的基于梯度的方法在同一硬件上则需数小时。
- 即使对基于梯度的攻击具有鲁棒性的模型,依然对 STRATA 攻击保持脆弱,其在 STRATA 生成的对抗性样本上的 F1 分数从 0.367 降至 0.240。
- 该攻击在定向设置下也极为有效:例如,在 code2seq/java-large 上针对 'tournament' 一词的攻击成功率达到 86.3%。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。