Page 199 - 《软件学报》2026年第6期
P. 199

2518                                                       软件学报  2026  年第  37  卷第  6  期



                          (t)
                 9.   Get  µ  using 公式  (8)
                          v 1
                 10.   end for
                 11.   for  v 2 ∈ V 2  do
                 12.   Get  µ  using 公式  (8)
                           (t)
                           v 2
                 13.   end for
                 14. end for
                 15. Get    using 公式  (9)
                       µ g 1
                 16. Get   µ g 2   using 公式  (9)
                 17. return
                         µ g 1  , µ g 2
                                                                                                    (  )
                                                                                                      2
                                                                                                  O |V| ,
                    对基于局部点图匹配的异质图嵌入方法进行时间复杂度分析, 其中计算跨图边权重的时间复杂度为
                                                                            2
                 |V|表示   HG 1  和  HG 2  的节点数, 多层全连接神经网络的时间复杂度为        O(D|V|F ), D  为全连接神经网络层数, F    为向
                                                                         2           为邻接矩阵中非零的个数,
                 量嵌入维度, 一次本图异质邻居聚合的时间复杂度为                 O(2(||A|| 0 F + D|V|F )), 其中  ||A|| 0
                                                         2        2                     2     2       2
                 一次局部点图匹配信息聚合的时间复杂度为                O(2(|V| F + D|V|F )), 综上算法复杂度为  O(|V| +2L(|V| F + D|V|F +
                           2                             2                         2       2
                             ,
                 ||A|| 0 F + D|V|F )) L 为信息传递层数. 其中  ||A|| 0 ≪ |V| , 算法复杂度可以简化为  O(L(|V| F + D|V|F )).
                  3.2.2    相似性计算及模型训练
                                                                  的相似性, 来确定两个二进制恶意软件间的相似程
                    模型最后利用相似性度量函数计算两个嵌入向量                  µ g 1   和   µ g 2
                 度, 本文参考   Gemini [13] , 使用简单高效的余弦相似性作为相似性度量函数, 具体公式如下:

                                                                         ⟩
                                                                   ⟨µ g 1  ,µ g 2
                                                               ) =                                   (10)
                                              sim(g 1 ,g 2 ) = cos(µ g 1  ,µ g 2
                                                                          ∥
                                                                  ∥ µ g 1  ∥ ∥ µ g 2
                                                                              D = {(g i ,g ,g ) : i = 1,2,...,m}, 其中
                                                                                     ′
                                                                                       ′′
                    为了训练相似性度量模型, 从恶意软件函数调用图集中选择训练元组集合                                i  i
                  ′         ′′
                 g  与  g i  相似,  g  与  g i  不相似. 模型训练时, 为了使相似样本的嵌入向量相似, 同时不相似样本的嵌入向量差异变大,
                  i         i
                 使用了排名损失函数中的         triplet loss 函数来计算损失, 最大化   sim(g i ,g ) 和  sim(g i ,g ) 之间的差异, triplet loss 函数
                                                                                 ′′
                                                                       ′
                                                                                 i
                                                                       i
                 如下所示:

                                          Loss(g i ,g ,g = σ(sim(g i ,g − sim(g i ,g )+margin)       (11)
                                                   ′′
                                                              ′
                                                                      ′′
                                                 ′
                                                 i  i         i       i
                 其中,  σ(x) = max(x,0) margin 为一个超参数. 模型训练过程如算法       2  所示.
                                  ,
                 算法  2. 模型训练流程.
                           D = {(g i ,g ,g ) : i = 1,2,...,m}, 迭代次数  T, 嵌入维度  d, 全连接层网络层数  n;
                                    ′′
                                  ′
                 输入: 训练对          i  i
                 输出: 模型参数    Θ.
                 1.  B ← GenerateBatches(D)
                 2. for each batch  b ∈ B do
                 3.  Initialize the loss  L b = 0 for the batch b
                 4.  for  g,g ,g ∈ b do
                            ′′
                          ′
                 5.   Get the embedding vector  µ g ,µ ,µ  of  g,g ,g  using 算法  1
                                             ′
                                                     ′
                                                       ′′
                                               ′′
                                             g  g
                 6.   Get  Loss(g,g ,g ) using 公式  (11)
                                ′
                                  ′′
                                         ′′
                                       ′
                 7.   Get  L b ← L b + Loss(g,g ,g )
                 8.  end for
                 9.  Update  Θ using Adam according to  L b
                 10. end for
                 11. return  Θ
   194   195   196   197   198   199   200   201   202   203   204