Page 148 - 《软件学报》2025年第5期
P. 148

2048                                                       软件学报  2025  年第  36  卷第  5  期


                 2.2   特征融合

                 2.2.1    局部特征
                    利用网络嵌入提取局部特征, 是通过设计一种保留节点邻接结构的映射函数                         f, 将网络中的节点以一种低维向
                                       d
                 量的形式表现, 即     f: v i →x i ∈  R  , v i ∈V, d<<|V|. 网络嵌入的方法有很多, 本文选用  node2vec 方法  [27] 来获取节点的局部
                 特征, 是因为它综合考虑了广度优先遍历             (BFS) 和深度优先遍历     (DFS) 的游走策略, 能有效探索和捕捉软件网络
                 中节点的邻近交互模式. 这样得到的特征直接反映了节点间的交互信息, 对理解和预测软件系统中元素间的交互
                 关系具有重要价值      [28] . 通过这种方式, 模型能够更准确地预测软件元素间的交互关系, 提高预测的精确度.
                    node2vec 引入两个超参数     p  和  q  来控制随机游走的策略. 参数     p  是返回概率, 控制重复访问上一步已访问过
                 顶点的概率; 参数     q  是出入参数, 控制着游走是向内还是向外. 若           q>1  随机游走倾向于访问和       t 接近的顶点    (偏向
                 BFS), 反之, 若  q<1  则倾向于访问远离   t 的顶点  (偏向  DFS). 公式  (1) 描述的是当从顶点    t 访问到顶点    v 时, 决定下
                 一个访问顶点所对应的偏移量           α  的概率为:

                                                          
                                                           1
                                                          
                                                             ,  d tx = 0
                                                          
                                                           p
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                   α pq (t, x) =  1,  d tx = 1                       (1)
                                                          
                                                          
                                                          
                                                          
                                                           1
                                                          
                                                          
                                                             ,  d tx = 2
                                                          
                                                            q
                                                          
                 其中, d t 表示顶点  t 和  x 之间的最短路径距离. 如图      3  中, 当  d tx =0  时, p  表示顶点  x 就是访问当前顶点  v 之前访问
                       x
                 过的顶点; 当   d tx =1  时, 顶点  v 访问  x 1 的概率为  1; 当  d tx =2  时, 表示顶点  t 到节点  x 1 和  x 2 的最短路径为  2, 访问这
                 二者节点的概率为       1/q, 重复访问节点   t 的概率为   1/p.

                                                                 x 2
                                                         x 1
                                                           α=1  1
                                                              α= q
                                                            v
                                                           1   1
                                                         α= p α= q  x 3
                                                       t
                                                图 3 node2vec 随机游走策略图

                 2.2.2    全局特征
                    利用位置编码      (position encoding, PE) 将节点的相对位置信息嵌入到节点的特征表示中, 从而获得节点的全局
                 位置信息   [29] . 对于图结构数据, 通常不存在明确的空间布局或几何意义上的位置信息, 但节点之间仍然存在着相对
                 的邻近性和连接关系. 位置编码的目的是了解网络结构和节点位置信息, 将这种全局特征的相对位置信息编码到
                 节点的特征表示中, 使得邻近的节点具有相似的位置特征, 而疏远的节点具有不同的位置特征                              [30] . 这种全局视角
                 补充了局部特征提供的邻近性信息, 使得模型不仅能够理解节点间的直接关系, 而且还能够把握它们在整个网络
                 中的相对位置和间接连接, 从而提供了一个更加全面和深入的网络结构理解                          [28] . 本文选用拉普拉斯位置编码, 它
                 利用了拉普拉斯矩阵的信息, 矩阵中的元素反映了节点之间的连接强度, 对于连通性较强的节点, 其在拉普拉斯矩
                 阵中的对应元素较大, 因此拉普拉斯的位置编码能够更好地保留图的拓扑信息和位置信息, 并且增强节点表示的
                 稳定性和鲁棒性, 有助于减少节点表示在版本内和跨版本的不同任务和不同图结构下的变化, 提高模型的泛化能力                                 [31] .
                    在训练过程中随机翻转特征向量的符号, 将数据集中所有图的拉普拉斯特征向量                            Δ  预先计算出来, 这种预处
                 理可以在后续的图形分析任务中提高效率, 并且可以避免在每个任务中都需要进行矩阵分解的算力开销                                   [29] . 特征
                 向量的计算可以通过将图拉普拉斯矩阵因式分解为特征向量和对应特征值的乘积而得到:

                                                          1    1
                                                                   T
                                                   ∆ = I − D AD − 2 = U ΛU                            (2)
                                                          − 2
                 其中, Δ  是拉普拉斯特征向量, I 是单位矩阵, A        为  n×n  的邻接矩阵, D  为度矩阵, 矩阵因式分解后得到特征值            Λ  和
                 特征向量    U. 本文使用节点的     k 个最小非零特征向量作为其位置编码, k 代表着每个节点所选取的特征向量的数
   143   144   145   146   147   148   149   150   151   152   153