Page 154 - 《软件学报》2025年第5期
P. 154
2054 软件学报 2025 年第 36 卷第 5 期
为了方便表述, 5 个图神经网络模型依次描述为 GNN、GCN、GAT、GSG 和 GT. 对于使用局部结构信息特
征作为输入的模型依次命名为 L_GNN、L_GCN、L_GAT、L_GSG、LGT, 而对于输入了局部结构信息和全局位
置编码这一融合特征的模型依次命名为 LG_GNN、LG_GCN、LG_GAT、LG_GSG、LGCGT.
3.2.3 实验设置
实验运行环境见表 3. 其中 GPU 为 RTX5000-16G, 编程语言为 Python 3.6.6, 深度学习框架为 PyTorch.
表 3 实验环境
参数 参数值
CPU Intel® Xeon(R) Gold 5218
GPU NVIDIA GeForce RTX5000-16G
开发语言 Python 3.6.6
深度学习框架 PyTorch 1.10.2
开发工具 PyCharm 2020.2.3
本文实验的代码已经上传至 GitHub (https://github.com/ddbaba2333/Interaction-prediction.git), 对于实验过程
中模型参数的详细设置见表 2. 局部特征抽取方法 node2vec 的参数设置 p=0.25 和 q=2 是为了调整随机游走的
策略, 以更好地探索和捕获软件网络中节点的多样化邻域特征 [27,28] . 这种参数设置有助于在保留节点局部特征
的同时, 获取更广阔的上下文信息, 这对于预测软件系统中元素间的复杂交互关系是十分有利的. 全局特征抽取
方法中, 设置拉普拉斯位置编码的维度为 64, 可以在不过度增加计算负担的同时, 保留足够的信息以反映节点
间的全局关系 [28] ; 而对称标准化则有助于保持网络的特性, 使特征向量更好地反映节点的全局位置信息, 从而
在预测软件系统中的元素交互时提高模型的性能和准确性 [28,30] . 特征优化中局部和全局特征融合方式为
Concat, 这种融合策略简单直观地将局部特征和全局特征拼接成一个更长的特征向量, 既保留了每个特征原有
的信息, 也让模型能够同时学习到节点的局部交互模式和全局位置信息; 使用两层 Graph Transformer 能够在不
过度增加计算负担的情况下, 提供足够的模型深度来捕获节点间复杂的交互关系; 注意力机制数量为 8 有助于
模型在处理节点特征时考虑到多样的上下文信息, 增强模型的表达能力; 隐藏层维度设置为 1 024 则为模型提供
了充分的能力来学习复杂的特征表示; 而学习率、训练周期和 dropout 的设置则旨在优化训练过程, 防止过拟
合, 确保模型的泛化性能 [28,33] .
3.3 实验结果与分析
RQ1: LGCGT 方法是否能够提高软件系统中版本内多粒度交互关系预测能力?
为了验证局部结构信息和全局位置编码相结合的特征对软件系统表征能力的提升. 首先在仅有局部结构信
息, 即 node2vec 学到的特征信息分别在 5 个图神经网络模型上展开实验. 其次, 将局部结构信息和全局位置编码
相结合的特征也依次在 5 个图神经网络模型上实验. 图 6 给出了 9 个项目的 3 种粒度分别在 5 个图神经网络模型
的两种评估指标上的实验结果.
具体来说, 在仅有局部结构信息特征的情况下, 不同图神经网络模型在各粒度下表现各异. 包粒度中表现
最好和最差的模型 AUC 值分别为 LGT (0.852) 和 L_GNN (0.762), 类粒度中表现最好和最差的模型 AUC 值分
别为 LGT (0.861) 和 L_GNN (0.777), 函数粒度中表现最好和最差的模型 AUC 值分别为 LGT (0.602) 和 L_GNN
(0.565); 对于 AP 值而言, 包粒度中表现最好和最差的分别为 LGT (0.786) 和 L_GNN (0.739), 类粒度中表现最好
和最差的分别为 LGT (0.785) 和 L_GNN (0.746), 函数粒度中表现最好和最差的分别为 LGT (0.679) 和 L_GSG
(0.668).
融合了局部结构信息和全局位置编码的特征后, 各模型的预测能力均有所提升. 包粒度中表现最好和最差的
模型 AUC 值分别为 LGCGT (0.922) 和 LG_GSG (0.831), 类粒度中表现最好和最差的模型 AUC 值分别为 LGCGT
(0.896) 和 LG_GNN (0.827), 函数粒度中表现最好和最差的模型 AUC 值分别为 LGCGT (0.749) 和 L_GSG (0.679);
对于 AP 值而言, 包粒度中表现最好和最差的分别为 LGCGT (0.909) 和 LG_GAT (0.831), 类粒度中表现最好和最