这篇论文是亚利桑那州立大学的Jingtao Li发表在ICLR2023上的,并接收为了Oral Paper,主要探讨联邦自监督学习在边缘设备上的解决方案。
题目:MocoSFL: enabling cross-client collaborative self-supervised learning
链接:https://openreview.net/pdf?id=2QGJXyMNoPz
研究背景
目前协作学习中,由于标记数据需要专业知识和时间投入,对于普通用户很难执行。针对目前协作学习中数据标注的难题,现有的方法是进行联邦自监督学习。
去年ICLR有一篇将联邦自监督的论文: https://openreview.net/forum?id=oVE1z8NlNe
利用发散感知聚合技术缓解了non-iid问题,并取得了SOTA精度。这种方法解决了企业数据孤岛的问题,但由于它对于计算资源以及本地数据量的严苛要求,因此很难实现跨用户的联邦自监督。
论文的思路:舍弃FedAvg框架,将Split Federated Learning(SFL)和Momentum Contrast(MoCo)对比学习技术,以实现低成本的跨用户联邦自监督学习。
先前的重要工作
Moco简介
BYOL、SimCLR 等方案使用当前 batch 中的其他样本作为负键(negative keys)来进行对比学习。与这些方案不同,MoCo(He2020CVPR [2])使用先前计算的正键输出作为负键,并将它们存储在特征内存中以供将来的迭代使用。这种存储负键的机制使得 MoCo 的 batch size 要求相对较小,有利于减少设备内存,也易于实现特征共享。对于损失函数,MoCo依靠Info NCE损失作为对比机制:

其中,查询键$Q$和正键$K+$是由图像的两个增广视图在目标模型(Online Model)和动量模型(Momentum Model)的输出向量。$N$表示大小为$M$的特征内存中的所有负键。重要的是,MoCo方案的成功在很大程度上取决于其负键的“难度”,这可以通过(在第$t$次迭代)与 之间的相似度(内积)来确定;相似度越小,其“难度”越高。
负键的“难度”会因为模型更新而迅速降低。因此,MoCo 采用一个变化缓慢的动量模型,在每个训练步骤结束时产生一致(consistent)的负键,来维护负键的“难度”。
Split Federated Learning
AAAI 2022的一篇论文:
https://ojs.aaai.org/index.php/AAAI/article/view/20825
该论文提出了Split Federated Learning(SFL),结合了卸载和联邦学习FedAvg,以“割裂层”为界,将原始模型架构分成2部分:
- 包含“割裂层”及其之前所有层的用户端模型
- 包含其余层的服务器端模型
将用户端模型的副本分发到用户端的本地设备上,然后在云服务器上实例化服务器端模型。Clients需要将潜向量(Latent Vector)即用户端模型的输出发送给Server端,然后由Server端模型处理潜向量,计算损失并执行反向传播,然后将梯度传回给Clients。经过多轮迭代以后,所有用户端模型会由Server端进行类似FedAvg的聚合过程。
对计算资源的要求
本地训练自监督模型需要庞大的计算资源。传统的监督学习可以采用精简的小模型或者剪枝来节约计算资源,但该方法不适合自监督学习,因为其对模型容量(capacity)的要求更高。
已经有研究表明,要训练一个高精度的自监督模型,需要很大的模型,对内存要求非常高。而为了减小内存,通常会使用较小的批处理量。但是作者进行了实验,在自监督学习中,使用更小的批大小会大大降低准确度。

改进框架 MocoSFL
文章的方法就是将MoCo-V2和SFL结合起来。

- 每次训练过程中,先将Clients端发送latent vector合并起来,看成一个大的batch,有服务器端模型一并处理,以此支持用户端小批量训练
- 使用一个共享的特征存储器,在每个训练步骤中由所有用户端提供的正键来更新,以达成负键的共享。
- 通过使用更高的同步频率来减小用户端模型的差异,提高模型在non-iid数据上的性能。
优点:
- 对本地设备的内存要求低
- 降低了同步的通信成本,并且提高了同步频率
- 存储负键,便于用户之间共享
- 对Batch Size的要求较低
实验结果
首先测试了non-iid数据下的精度情况:

然后测试了在ImageNet上的跨客户端精度:

作者的框架还针对TAResSFL数据安全问题进行了优化,优化后的MSE相对于优化前有了很大的提升,Inversion攻击提取的原始图像也变得很模糊。

左边是优化后的精度和inversion攻击的MSE,右边是攻击表现。
然后作者还对用户硬件资源进行了比较:

在一块树莓派的板子上就能跑起来

表评论8161
表评论3242
表评论8208
表评论7316
表评论6798
表评论2924