摘要:
联邦学习的异质数据(data heterogeneity)指客户本地数据分布不一致。为了解决这个问题,本文首先研究它如何影响全局聚合模型的特征。作者发现异质数据导致全局模型遭受严重的维度坍塌(dimensional collapse), 导致特征趋于到一个低维空间(lower-dimensional space)。不仅如此,作者发现客户本地训练的模型有同样的问题(维度坍塌),因此推断全局模型发生的问题源自于客户的本地训练。此外,作者分析gradient flow dynamics来解释本地模型为什么会发生维度压缩问题。为了解决这个问题,作者提出FEDDECORR,通过在本地训练中引入正则项(regularization term)促使不同维度的特征失去关联(to be uncorrelated)。代码链接https://github.com/bytedance/FedDecorr
1.引言
本文聚焦标签分布异质,研究模型的特征空间和异质数据的影响。
我对本文的核心维度坍塌(dimensional collapse)的理解:特征很多维度的值趋于0,这样特征就像趋于一个低维空间,使得模型简化了。
2.相关工作
Federated Learning.
Dimensional Collapse. 本文是第一个研究联邦学习与维度坍塌相结合的工作。
Gradient Flow Dynamics.
Feature Decorrelation.
3.DIMENSIONAL COLLAPSE CAUSED BY DATA HETEROGENEITY
这图啥意思呢:将特征所有维度的值按从大到小的顺序排,横轴k指的就是第k个的值。如果我们横着画一条线,可以发现随着数据异质性的增大,满足比指定阈值大的维度特征数越来越少,代表比较小的值越来越多。
作者给出了分析,为什么数据异质性越强,会导致越多维度的特征值变小,进而发生坍塌现象。
其实按照作者的思路,理起来挺清晰的。主要是类别比例造成的影响。
4 MITIGATING DIMENSIONAL COLLAPSE WITH FEDDECORR
看不懂式子的含义,大概理清了他的缘由
5 EXPERIMENTS
从0.5以后,提升就基本没了
对于TinyImagnet,作者表示可能这个数据集本身就很异质,即使同分布也会坍塌(自圆其说呗)
6 CONCLUSION
这篇论文作者通过经验观察与理论分析研究了异质数据下联邦学习中用户本地训练模型的特征坍塌问题,基于此提出了方法来缓解造成的坍塌问题。实验结果证明了该方法的有效性。
核心代码(看不懂)
import torch
import torch.nn as nn
class FedDecorrLoss(nn.Module):
def __init__(self):
super(FedDecorrLoss, self).__init__()
self.eps = 1e-8
def _off_diagonal(self, mat):
# return a flattened view of the off-diagonal elements of a square matrix
n, m = mat.shape
assert n == m
return mat.flatten()[:-1].view(n - 1, n + 1)[:, 1:].flatten()
def forward(self, x):
N, C = x.shape
if N == 1:
return 0.0
x = x - x.mean(dim=0, keepdim=True)
x = x / torch.sqrt(self.eps + x.var(dim=0, keepdim=True))
corr_mat = torch.matmul(x.t(), x)
loss = (self._off_diagonal(corr_mat).pow(2)).mean()
loss = loss / N
return