Page 224 - 《软件学报》2026年第3期
P. 224
田朝 等: CoDefense: 面向对抗性攻击的多粒度代码归一化防御方法 1187
表明 CoDefense 在保持模型原始性能方面的显著优势.
6 讨 论
6.1 CoDefense 对嵌入质量的影响
现有研究 [80,81] 已明确指出, 嵌入质量 (embedding quality) 对于代码模型学习深层代码语义特征以划定有效决
策边界具有至关重要的作用. 为了深入对比原始模型与 CoDefense 增强后模型的嵌入质量差异, 我们采用了 t-
SNE (t-distributed stochastic neighbor embedding) 技术 [82] . 该技术将目标代码模型生成的高维嵌入向量映射至二维
空间, 以直观地揭示代码嵌入之间的相对关系. 鉴于先前研究 [81] 中, t-SNE 以离散程度作为关键衡量标准在评估分
类任务嵌入质量方面展现出了卓越性能, 我们同样选择了两项分类任务 (即漏洞检测和代码克隆检测任务) 进行
实验评估, 并覆盖了所有 3 个预训练代码模型. 与现有工作保持一致 [80,81] , 我们采用质心距离 (centroid distance) 作
为量化嵌入离散程度及嵌入质量的度量标准. 质心距离数值越大, 则反映嵌入空间内各类别界限越清晰和明确, 进
而表明嵌入质量的提升.
图 3 直观地展示了在 6 个实验场景下 (涉及 3 个代码模型和两个分类任务组合) 测试集样本的 t-SNE 可视化
结果. 图中, “Original”标签指代原始模型, 而“w/CoDefense”则对应 CoDefense 增强后的模型, “VD”与“CCD”分别
指代漏洞检测任务和代码克隆检测任务, “类别-0”和“类别-1”分别表示这两个分类任务中不同的类别, 用下划线表
示较优结果. 在这 6 个实验场景的评估中, 针对质心距离的测量结果显示, CoDefense 增强后的模型在其中 4 个实
验场景中都实现了更优异的分离效果. 进一步分析详细数据, 我们发现相较于原始模型, CoDefense 不仅未破坏原
始模型的嵌入质量和模型性能, 反而平均提升了 1.96% 的质心距离 (反映嵌入质量增强) 和 0.23% 的 Accuracy (表
明模型性能亦有小幅提升), 充分支持了研究问题 3 的实验结论.
类别-0 类别-1 类别-0的质心 类别-1的质心
Original
质心距离 (↑): 66.30 质心距离 (↑): 51.29 质心距离 (↑): 63.80 质心距离 (↑): 36.30 质心距离 (↑): 43.43 质心距离 (↑): 37.93
w/CoDefense
质心距离 (↑): 66.21 质心距离 (↑): 57.35 质心距离 (↑): 64.29 质心距离 (↑): 36.44 质心距离 (↑): 42.06 质心距离 (↑): 38.57
(a) CodeBERT×VD (b) CodeGPT×VD (c) PLBART×VD (d) CodeBERT×CCD (e) CodeGPT×CCD (f) PLBART×CCD
图 3 原始模型和 CoDefense 增强后模型的嵌入质量对比
6.2 CoDefense 在大模型上的泛化性
关于大规模模型的对抗性攻击有效性问题, 我们深入分析了相关研究成果 [83–85] , 当前的研究表明, 即便是最先
进的大语言模型, 在应对对抗性攻击时仍存在一定的脆弱性. 例如, Zhang 等人 [84] 展示了在较小规模代码模型上生
成的对抗性样本在大模型 (如 GPT-3.5、GPT-4、Claude-2 等) 上仍然有效. 此外, Li 等人 [83] 的研究验证了代码变
异策略 (如代码重命名和等价结构转换) 在大型代码模型 (如 StarCoder 和 CodeGen2) 上的有效性, 而 Yang 等人 [85]
发现, 通过插入函数名或关键字的对抗性扰动可以诱导诸如 Code Gemma、Code Llama 和 CodeGeeX2 等模型生
成恶意代码片段. 这些研究表明, 本文所针对的变量名替换、死代码插入和结构等价转换等对抗性防御方法在当
前研究中仍具备实际价值.
为进一步评估 CoDefense 在更大规模模型上的泛化能力, 我们增加了 DeepSeek-Coder-1.3B [86] 作为新的研究

