论文简介
- 论文名称:Federated semi-supervised learning with inter-client consistency & disjoint learning
- 作者:Yaodong Yu, 加州大学伯克利分校
- 论文链接:https://arxiv.org/abs/2006.12097
- 论文来源:ICLR 2021
论文贡献
个人感觉这篇论文最大的贡献就是定义了联邦半监督学习(FSSL)这一问题。
针对两种联邦学习客户端存在的客户端不完全标记情况:
- client的数据被部分标记
- client的数据完全没有标记,只有server上有标记数据
这篇论文最大的创新点就是他论证了统一模型分别进行监督学习和无监督学习后会导致知识遗忘,然后把模型参数隔离成两部分,以此来保证监督学习和无监督学习的知识不会相互影响。
提出了联邦半监督学习(FSSL)的框架FedMatch,结合了客户端内部的一致性(inter-client consistency)以及标记数据和未标记数据之间的不相交学习(disjoint learning)。
(补充知识)半监督学习的目标
半监督学习的目标是训练一个模型,使得模型的最终损失最小:
$$ l_{final}(\theta) = l_s{\theta} + l_u(\theta) $$
其中$l_s{\theta}$是标注数据集$S$上的监督学习损失,$l_u{\theta}$是未标注数据集$U$上的无监督学习损失。
联邦匹配(Federated Matching, FedMatch)
客户端间一致性损失

客户间一致性正则化的过程图
他的这个想法还是基于一致性正则化:
- 根据客户端的相关性,给每个客户端选出几个最相关$H$个的客户端当做辅助代理(helper agents)。
- 把样本在本地模型和辅助代理的模型上都跑一遍,剔除置信度低于阈值$\tau$的client,然后标记伪标签$\hat{y}$。
- 用伪标签$\hat{y}$算CE。
每当服务器更新了客户端的权重以后,服务器会更新所有本地模型的嵌入(embedding),创建一个KD树,给客户端选择出H个辅助代理。作者设定每10轮更新一次辅助代理,如果某个客户端上模型一直没有更新权重,则跳过给这个服务器更新辅助代理。
不相交学习的参数分解
在传统的SSL中,对已标记数据和未标记数据的学习是通过共享参数来实现的。但作者指出,这种方法并不适用于不相交学习(disjoint learning)的场景,也就是标签只存在于服务器端的场景,如下图:

而且作者后面通过实验还发现这种方法还会造成对已标记数据的知识的遗忘。
作者把模型的参数$\theta$分解成两部分,一部分$\theta$用来做监督学习,另一部分$\psi$做无监督学习。
监督学习训练$\theta$的时候,做以下损失函数:

星号* 代表fixed的参数
无监督学习训练$\psi$的时候,做以下损失函数:

上面的损失函数添加了L2正则和L1正则,让$\psi$变得稀疏,这样可以让$\psi$远离$\theta$学到的知识,防止知识混淆。
标签在客户端的情形
问题定义:客户端间歇性的注释其本地数据的一小部分。

客户端只训练一次监督学习的参数$\theta$,每10轮(作者指定的)训练一次无监督学习的参数$\psi$。
标签在服务器的情形
问题定义:只有服务器上有专家标注的的数据,客户端都是无标记数据。这种情况在实际情况中更常见。

- 全局模型$G$现在标记数据$S^G$上训练参数$\theta$。
- 每轮活跃的客户端在本地的未标记数据上训练$\psi$,把学到的知识$\psi$上传到服务器。
- 服务器根据模型的相似性嵌入本地模型,创建一个KDTree来最近邻搜索跟每个客户端最相似的$H$个模型作为辅助代理。
实验验证
作者分别在Batch-IID,Batch-NonIID,Streaming-NonIID三个情况上进行了验证,每个情况分别验证Labels-at-Client和Labels-at-Server两种场景。
三种情况的构造过程略过。
准确率对比

这个方法对于Labels-at-Client的情况的准确率提升还是很明显的,同时也加速了前期收敛的速度。
而对于Labels-at-Server的情况,有一个很有意思的情况就是其他的baseline随着通信轮数的增加,准确率反而下降了,根据导师的解释,很有可能是因为伪标签的质量欠佳,类似于噪声标签学习,一开始学的时候对噪声不敏感,越往后就开始对噪声过拟合了。作者的“参数分解”方法更多的还只是抑制了模型对低质量伪标签的过拟合,后期其实并没有什么提升。
消融实验

从(b)可以看到参数分解的威力真的是非常大,对模型的提升效果很明显,而一致性损失相比来说就没那么亮眼。
另外(d)也有一个很神奇的现象,对于Labels-at-Client情景,随着各client已知标签的数量增加,一些baseline的训练效果不升反降。作者也没有说清楚原因。
Comments | NOTHING