Page 119 - 《软件学报》2025年第12期
P. 119
5500 软件学报 2025 年第 36 卷第 12 期
N ∑
M_FNR = (1/N)× FNR i (3)
i=1
• W_FNR (根据 10 路交叉验证的每个漏洞类型数量计算的权重得到的假阴性率的多分类对应值的平均值).
W_FNR 的计算公式如公式 (4) 所示:
N ∑
W_FNR = (W i ×FNR i ) (4)
i=1
• M_F1 (根据 10 路交叉验证的漏洞类型总数得到的 F1 度量的多分类对应值的平均值). M_F1 的计算公式如
公式 (5) 所示:
N ∑
M_F1 = (1/N)× F1 i (5)
i=1
• W_F1 (根据 10 路交叉验证的每个漏洞类型数量计算的权重得到的 F1 度量的多分类对应值的平均值).
W_F1 的计算公式如公式 (6) 所示:
N ∑
W_F1 = (W i × F1 i ) (6)
i=1
• Mean_L (M_F1 值在 10 路交叉验证里大规模漏洞类型上的平均值).
• Mean_M (M_F1 值在 10 路交叉验证里中规模漏洞类型上的平均值).
• Mean_S (M_F1 值在 10 路交叉验证里小规模漏洞类型上的平均值). 我们用 Mean 来表示 Mean_L、Mean_M
和 Mean_S, Mean 的计算公式如公式 (7) 所示:
N ∑
Mean = (1/N)× M_F1 i (7)
i=1
• STD_L (M_F1 值在 10 路交叉验证里大规模漏洞类型上的标准偏差值的平均值).
• STD_M (M_F1 值在 10 路交叉验证里中规模漏洞类型上的标准偏差值的平均值).
• STD_S (M_F1 值在 10 路交叉验证里小规模漏洞类型上的标准偏差值的平均值). 我们用 STD 来表示 STD_L,
STD_M 和 STD_S, STD 的计算公式如公式 (8) 所示:
v
u
t
N ∑ 10 ∑
2
STD = (1/N)× (F1 ij − Mean) /9 (8)
i=1 j=1
3 传统深度学习模型在少样本漏洞类型上的表现
在本节中, 分别使用 4 种传统的深度学习模型 (CNN、BiGRU、BiLSTM 和 Atten-BiLSTM) 在 MVD 和 MVD-
part 数据集上进行了实验. 研究了它们的整体性能以及在大、中、小规模的漏洞类型上的性能. 结果表明, 尽管模
型在 MVD 和 MVD-part 数据集上的总体性能令人满意, 但其性能从大到小依次下降.
3.1 训练方法
实验中使用了 10 路交叉验证方法. N 个样本 (N≥10) 的漏洞类型被随机分成 10 个大小相同的子集. 而切分剩
余的样本则随机分散到 10 个子集中 (每个子集 1 个). 对于具有 N 个漏洞样本 (N<10) 的小规模类型, 首先利用留
一法获得只有 N 路的交叉验证数据, 然后从这 N 路中随机选择 10–N 次并每次进行复制. 通过这样的方式得到了
小规模漏洞类型的 10 路交叉验证数据. 这样可以保证测试数据中的每个漏洞类型至少包含一个样本. 在 10 路交
叉验证数据中, 9 个子集将用于训练, 1 个子集将用于整个实验的测试.
3.2 超参数优化
在 10 路交叉验证的实验中, 我们使用了网格探索策略 [63] 对模型超参数进行优化. 之后根据这些不同超参数

