本实验体系专注于验证不同数据异构程度下联邦学习与MergeNet知识融合技术的结合效果,通过Alpha对比实验验证.
| 实验类型 | 脚本文件 | Alpha值 | 数据异构性 | 知识融合 |
|---|---|---|---|---|
| 纯联邦学习 | pure_federated_learning.py |
0.5, 10, 100 | 高→低 | 无 |
| 卷积到卷积融合 | conv2conv.py |
0.5, 10, 100 | 高→低 | ResNet卷积→MobileNet卷积 |
| 卷积到线性融合 | conv2Linear.py |
0.5, 10, 100 | 高→低 | ResNet卷积→MobileNet线性 |
| 线性到卷积融合 | Linear2conv.py |
0.5, 10, 100 | 高→低 | ResNet线性→MobileNet卷积 |
| 线性到线性融合 | Linear2Linear.py |
0.5, 10, 100 | 高→低 | ResNet线性→MobileNet线性 |
| 双重知识融合 | dual_fusion.py |
0.5, 10, 100 | 高→低 | ResNet卷积+线性→MobileNet两个卷积层 |
- 联邦数据划分: 使用Dirichlet分布创建Non-IID数据分布
- Alpha参数控制:
- α=0.5: 高异构性,客户端数据分布差异很大
- α=10: 中异构性,客户端数据分布有一定差异
- α=100: 低异构性,客户端数据分布接近均匀
- 50个客户端: 每个客户端至少50个样本
- 标签异构: 不同客户端具有不同的类别分布偏好
- 无数据重叠: 确保客户端间数据完全分离
- 总客户端数: 50个
- 每轮选择: 15个客户端参与训练
- 联邦平均频率: 每2个batch进行一次聚合
- 本地训练: 每个客户端使用独立的数据子集
- 固定ResNet版本: 使用预训练ResNet50参数作为固定teacher
- 融合机制: 参数注意力模块 (支持卷积层→线性层和线性层→线性层两种模式)
- 融合频率: 联邦平均后立即进行知识融合 `
# 安装依赖
pip install torch torchvision numpy matplotlib tqdm pyyaml swanlab
# 创建目录
mkdir -p logs checkpoints results
# 环境检查
python validate_alpha_experiments.py# 纯联邦学习实验(基线)
python pure_federated_learning.py
# 单一融合实验
python conv2conv.py # 卷积到卷积知识融合
python conv2Linear.py # 卷积到线性知识融合
python Linear2conv.py # 线性到卷积知识融合
python Linear2Linear.py # 线性到线性知识融合
# 双重融合实验(新增)
python dual_fusion.py # 同时融合ResNet卷积+线性到MobileNet两个卷积层# 基线实验 - 单MobileNetV2
python run_alone.py
# 标准MergeNet实验 - 知识融合
python run_res50_mbv2.py# 验证Alpha实验配置
python validate_alpha_experiments.py
# 验证联邦学习数据划分一致性
python verify_federated_consistency.py
# 系统完整性检查
python check_experiment_system.py
# 验证双重融合配置(新增)
python verify_dual_fusion.pycheckpoints/
├── pure_federated_best_client_*.pth # 纯联邦客户端模型
├── fixed_mergenet_best_client_*.pth # 固定MergeNet客户端模型
├── trainable_mergenet_best_client_*.pth # 可训练MergeNet客户端模型
├── run_alone_best_mobilenet.pth # 基线最佳模型
└── best_resnet50_lr_*.pth # MergeNet ResNet50模型
经过深入分析和优化,我们构建了完整的Alpha对比实验体系:
-
数据异构性的系统性影响:
- 通过α=0.5, 10, 100三个值系统性研究数据异构程度
- 每个方法在相同的数据分布下进行公平对比
-
MergeNet在异构环境下的适应性:
- 固定ResNet版本:使用预训练参数
-
联邦学习的异构性挑战:
- 高异构性(α=0.5)下客户端性能差异显著
- 低异构性(α=100)下接近集中式训练效果
-
双重知识融合的创新点 ⭐(新增):
- 同时从ResNet的卷积层和线性层提取知识
- 融合到MobileNet的两个不同卷积层
- 相比单一融合,可能带来更全面的知识迁移
- 测试多源知识同时注入的效果
milkDragon/
├── model/ # 模型定义
│ ├── MobileNet_v2.py # MobileNetV2模型
│ ├── ResNet.py # ResNet50模型
│ └── param_attention.py # 参数注意力模块(MergeNet核心)
├── dataset/ # 数据处理
│ ├── cls_dataloader.py # CIFAR-100数据加载器
│ └── federated_data_partition.py # 联邦数据划分(Dirichlet)
├── config/ # 配置文件
│ └── param_attention_config.yaml # MergeNet参数配置
├── logs/ # 训练日志
├── checkpoints/ # 模型权重
├── utils/ # 工具函数
│
├── === Alpha对比实验核心文件 ===
├── pure_federated_learning.py # 纯联邦学习(Alpha: 0.5,10,100)
├── Linear2conv.py # 线性到卷积融合
├── Linear2Linear.py # 线性到线性融合
├── conv2conv.py # 卷积到卷积融合
├── conv2Linear.py # 卷积到线性融合
├── dual_fusion.py # 双重融合(ResNet卷积+线性→MobileNet双卷积)
│
├── === 基线对比实验 ===
├── run_alone.py # 单MobileNetV2基线
├── run_res50_mbv2.py # 标准MergeNet实验
│
├── === 验证和工具 ===
├── validate_alpha_experiments.py # Alpha实验配置验证
├── verify_federated_consistency.py # 联邦学习一致性验证
├── check_experiment_system.py # 系统完整性检查
└── README.md # 本文件
实验体系版本: v3.0 - Alpha对比实验
最后更新: 2025年10月17日
维护者: MilkDragon团队
🚀 现在可以开始运行Alpha对比实验了!