1. 问题根源:伪相关(Spurious Correlation)的存在

  • 描述现状:在代码分析任务中,机器学习模型预测功能 Y 时,不仅依赖于有因果关系的语义特征 X_S,也依赖于没有因果关系的风格特征 X_F(如变量名)。

  • 揭示原因:这种依赖之所以形成,是因为一个隐藏的混杂因子 C(如开发者水平)同时影响了风格 F 和语义 S,形成了一条后门路径 F <- C -> S

  • 指出危害:这导致了伪相关——模型错误地将某些风格特征(如特定的变量命名模式)与输出标签关联起来。这使得模型在训练分布上表现良好,但遇到分布外数据(如对抗攻击、不同编码风格的数据)时泛化能力差,因为其依赖的“捷径”失效了。

2. 解决方案:因果干预(Intervention)

  • 提出方案:要解决这个问题,必须打破由后门路径造成的伪相关。

  • 理论工具:使用 Do-operator 对风格变量 F 进行干预,即 do(F)

  • 干预效果

    • 干预操作切断了CF的因果箭头(如图3(b)所示),从而阻断了后门路径 F <- C -> S

    • 干预后,F 的取值不再受 C 影响,而是从其边缘分布 P(F) 中独立采样。

    • 因此,干预后的 F 和 S 变得独立P(S | do(F)) = P(S)。风格与语义之间的虚假关联被消除。

3. 实践方法:用数据增强模拟干预

  • 搭建桥梁:如何在实践中实现这种理论上的干预?答案是:通过数据增强来模拟干预数据

  • 具体操作:对原始代码数据进行保持语义不变的代码变换(例如,随机重命名变量、修改代码格式、添加死代码等)。这正对应了 do(F) 的操作——改变风格特征 F 的值,同时保证语义 S 不变。

  • 生成数据:通过这种方式生成的每一个增强样本,都是一个反事实实例(Counterfactual),即“如果这段代码换一个变量名(干预),它的预测结果会怎样”。

4. 对比与创新:超越传统数据增强方法

  • 批评现有方法:文章指出两种传统方法不足以解决问题:

    • 随机采样(图4a):覆盖范围广但盲目,效率低下,多数变换对提升鲁棒性帮助不大。

    • 对抗样本生成(图4b):旨在寻找能欺骗模型的最小扰动点,其搜索策略(如梯度下降)通常在得逞后即停止,覆盖的对抗样本空间有限(绿色箭头轨迹)。

  • 提出新方法:受PGD(投影梯度下降)启发,作者提出了一种多路径、迭代式的干预样本生成方法(图4c)。

    • 核心思想:在梯度下降方向的引导下,持续地生成一批最有效的干预样本(Top-k),然后从中均匀采样以继续迭代。

    • 优势

      1. 有方向性:遵循梯度方向,能更高效地探索模型脆弱的区域(红色星区)。

      2. 覆盖性广:通过多路径采样和迭代,能更全面地覆盖整个对抗分布区域(红色边界),而不仅仅是找到单个攻击点。

      3. 保语义:所有变换都必须是保持语义的,确保了生成数据的有效性。

5. 最终目标:学习不变表征,提升鲁棒性

  • 最终目的:通过上述因果数据增强方法,迫使模型在训练时见到足够多风格 F 变化但语义 S 不变的样本。

  • 模型效应:模型将逐渐学会忽略变化无常的风格特征 X_F,而专注于与输出 Y 有稳定因果关系的语义特征 X_S

  • 达成效果:模型学习到的是因果不变的特征表征,因此对风格变化和对抗攻击具有更强的鲁棒性


http://example.com/posts/148.html
作者
司马吴空
发布于
2026年3月30日
许可协议