【建议收藏】研0/研一如何快速入门联邦学习?一份4-6周的“硬核”学习计划
·
【建议收藏】研0/研一如何快速入门联邦学习?一份4-6周的“硬核”学习计划
作为一名研一新生或准研究生(研0),面对联邦学习(Federated Learning)这个交叉领域,最忌讳的是一上来就啃厚厚的理论书。
本文分享一份强调 “理论够用、代码先行、直奔科研” 的学习计划。目标是在 4-6 周内,让你从零基础到能够独立上手实验。
第一阶段:机器学习与深度学习速成(1 周)
目标: 不求深究数学证明,但求理解核心逻辑,并能用代码实现最基础的模型。
-
重点概念:
- 监督学习: 线性回归、逻辑回归(逻辑回归是理解分类任务的基础)、SVM(了解核函数思想)。
- 神经网络: 多层感知机(MLP)、激活函数(ReLU, Sigmoid)、损失函数(MSE, Cross-Entropy)。
- 优化算法: 梯度下降(SGD)、Adam、反向传播(Backpropagation)。
- 评估指标: Accuracy, Precision, Recall, F1-score。
-
动手实现:
- 使用
scikit-learn实现逻辑回归处理简单数据集。 - 手写一个简单的梯度下降过程,理解参数是如何更新的。
- 使用
-
资料:
- 机器学习: 黑马程序员3天快速入门python机器学习 【可能有点长,10小时左右】
- 深度学习: 《深度强化学习(中文版-彩色压缩)》【第一章 1.1-1.7 节(1-21页推荐看完);1.8-1.10 节(可以后面看)】
- Transformer: 一小时从函数到 Transformer 【1小时左右,可以看看】
第二阶段:PyTorch 实战进阶(1 周)
推荐资源: B站“小土堆”《PyTorch深度学习快速入门教程》。【10小时左右,全部看完】
-
必修模块:
- Tensor 操作: 创建、维度变换(reshape/squeeze)、矩阵乘法。
- 数据加载:
Dataset和DataLoader的重写(这是联邦学习分发数据的核心)。 - 模型搭建:
nn.Module的结构。 - 训练流程: 定义优化器、Loss、写训练 Loop。
- GPU 训练:
.to(device)的用法。【没用 GPU 的话可以试试 Google Colab】
-
作业:
- 完整实现一个 CNN 网络训练 CIFAR-10 数据集。
- 进阶练习(非常重要): 尝试把 CIFAR-10 手动切分成 10 份,模仿 10 个客户端的数据分布。
第三阶段:联邦学习核心原理与经典论文(1-2 周)
目标: 理解 FL 的工作流:本地训练 -> 参数上传 -> 服务器聚合 -> 下发更新。
【注:此阶段建议与第四阶段一同学习】
-
必读经典:
- a. FedAvg (2017): Communication-Efficient Learning of Deep Networks from Decentralized Data (FL开山之作)。
- b. FLTrust (2020): Byzantine-robust Federated Learning via Trust Bootstrapping (重点看引入 Root Dataset 解决信任问题)。
- c. BFLC (2022): Blockchain-Based Federated Learning with Committee Consensus
-
核心技能点:
- 实验设计: 什么是 Round(通信轮数)?什么是 Local Epoch(本地训练轮数)?
- 数据分布 (Non-IID): 学习如何用 Dirichlet 分布 或 标签切分 (Shards) 构造非独立同分布数据。
-
代码实践:
- 手动实现简易 FedAvg: 不要用成熟框架(如 Flower),先用纯 PyTorch 写一个 Server 类和 Client 类,手动传输模型
state_dict。
- 手动实现简易 FedAvg: 不要用成熟框架(如 Flower),先用纯 PyTorch 写一个 Server 类和 Client 类,手动传输模型
第四阶段:攻击、防御与鲁棒性(1-2 周)
目标: 掌握“投毒”与“防御”的博弈。
-
攻击方式 (Attacks):
- 数据投毒 (Data Poisoning): 翻转标签(Label Flipping)。
- 模型投毒 (Model Poisoning): 恶意上传极大或随机的权重。
- 后门攻击 (Backdoor Attacks): 在特定像素位置添加触发器。
-
防御算法 (Robust Aggregation):
- Krum / Multi-Krum: 核心思想是选出与其他模型“距离”最接近的模型,剔除离群点。
- Trimmed Mean / Median: 基于坐标轴的中位数或修剪平均值聚合。
- Bulyan: 结合了 Krum 和 Trimmed Mean,进一步增强鲁棒性。
-
论文建议:
实验与数据集建议
- 数据集:
- 入门:MNIST, CIFAR-10。
- 进阶:FEMNIST (LEAF 库中的联邦学习专属数据集)。
- 数据划分 (Non-IID):
- 手写一个 Python 函数,输入 α \alpha α 参数,利用
numpy.random.dirichlet实现不同程度的数据偏斜。
- 手写一个 Python 函数,输入 α \alpha α 参数,利用
- 对比实验设计:
- Baseline 1: 集中式训练 (Centralized)。
- Baseline 2: 原始 FedAvg 在 IID 数据下。
- Baseline 3: 原始 FedAvg 在 Non-IID 数据下(观察准确率掉多少)。
- Attack 实验: 在有恶意用户(如 20% 的节点投毒)时,对比 FedAvg 与 Krum/FLTrust 的表现。
“做联邦学习,首先要学会‘分’数据,其次要学会‘聚’参数。不要急着跑大型框架,先把 FedAvg 的双层循环(外层轮数,内层客户端)用 PyTorch 自己写一遍。等你手动实现了 Krum 剔除掉那个恶意的参数字典时,你就真的入门了。”
更多推荐


所有评论(0)