Page 123 - 《软件学报》2025年第12期
P. 123

5504                                                      软件学报  2025  年第  36  卷第  12  期


                 以通过更少的样本实现更好的性能, 这可能有助于改善在少样本的漏洞类型上较差的分类性能以及在保证良好的
                 性能的同时最小化时间和计算资源的投入. 因此, 本文提出了一种基于监督对比学习的模型训练框架, 使相同类型
                 的漏洞样本更紧密地聚集在一起, 同时使不同类型的漏洞样本彼此远离.
                    对比学习已经在许多方面得到了应用, 包括图像、语音和视频                     [38−50] . 它们倾向于用不同的增强方法扩展样本,
                 并将增强样本作为与原始样本的比较项. 然而, 与这些方法不同的是, 我们并不进行数据增强. 相反, 如图                              6  所示,
                 我们将漏洞类型相同但位于不同训练轮次中的样本作为比较对象.

                                                批次B
                                                                    最小化
                                              致密层     标签            最大化
                                                       1
                                               v 0
                                                       1
                                               v 1
                                                       1
                                               v 2
                                                       2
                                               v 3
                                                       2
                                               v 4
                                                       3
                                               v 5
                                                       4
                                               v 6
                                               …       …
                                                     c
                                                批次B
                                              致密层     标签
                                                       1
                                               v′ 0
                                                       1
                                               v′ 1
                                                       1
                                               v′ 2
                                                       2
                                               v′ 3
                                                       2
                                               v′ 4
                                                       3
                                               v′ 5
                                                       4
                                               v′ 6
                                               …       …
                                              图 6 VulFewShot 中的监督对比学习

                    具体来说, 对于具有      T  类对象和批量大小为       N  的漏洞分类任务, 将一个批量大小的训练示例              {v i ,l i } i=1,...,N  称为
                                                                                       ˆ  表示第
                 B, 其中   v i  表示  B 中第  i 个漏洞样本的输入向量表示,   l i  表示对应的标签.  l i,t  表示标签类型,  l i,t  i 个漏洞样本
                 的模型输出属于类型       t 的概率. 交叉熵   (CE) 损失  L CE  可以定义为公式  (9):

                                                              T
                                                         1  N ∑∑
                                                                     ˆ
                                                   L CE = −     l i,t ·logl i,t                       (9)
                                                         N
                                                           i=1 t=1
                                              {   }         c
                                                                  ′
                                                                                     ′
                    然后本文生成了一个比较数据集              ′      称为  B , 其中   v  表示训练数据集中与    v  标签相同但在    B 中不相
                                                i
                                               v ,l i i=1,...,N   i                  i
                                                              B = B∪B  作为训练批次.
                                                               a
                                                                      c
                 同的漏洞样本的向量表示. 将两个数据集合并在一起, 得到
                    如图  6  所示, 本文的对比学习框架的目标是最大化具有相同类型标签的漏洞样本之间的相似性, 最小化不同
                                         a
                                              v
                                               ′
                 类型样本之间的相似性. 对于         B  中的  , 我们借鉴了    SimCLR  的思路  [50] , 尝试通过最小化公式   (10) 所表示的标准
                                               i
                                                                                           B  中所有样本的
                                                                                            a
                 化温度范围交叉熵损失        L i  来使其与相同标签项的距离更近, 与不同标签项的距离更远. 然后对
                 监督对比学习     (SupCon) 损失  L SupCon  进行加权平均, 其定义为公式    (11),   N l i   表示批次中与  l i  具有相同标签的样本
                 总数:

                                                2N              (      ( )  )
                                               ∑             exp Φ(v i )·Φ v j /τ
                                          L i = −  1 i, j 1 l i =l j  log                            (10)
                                                           2N
                                                          ∑
                                                j=1
                                                             1 i,k exp(Φ(v i )·Φ(v k )/τ)
                                                           k=1
                 其中,  Φ(·) 表示由深度学习构建的编码器, 输出在最终的             Softmax  操作之前已经过   L2  范数归一化的最后一个密集
                 层,  τ 表示控制类分离的温度参数.
   118   119   120   121   122   123   124   125   126   127   128