联邦学习里最常见的“体感问题”是:训练能跑,但效果忽高忽低。
根因通常是 Non-IID,也就是各参与方的数据分布差异很大。
Non-IID 为什么难
在中心化场景下,随机小批量通常能较好近似总体分布。
但联邦学习中,不同客户端可能只见到某些类别、某些年龄段或某些场景,导致每次本地更新方向差异很大。
聚合后就容易出现:
- 收敛慢
- 局部震荡
- 全局模型在部分域上退化
算法侧的缓解思路
常见策略包括:
- 在本地目标中加入约束,减少偏离全局方向
- 调整本地训练轮次,避免单端更新过强
- 使用个性化联邦学习,让共享层和私有层并存
这些方法本质都是在平衡“全局一致性”和“本地适应性”。
工程侧往往更立竿见影
很多团队一上来就改算法,但工程治理没跟上,效果仍不稳定。
建议先做这几件事:
- 客户端分桶采样:让每轮参与方覆盖更均衡
- 动态加权聚合:结合样本规模和历史质量评分
- 异常更新过滤:对极端梯度更新做裁剪或剔除
这些措施通常能快速改善训练波动。
评估指标要看“分布内 + 分布外”
只看单一全局指标容易误判。
更实用的评估框架是:
- 全局平均指标
- 分客户端/分人群指标
- 最差分组指标(worst-group)
如果全局平均提升但最差分组显著下降,模型在真实业务中大概率会引发体验不一致。
小结
Non-IID 不会被一次性“消灭”,它是联邦学习的常态。
更现实的目标是建立一套持续缓解机制,让系统在异质数据下依然稳定演进。