date: 星期五, 09-12-25, 10:46 上午
updated: 星期六, 09-13-25, 9:21 上午
用于增强源代码模型鲁棒性的因果学习框架
摘要
问题背景
深度学习(DL)模型对于许多软件工程任务都有用。但是,这些模型容易受到 #对抗性攻击 的影响 ,部分原因是它们学习了虚假特征,这些特征会在这些特征和模型预测之间产生虚假的相关性。
研究动机
解决方法
在本文中,我们通过一种称为Causalcode的新颖 #因果学习 框架解决了这个问题 ,该框架利用因果推理原理来减轻虚假的相关性。在高水平上,因果关系可以表征如下:
(i)它使用因果数据增强来生成干预示例来破坏虚假的相关性;
(ii)它利用正则化学习学习不变的表示,偏爱因果特征而不是虚假特征;
(iii)它可以增强基于源代码的软件工程任务的多个DL模型的鲁棒性,因为它对任务和模型都是不可知的。
[[4 The CausalCode Framework]]
实验设计
- 数据集:使用了四个公开数据集,包括 POJ-104、CodeChef、CodeTrans 和 Bugs2fixs,涵盖了函数分类、缺陷检测、代码翻译和代码修复等任务。
- 模型:选择了 CodeBERT 和 GraphCodeBERT 两种预训练模型,并在代码生成任务中额外测试了 StarCoder2。
- 攻击方法:评估了模型在随机扰动攻击和多种高级对抗攻击下的鲁棒性,包括 MHM、CARROT-I 和 CARROT-D。
- 评估指标:对于分类任务,使用准确率(Accuracy)和攻击成功率(ASR)作为评估指标;对于生成任务,使用 CodeBLEU 评估生成代码的质量。
结果分析
分类任务:
- CausalCode 在对抗随机扰动攻击和高级对抗攻击方面均表现出色,显著降低了 ASR,提高了模型的鲁棒性。
- 在 POJ-104 数据集上,CausalCode 将 ASR 降低了 31.95%,在 CodeChef 数据集上降低了 16.87%。
- 与对比方法(如 ContraBERT、CARROT-T 和 ALERT-T)相比,CausalCode 在所有测试任务中均取得了最佳性能。
生成任务:
- 在代码翻译和代码修复任务中,CausalCode 显著提高了 CodeBLEU 分数,分别提高了 1.18% 和 0.43%。
- 在对抗攻击下,CausalCode 的性能下降幅度最小,表明其在生成任务中也具有良好的鲁棒性。
结论:
- CausalCode 通过因果数据增强和正则化学习,有效增强了 DL 模型在源代码任务中的鲁棒性,能够显著降低对抗攻击的成功率。
- 该框架不仅提高了模型的鲁棒性,还保持了模型在正常数据上的性能,证明了其在软件工程任务中的有效性。
- CausalCode 的方法对多种 DL 模型和任务均有效,具有广泛的适用性
讨论
- 论文指出,当前的干预选择基于梯度下降方向的多次随机采样,未来可以探索其他采样技术。
- 防御不同类型的对抗攻击仍然是一个挑战,需要进一步研究。
- 探索因果学习如何同时提高模型的鲁棒性和可解释性也是一个有趣的方向
优点缺点
[[A Causal Learning Framework for Enhancing Robustness of Source Code Models-要点归纳]]
[[A Causal Learning Framework for Enhancing Robustness of Source Code Models-翻译]]
[[特征去噪]]