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

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


                 传统  GNN  模型的表示学习框架如公式         (7) 所示:

                                                       (        (          ))
                                             (l)
                                            h = UPDATE h (l−1) ,AGG h (l−1)  : u ∈ N(v)               (7)
                                                                 u
                                                         v
                                             v
                    公式  (7) 所示的节点表示学习过程中, 首先通过            AGG(·) 聚合邻域信息    (具体操作如, 求和、取均值、最大池
                            UPDATE(·) 将邻域信息与上一层自身表示结合得到新的节点表示                  (例如线性组合层). 本节将结合恶
                 化等), 再通过
                 意节点检测任务场景中的问题, 对          AGG(·) 和  UPDATE(·) 进行改进.

                 3.4.1    自适应邻域聚合
                                                        AGG(·) 进行改进. 具体来说使用第       3.3  节中得到的类别感知注
                    为了学习到有区分度的节点表示向量, 本节对
                 意力系数   α vu  来指导信息聚合过程, 计算如公式       (8) 所示:

                                                   (   )  ∑  (        )
                                               AGG h (l−1)  =  λ att α vu +λ adj h (l−1)              (8)
                                                    u                   u
                                                         u∈N(v)
                                                                                                     v
                 其中,   N(v) 表示邻居节点的集合,     h (l−1)   表示邻居节点在  l−1 层的表示向量.   α vu  为类别感知注意力系数, 节点   和
                                            u
                 u 的类型相似度越高,      α vu  越大, 反之越小. 考虑到直接使用     α vu  作为聚合权重可能会损失原本的图结构信息, 为了
                                                                                            [0,1] , 前者越大
                 更灵活地调和注意力系数与原始邻接关系的比例, 此处引入两个超参                       λ att  与  λ adj  , 二者取值范围为
                 则类别感知注意力系数对于聚合过程的贡献越大, 而后者越大则原始图结构信息在聚合过程中所做的贡献越大.
                    通过这种方式, 在聚合邻域信息时, 可以减少类型相似度低的邻域节点信息聚合, 同时多聚合类型相似度高的
                 邻域节点信息, 从而让每个节点更准确地聚合到自身所需要的信息, 提高学习到的节点表示的区分度.

                 3.4.2    高阶邻域信息获取
                    本节的主要目的是使不一致图神经网络编码器在进行表示学习时, 可以为节点编码更丰富的邻域信息. 研究
                 表明  [16,17] , 传统的图神经网络卷积层常聚焦于一个中心节点的局部性, 这种机制对于节点与邻居类型大多相同的
                 情况很有效, 而对本文中数据不一致的情况反而会带来负面影响. 而每次聚合更高阶的邻居信息会减少这种影响,
                 对于大部分邻居节点与自身类型不同的情况, 获取全局信息而非仅获取局部信息会提升模型效果. 此外, 也有研究
                 表明  [8] , 对于恶意节点检测问题, 恶意节点会表现出高度的结构相似性, 但可能彼此相距较远. 较直观的一个解释
                 是, 平台中的恶意用户通常是有组织有预谋的黑色产业, 因此他们会避免直接产生联系, 但每个恶意用户的行为模
                 式都较为相似. 鉴于此, 本节进一步对          AGG(·) 改进, 在进行聚合操作时, 将获取信息的范围从局部拓展到非局部,
                 以尝试从全局信息中挖掘恶意节点的共性.
                    具体来说, 每次对两跳的邻居信息分别进行上一节的自适应邻域信息聚合操作, 为了避免混合不同范围的邻
                 域信息, 将两跳邻居信息以拼接的方式进行组合, 作为第                l 层的邻域信息, 具体如公式       (9) 所示:

                                         (   )      (           )     (            )
                                     AGG h (l−1)  = AGG h (l−1)  : u 1 ∈ N 1 (v) ∥ AGG h (l−1)  : u 2 ∈ N 2 (v)  (9)
                                           u         u 1                u 2
                                                                        ∥
                 其中,    N 1 (v) 为节点   v 的一阶邻居集合,    N 2 (v) 为节点  v 的两阶邻居集合,    代表拼接操作.

                 3.4.3    中间层组合
                    传统  GNN  编码器的表示学习过程如公式           (7) 所示, 这种表示学习方式在数据不一致的情况下, 首先可能会导
                 致节点因为伪装行为或噪声将错误的邻域信息与自身合并, 造成最终学习到的节点表示特征混淆. 此外, 随着模型
                 深度的增加, 学习到的节点表示会趋于相近, 增加过平滑的概率, 同时也会使不必要的噪声参与聚合, 特别是对于
                 本文数据不一致的情况, 仅使用最后一层的表示向量用于分类任务, 很容易因为原本重要的信息被弱化或被抹去,
                 使得分类效果不佳.
                    图卷积操作的相关研究表明          [17,18] , 使用中心节点与邻域分离的策略会使节点表示即使在多层                GNN  卷积层中
                 进行传播也不会出现和邻居节点非常相似的情况. 而图卷积网络每层学习到的信息都具有不同的局域性, 前几层
                 更具有局部性, 而后几层则会捕获到越来越多的全局信息. 显式的组合这些信息可以在数据不一致情况下有效提
                 升模型的效果.
                                                                             AGG(·) 得到的邻域信息, 不再融合
                    基于以上思想, 本节改进        UPDATE(·) , 在每一层更新节点表示时, 仅使用
                 h (l−1)  的信息, 而将其以残差连接的方式直接传入最后一层. 具体来说, 将所有节点的中间层表示向量以拼接的形式
                  v
   389   390   391   392   393   394   395   396   397   398   399