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 Θ

