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] 对模型超参数进行优化. 之后根据这些不同超参数
   114   115   116   117   118   119   120   121   122   123   124