Skip to content

aug618/FL-MergeNet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

联邦学习 + MergeNet Alpha对比实验指南

🎯 实验目标

本实验体系专注于验证不同数据异构程度下联邦学习与MergeNet知识融合技术的结合效果,通过Alpha对比实验验证.

📊 实验设计

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两个卷积层

🔧 核心技术细节

1. 数据划分策略

  • 联邦数据划分: 使用Dirichlet分布创建Non-IID数据分布
  • Alpha参数控制:
    • α=0.5: 高异构性,客户端数据分布差异很大
    • α=10: 中异构性,客户端数据分布有一定差异
    • α=100: 低异构性,客户端数据分布接近均匀
  • 50个客户端: 每个客户端至少50个样本
  • 标签异构: 不同客户端具有不同的类别分布偏好
  • 无数据重叠: 确保客户端间数据完全分离

2. 联邦学习配置

  • 总客户端数: 50个
  • 每轮选择: 15个客户端参与训练
  • 联邦平均频率: 每2个batch进行一次聚合
  • 本地训练: 每个客户端使用独立的数据子集

3. MergeNet知识融合

  • 固定ResNet版本: 使用预训练ResNet50参数作为固定teacher
  • 融合机制: 参数注意力模块 (支持卷积层→线性层和线性层→线性层两种模式)
  • 融合频率: 联邦平均后立即进行知识融合 `

🚀 快速开始

1. 环境准备

# 安装依赖
pip install torch torchvision numpy matplotlib tqdm pyyaml swanlab

# 创建目录
mkdir -p logs checkpoints results

# 环境检查
python validate_alpha_experiments.py

2. 运行Alpha对比实验

完整对比实验(推荐按顺序运行)

# 纯联邦学习实验(基线)
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.py

📈 实验监控

模型保存

checkpoints/
├── 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对比实验的关键洞察

经过深入分析和优化,我们构建了完整的Alpha对比实验体系:

  1. 数据异构性的系统性影响

    • 通过α=0.5, 10, 100三个值系统性研究数据异构程度
    • 每个方法在相同的数据分布下进行公平对比
  2. MergeNet在异构环境下的适应性

    • 固定ResNet版本:使用预训练参数
  3. 联邦学习的异构性挑战

    • 高异构性(α=0.5)下客户端性能差异显著
    • 低异构性(α=100)下接近集中式训练效果
  4. 双重知识融合的创新点 ⭐(新增):

    • 同时从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对比实验了!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages