Page 125 - 《软件学报》2025年第12期
P. 125
5506 软件学报 2025 年第 36 卷第 12 期
表 4 传统深度学习模型和使用 VulFewShot 框架训练的模型在 MVD 和 MVD-part 数据集上
各项性能指标表现 (%)
MVD MVD-part
模型框架 模型名称
M_F1 W_F1 Mean_L Mean_M Mean_S M_F1 W_F1 Mean_L Mean_M Mean_S
CNN 97.582 99.493 99.182 98.982 94.797 96.818 97.910 97.920 98.594 94.145
BiGRU 96.694 99.348 99.006 98.463 92.904 92.579 95.410 96.090 94.412 87.616
传统模型
BiLSTM 95.957 99.317 99.026 98.528 90.721 91.493 94.572 95.380 93.739 85.797
Atten-BiLSTM 97.621 99.487 99.169 98.797 95.092 93.960 95.537 95.925 96.329 89.936
CNN 97.788 99.512 99.121 99.262 95.180 97.296 97.920 97.760 99.336 94.970
BiGRU 97.658 99.335 98.955 98.589 95.590 95.348 96.411 96.745 95.561 93.853
VulFewShot
BiLSTM 97.585 99.395 98.977 98.856 95.111 94.346 95.142 95.360 95.344 92.478
Atten-BiLSTM 98.156 99.520 99.175 99.315 96.133 97.296 97.815 97.763 98.372 95.863
一方面, 虽然与 CNN 模型相比整体性能提升并不明显, 但与其他 3 种模型相比性能提升的表现则较为突出.
通过表 4 中的性能指标, 我们可以发现 CNN 在所有 4 种传统模型中的平均得分是最好的, 并且得分非常高, 所以
即使是轻微的改进也可以证明 VulFewShot 的优秀.
另一方面, 传统深度学习模型在 MVD-part 上的平均性能比 MVD 差 3.25%, VulFewShot 将这一差距缩小到
1.73%. 从第 2.2 节可知, MVD-part 在少样本漏洞类型的评价标准上优于 MVD, 因为 MVD 中不同漏洞类型样本
数量的不平衡会影响传统深度学习模型的学习过程, 与控制变量的原则相悖. 因此, 我们可以得出结论, VulFewShot
在少样本漏洞类型的分类上比传统的深度学习模型表现得更好.
从交叉实验结果中的数据分布也可以看出, 使用 VulFewShot 框架训练的模型具有更好的泛化能力, 这意味着
它们在多个实验中具有更稳定的性能.
综上所述, 根据评估指标的结果, 使用 VulFewShot 框架训练的模型优于传统深度学习模型, 在 MVD-part 数
据集上的优势更为明显.
4.3.2 RQ4
为了更好地展示传统深度学习模型和使用 VulFewShot 框架训练的模型在不同漏洞类型尺度上的性能比较,
用箱形图展示了每个模型在 MVD 和 MVD-part 上的性能, 如图 8 所示. 其中, CE 表示采用交叉熵损失而 CE+SupCon
表示结合交叉熵损失和对比学习损失. 我们在图 8 中可以看到的是本文的框架带来的不同漏洞类型规模上的性能
提升, 尤其是在少样本类型的漏洞上的提升是不可否认的. 同时, 本文的框架减少了从大规模漏洞类型到小规模漏
洞类型的性能下降程度.
具体而言, 对于小规模类型的平均 M_F1 分数, VulFewShot 相比于 CNN、BiGRU、BiLSTM 和 Atten-
BiLSTM 在 MVD 上提高分别为 0.383%、2.686%、4.390% 和 1.041%, 在 MVD-part 上分别提高 0.825%、6.237%、
6.681% 和 5.927%. 对于中等规模类型的平均 M_F1 分数, VulFewShot 相比于 CNN、BiGRU、BiLSTM 和 Atten-
BiLSTM 在 MVD 上提高了 0.126%–0.518%, 在 MVD-part 上提高了 0.742%–2.043%. 对于大规模类型的平均 M_F1
分数, VulFewShot 与 4 种传统模型在两个数据集上的比较实验中, 8 例中有 5 例性能略有下降 (0.020%–0.160%).
在其他 3 个案例中, 性能略有提升 (0.006%–1.838%). 在 CNN 上的改善效果比在其他模型上的改善效果少得多的
原因是 CNN 的分数很高, 一点点的增加都是有价值的. 可以看到在 MVD 和 MVD-part 上 CNN 和 VulFewShot 的
结果差异在大规模到小规模漏洞类型上是稳定增加的, 符合结果预期, 因此可以认为在排除错误的影响下, VulFew-
Shot 在对少样本漏洞类型的分类上确实优于 CNN. 此外, 部分案例在大规模类型上略有下降的原因可能有两个:
一是模型在大规模类型上已经取得了很好的结果 (MVD 为 99.006%–99.182%, MVD-part 为 95.380%–97.920%),
改进空间有限. 另一个原因是实验中的随机性和偶然性.
图 9 显示了 MVD 和 MVD-part 上模型的平均标准偏差 (STD) 值. 从图 9 中可以看出, 本文的框架提高了模型
的泛化能力, 并且在 MVD-part 数据集中的改进更为明显. 在比较不同规模的漏洞类型时, 从大规模到小规模类型,
改进程度依次增加.

