Page 235 - 《软件学报》2026年第7期
P. 235
2920 软件学报 2026 年第 37 卷第 7 期
而确保在整个训练过程中始终满足严格的差分隐私要求.
3.6 算法实现与优化
PRIDE-SDP 框架的实现涉及多个组件的协调配合. 主算法控制整个训练流程, 包括客户端选择、本地训练、
差分隐私保护和全局聚合等步骤. 在每个通信轮次开始时, 服务器根据贡献度评估和多样性约束选择参与训练的
客户端子集. 被选中的客户端使用本地数据执行个性化训练, 训练过程中应用组合损失函数处理类不平衡和模型
一致性约束问题. 本地训练算法在每个客户端独立执行, 包含多个训练 epoch. 每个 epoch 内, 算法遍历本地数据集
的所有批次, 计算损失函数和梯度, 然后应用梯度裁剪和参数更新. 训练完成后, 客户端将模型参数发送给差分隐
私保护模块进行处理, 差分隐私保护算法负责为模型参数添加校准噪声. 算法首先根据当前轮次和隐私预算计算
噪声标准差, 然后为每个模型参数添加独立的高斯噪声. 处理后的参数被发送给服务器进行全局聚合. 服务器端的
聚合算法收集所有客户端的更新, 根据贡献度权重计算加权平均, 生成新的全局模型参数. 更新后的全局参数被分
发给各客户端, 指导下一轮的个性化训练. 整个过程持续迭代, 直到模型收敛或达到预设的训练轮次. 为提升算法
的实用性, 系统还实现了多项优化技术. 通信压缩技术通过量化和稀疏化减少客户端与服务器间的通信开销. 异步
更新机制允许不同客户端以不同的速度进行训练, 提升系统的鲁棒性. 容错机制处理客户端离线或通信失败的情
况, 确保训练过程的连续性. 这些优化措施使得 PRIDE-SDP 框架能够在实际的分布式环境中稳定运行, 为跨项目
软件缺陷预测提供可靠的技术支撑.
4 实 验
4.1 数据集
为验证本文所提方法的有效性, 本文在公开缺陷数据集上进行实验, 包括 PROMISE、MDP、AEEEM、
GitHub-Python 和 ReLink. 数据集涉及 C、C++、Python、Java 等编程语言. 表 1 给出了数据集所对应的详细项目
信息. MDP 数据集来源于美国国家航空航天局, 每个项目数据集由 40 个度量指标组成, 本文为补充其他实验数据
集不涉及 C/C++的情况, 故仅选择 C/C++项目的数据. GitHub-Python 包括 3 个 Python 项目, 即 CoreFX、Django
和 Nova, 每个项目具有 29 个度量指标. ReLink 包括 3 个开源项目, 每个项目 ReLink 中的数据集有 26 个复杂性
指标. AEEEM 中的每个项目数据集由 61 个软件指标组成. PROMISE 由多个开源 Java 项目组成, 其中每个项目数
据集包括 20 个类级软件指标.
表 1 实验数据集
分组 项目 样本数量 度量数量 缺陷率 (%)
CM1 505 10
MW1 403 8
PC1 1 107 7
[50]
MDP 40
JM1 10 878 19
KC1 2 107 15
MC1 9 466 0.7
CoreFX 26 627 6.91
GitHub-Python [51] Django 26 360 29 42.64
Nova 26 313 44.34
Apache 194 50.52
ReLink [52] Safe 56 26 39.81
ZXing 399 29.57
EQ 324 39.81
JDT 997 20.66
AEEEM [53] Lucene 691 61 9.26
Mylyn 1 862 13.16
PDE 1 497 13.96

