一、联邦学习简介
计算机视觉通过利用深度学习工具完成任务,然而,这需要大规模数据集来训练机器学习模型,这给集中式机器学习算法带来了挑战。处理所需的大量计算负载以及与在中央云服务器上存储和处理数据相关的潜在隐私风险使这些算法面临严重压力。为了解决这些问题,联邦学习(FL)作为一种很有前途的解决方案出现了,它允许通过在本地训练模型并交换模型来保护隐私,从而提高整体性能。此外,计算负载分布在多个客户机上,减少了中央服务器的负担。联邦学习最初是由谷歌在2016年提出的,用于预测用户在数万台Android设备上的文本输入,同时保留设备上的数据,旨在解决数据孤岛问题,同时保护数据隐私。它指的是多个客户端(如移动设备、机构、组织等)与一个或多个中央服务器协调,用于分散的机器学习设置。
官方介绍:https://pair.withgoogle.com/explorables/federated-learning/
注:google官方更希望利用更多的计算代价来减少通信代价。因为他们认为由于任何单个设备上的数据集与总数据集大小相比都很小,并且现代智能手机拥有相对较快的处理器(包括gpu),因此与许多模型类型的通信成本相比,计算基本上是免费的。因此,他们的目标是使用额外的计算来减少训练模型所需的通信轮数。
二、联邦学习分类
1 横向联邦学习HFL(Horizontal Federated Learning)
客户端使用各自的数据集训练一个共享的整体模型,这些数据集具有相同的特征空间,但样本空间不同,如下图所示。在这方面,本地FL参与者可以采用相同的模型来训练他们的数据集。然后,服务器在不访问本地数据的情况下,将本地客户端通信的本地更新组合在一起进行整体更新。
2 纵向联邦学习VFL(Vertical Federated Learning)
如下图所示,VFL在具有相同样本空间但不同特征空间的数据集上训练ML模型。在这种情况下,依赖于实体对齐的技术可以与加密结合使用,以克服本地训练期间分布式客户端的数据样本重叠问题。不同的客户可以在不共享数据(特征不同)的情况下合作训练他们的模型,只共享他们对共同样本的预测。
3 联邦迁移学习DTL(Federated Transfer Learning)
联邦迁移学习处理样本空间和特征空间中重叠有限的数据集,如下图所示。与VFL系统不同,可以在模型之间共享的公共样本和标签的数量很少,从而限制了它们在不同模型之间的可重用性。一个公共的传递空间用于映射不同的特征空间和交换知识。具体来说,采用迁移学习方法有助于从不同的特征空间中计算特征值,用于训练局部数据集[40],[10]。让我们考虑一个有N个参与方的场景,其中每个参与方i,其中i∈{1,2,…,N},有一个用Di表示的局部数据集和一个用Ti表示的任务。FTL的目标是联合训练一个利用从不同任务中学到的知识的全局模型。
三、聚合算法
在联邦学习中,聚合的方式起到了决定性的作用,聚合可以将各个客户端上传的本地模型更新(如权重、梯度)合并,生成新的全局模型,并且通过合理设计聚合函数,可以减少客户端和服务器之间的通信数据量。在数据分布不均衡的情况下,合理的聚合函数还能够平衡不同客户端的影响,提升全局模型的性能。同时,聚合函数能提高系统对恶意客户端或噪声数据的鲁棒性,确保全局模型的稳定性和可靠性,下面详细介绍联邦学习中的聚合算法。
1 联邦平均聚合(Federated Averaging)
顾名思义,在联邦平均算法中,服务器通过计算平均值来更新参数。第一步,服务器初始化训练模型的参数,对应的客户端收到参数后开始训练。之后,每个客户端对算法从训练数据集中选择的epoch使用SGD算法通过最小化局部损失函数进行局部训练。一旦接收到来自不同客户端的模型更新,服务器通过对接收到的梯度取平均值来最小化全局损失函数。联邦学习训练继续进行,直到全局损失函数收敛或达到理想的精度水平。联邦平均聚合是最常见也是最初的聚合函数,到目前为止以有许多变种,在此举例说明:
(1)截断均值(Trimmed Mean),该方法的核心思想是服务器收到每个模型的参数后,从大到小排列,根据指定的比例或数量(一般为前10%和后10%),去掉数据集中的一部分最小和最大值极端值,然后对剩下的值进行平均,这种方法可以有效抵御极端值和异常数据的干扰。
- 优点:减少异常值影响,提高数据的可靠性。
- 缺点:信息丢失,对数据规模敏感。
- 应用场景:统计分析,金融领域,医疗数据。
(2)联邦周期平均与量化(Federated Periodic Averaging and Quantization),与联邦平均聚合不同的是,中心服务器并不是每一轮都聚合一次,而是达到设定的周期后,各客户端再将本地模型参数发送到中心服务器进行聚合。并且将模型参数从高精度(如浮点数)转换为低精度(如整数)的过程,以减少通信带宽和存储需求。
- 优点:减少通信成本,提升效率。
- 缺点:精度损失,延迟问题,同步问题。
- 应用场景:大规模联邦学习系统,资源受限的设备,云服务和数据中心。
(3)联邦匹配平均(Federated Matched Averaging),FedMA旨在解决传统联邦平均算法在异构模型(不同结构的模型)上的局限性。首先初始化客户端模型,并在本地数据上进行训练。然后服务器接收客户端的模型后,进行层和神经元匹配。服务器根据匹配结果,对齐和聚合各个客户端的模型。然后将聚合后的全局模型分发给各个客户端。重复上述步骤,直到收敛。FedMA通过在联邦学习的上下文中匹配和对齐不同客户端的神经网络层,来实现更有效的模型聚合。
- 优点:提高模型性能,提高鲁棒性。
- 缺点:计算开销大。
- 应用场景:异质数据环境。
(4)涡轮聚合(Turbo-Aggregate),Turbo-Aggregate是一种旨在提高通信效率和安全性的聚合技术,在实现上一般分为两种。
第一种方式其主要机制包括多组循环策略和秘密共享机制。首先客户端被分成多个组,在每次迭代中,属于一个组的客户端将前一组中所有客户端的聚合模型更新和当前组的本地模型更新传输给下一组的客户端。这种方式确保每一组客户端都能接收到前一组的模型更新,从而实现高效的全局模型更新。其秘密共享机制分为随机性引入,隐私保护和随机性消失三个步骤:首先在每个本地模型中添加一些随机性,以保护客户端的数据隐私,然后通过随机性确保单个客户端的模型更新无法被直接推断,从而保护数据隐私。最后,设计的随机性在局部模型聚合时消失,确保全局模型更新的准确性。
第二种方式类似于后面介绍的加权平均聚合方式,TA同样会根据客户端模型的更新质量和数据分布的变化,动态调整每个客户端的聚合权重。并且采用分阶段的聚合方法,在不同的阶段对客户端模型进行不同程度的聚合处理,即初期进行粗略聚合,之后在进一步的阶段进行细化,确保最终模型更新的质量,以提高聚合效率。通过减少或压缩需要传输的模型参数量,优化通信效率,降低网络带宽的需求。
- 优点:提高训练效率,通信效率高。
- 缺点:计算开销大。
- 应用场景:大规模联邦学习,无线网络拓扑中客户端和网络条件快速变化这类需要快速收敛的应用环境。
(5)分层联邦平均(Hierarchical Federated Averaging),HFA原理很简单,即将客户端分组,每组包含较少数量的客户端,这样可以有效减少每一轮聚合过程中的通信负担。组长节点收到组内所有的模型参数后进行平均聚合,然后各组的组长节点将聚合后的模型参数发送到中心服务器或上一级组长节点。中心服务器或上一级组长节点再对所有组长节点传来的聚合模型参数进行进一步的聚合,得到全局模型参数。最终中心服务器将更新后的全局模型参数广播回所有客户端,开始下一轮训练。HierFavg适合在客户端数量非常多的情况下使用。
- 优点:通信效率高,缩短训练时间。
- 缺点:复杂性增加,延迟问题。
- 应用场景:大规模联邦学习。
2 加权平均(Weighted Averaging)
加权平均考虑了不同客户端的数据量和重要性,为每一个客户端分配一个权重值,所有客户端的权重和模型参数都计算完毕后会传递给中心服务器,服务器将这些参数和权重值相乘并求和再取平均,所得值回传给所有客户端用以下一轮训练,直至整个流程结束。在这基础上,一般使用联邦动态平均聚合函数(DW-FedAvg),初始化权重后,服务器每个epoch会根据各个客户端本轮模型的效果重新分配新的权值。
- 优点:提高模型性能,防止拜占庭错误。
- 缺点:通信开销增加。
- 应用场景:数据不均衡,异构环境。
3 中位数聚合(Median aggregation)
服务器收到所有客户端的参数后,取其中位数作为新一轮全局模型的参数,这样可以有效抵抗异常值的影响,例如出现负值、0值、极大值等。但是对于数据集本身分布较均匀的情况,中位数聚合就没法充分利用每个客户端的所有信息。
4 克鲁姆聚合(Krum aggregation)
Krum 方法是一种专门设计用于防御恶意客户端攻击的聚合算法。服务器收到所有客户端的参数后,计算每个客户端模型参数与其他客户端模型参数的欧几里得距离,例如对于两个模型参数向量
Δ
w
i
,
Δ
w
j
\Delta w_i,\Delta w_j
Δwi,Δwj,它们之间的欧几里得距离公式为:
d
i
j
=
∑
k
=
1
n
(
Δ
w
i
,
k
−
Δ
w
j
,
k
)
2
d_{ij} = \sqrt{ \sum_{k=1}^{n} (\Delta w_{i,k} - \Delta w_{j,k})^2 }
dij=k=1∑n(Δwi,k−Δwj,k)2
然后选择具有最小距离总和的客户端模型参数作为全局模型。在这基础上演变出了布尔扬聚合算法(Bulyan aggregation),它是 Krum 的改进版,通过多轮筛选即多次应用 Krum 算法来选择候选更新,然后对这些候选更新进行进一步的修剪和平均,最终生成全局模型更新,进一步增强了对恶意客户端的防御能力。
- 优点:有效地排除恶意或噪声数据的影响。
- 缺点:对异常的容忍度有限。
- 应用场景:易受攻击环境。
5 渐进傅里叶聚合(Progressive Fourier aggregation)
PFA在联邦学习中使用傅里叶变换,主要是为了提高聚合过程的效率和隐私保护。其核心思想是利用傅里叶变换的数学特性来优化数据传输和聚合步骤。通过在频域内处理更新,可以有效去除噪声(这里一般指计算误差,通信误差,冗余信息和不相关的特征等)和异常值,从而增强模型的鲁棒性。并且在频域内聚合简化了计算过程(例如仰将数据压缩到较少的频域系数),提高聚合效率。具体步骤如下:
1.服务器收到所有客户端的参数后,对收到的每个客户端更新应用傅里叶变换:
假设有两个模型参数向量 w1=[2,1,0,−1],w2=[1,2,−1,0],使用离散傅里叶变换(DFT)将模型参数从时域转换到频域计算公式:
w
^
k
=
∑
n
=
0
N
−
1
w
n
e
−
i
2
π
k
n
/
N
for
k
=
0
,
1
,
…
,
N
−
1
\hat{\mathbf{w}}_k = \sum_{n=0}^{N-1} \mathbf{w}_n e^{-i 2 \pi k n / N} \quad \text{for } k = 0, 1, \ldots, N-1
w^k=n=0∑N−1wne−i2πkn/Nfor k=0,1,…,N−1
w
^
1
[
0
]
=
2
+
1
+
0
+
(
−
1
)
=
2
\hat{\mathbf{w}}_1[0]=2+1+0+(−1)=2
w^1[0]=2+1+0+(−1)=2,
w
^
2
[
0
]
=
1
+
2
+
(
−
1
)
+
0
=
2
\hat{\mathbf{w}}_2[0]=1+2+(−1)+0=2
w^2[0]=1+2+(−1)+0=2
w
^
1
[
1
]
=
2
−
i
⋅
1
+
0
+
i
⋅
(
−
1
)
=
2
−
2
i
\hat{\mathbf{w}}_1[1]=2−i⋅1+0+i⋅(−1)=2−2i
w^1[1]=2−i⋅1+0+i⋅(−1)=2−2i,
w
^
2
[
1
]
=
1
−
i
⋅
2
+
0
+
i
⋅
1
=
1
−
i
\hat{\mathbf{w}}_2[1]=1−i⋅2+0+i⋅1=1−i
w^2[1]=1−i⋅2+0+i⋅1=1−i
w
^
1
[
2
]
=
2
+
(
−
1
)
=
1
\hat{\mathbf{w}}_1[2]=2+(−1)=1
w^1[2]=2+(−1)=1,
w
^
2
[
2
]
=
1
+
(
−
1
)
=
0
\hat{\mathbf{w}}_2[2]=1+(-1)=0
w^2[2]=1+(−1)=0
w
^
1
[
3
]
=
2
+
i
⋅
1
+
0
−
i
⋅
(
−
1
)
=
2
+
2
i
\hat{\mathbf{w}}_1[3]=2+i⋅1+0−i⋅(−1)=2+2i
w^1[3]=2+i⋅1+0−i⋅(−1)=2+2i,
w
^
2
[
3
]
=
1
+
i
⋅
2
+
0
−
i
⋅
1
=
1
+
i
\hat{\mathbf{w}}_2[3]=1+i⋅2+0-i⋅1=1+i
w^2[3]=1+i⋅2+0−i⋅1=1+i
w
^
1
=
[
2
,
2
−
2
i
,
1
,
2
+
2
i
]
\hat{\mathbf{w}}_1=[2,2−2i ,1,2+2i]
w^1=[2,2−2i,1,2+2i],
w
^
2
=
[
2
,
1
−
i
,
0
,
1
+
i
]
\hat{\mathbf{w}}_2=[2,1−i ,0,1+i]
w^2=[2,1−i,0,1+i]
2. 在频域内对转换后的更新进行处理,如滤波、去噪、异常检测等操作,以增强更新的鲁棒性。对多个客户端的频域参数进行聚合(这一步可以包括对频率成分的加权平均或其他聚合操作),这里拿计算均值举例:
计算公式:
w
^
agg
=
1
M
∑
m
=
1
M
w
^
m
计算公式:\hat{\mathbf{w}}_{\text{agg}} = \frac{1}{M} \sum_{m=1}^{M} \hat{\mathbf{w}}_m
计算公式:w^agg=M1m=1∑Mw^m
得到结果:
w
^
agg
=
[
2
,
3
−
3
i
2
,
1
2
,
3
+
3
i
2
]
\hat{\mathbf{w}}_{\text{agg}}=[2,\frac{3-3i}{2},\frac{1}{2},\frac{3+3i}{2}]
w^agg=[2,23−3i,21,23+3i]
3. 使用逆离散傅里叶变换(IDFT)将聚合后的频域参数转换回时域,使用聚合后的更新来更新全局模型:
计算公式:
w
agg
,
n
=
1
N
∑
k
=
0
N
−
1
w
^
agg
,
k
e
i
2
π
k
n
/
N
for
n
=
0
,
1
,
…
,
N
−
1
计算公式:\mathbf{w}_{\text{agg}, n} = \frac{1}{N} \sum_{k=0}^{N-1} \hat{\mathbf{w}}_{\text{agg}, k} e^{i 2 \pi k n / N} \quad \text{for } n = 0, 1, \ldots, N-1
计算公式:wagg,n=N1k=0∑N−1w^agg,kei2πkn/Nfor n=0,1,…,N−1
- 优点:减少噪声影响。
- 缺点:对异常的容忍度有限。
- 应用场景:易受攻击环境。
注1:傅里叶级数用于将周期信号分解为正弦和余弦函数的和。对于一个周期为 T的周期信号 f(t),其傅里叶级数表示为:
f
(
t
)
=
a
0
+
∑
n
=
1
∞
(
a
n
cos
(
2
π
n
t
T
)
+
b
n
sin
(
2
π
n
t
T
)
)
f(t) = a_0 + \sum_{n=1}^{\infty} \left( a_n \cos \left( \frac{2\pi n t}{T} \right) + b_n \sin \left( \frac{2\pi n t}{T} \right) \right)
f(t)=a0+n=1∑∞(ancos(T2πnt)+bnsin(T2πnt))
其中
a
0
=
1
T
∫
0
T
f
(
t
)
d
t
a_0 = \frac{1}{T} \int_{0}^{T} f(t) \, dt
a0=T1∫0Tf(t)dt,
a
n
=
2
T
∫
0
T
f
(
t
)
cos
(
2
π
n
t
T
)
d
t
a_n = \frac{2}{T} \int_{0}^{T} f(t) \cos \left( \frac{2\pi n t}{T} \right) dt
an=T2∫0Tf(t)cos(T2πnt)dt,
b
n
=
2
T
∫
0
T
f
(
t
)
sin
(
2
π
n
t
T
)
d
t
b_n = \frac{2}{T} \int_{0}^{T} f(t) \sin \left( \frac{2\pi n t}{T} \right) dt
bn=T2∫0Tf(t)sin(T2πnt)dt
注2:但是现实中往往我们面对的不是周期性信号,但其实我们可以将其看作是周期无穷大的信号,傅里叶变换就是用于将非周期信号从时域转换到频域。对于一个信号 f(t),其傅里叶变换(FT) F(ω)表示为:
F
(
ω
)
=
∫
−
∞
∞
f
(
t
)
e
−
i
ω
t
d
t
F(\omega) = \int_{-\infty}^{\infty} f(t) e^{-i \omega t} \, dt
F(ω)=∫−∞∞f(t)e−iωtdt
若f(t)不含有ω成分,则F(ω)=0,反之不等于0。因为f(t)同样可以看做是一大堆正余弦信号的组合,使用正交基(1,sinnwt,cosnwt)与其内积,这样就将含有ω成分的部分提取出来。F(ω)是一个复数,实部反映了信号中的余弦分量,虚部反映了信号中的正弦分量,这两个分量结合起来描述了信号在不同频率下的幅度和相位信息。
傅里叶逆变换IFT用于将频域信号转换回时域,其公式为:
f
(
t
)
=
1
2
π
∫
−
∞
∞
F
(
ω
)
e
i
ω
t
d
ω
f(t) = \frac{1}{2\pi} \int_{-\infty}^{\infty} F(\omega) e^{i \omega t} \, d\omega
f(t)=2π1∫−∞∞F(ω)eiωtdω
对于模型参数这类离散变量来说,离散傅里叶变换(DFT):
X
[
k
]
=
∑
n
=
0
N
−
1
x
[
n
]
e
−
i
2
π
N
k
n
X[k] = \sum_{n=0}^{N-1} x[n] e^{-i \frac{2\pi}{N} kn}
X[k]=n=0∑N−1x[n]e−iN2πkn
逆离散傅里叶变换(IDFT):
x
[
n
]
=
1
N
∑
k
=
0
N
−
1
X
[
k
]
e
i
2
π
N
k
n
x[n] = \frac{1}{N} \sum_{k=0}^{N-1} X[k] e^{i \frac{2\pi}{N} kn}
x[n]=N1k=0∑N−1X[k]eiN2πkn
注3:傅里叶变换建立在欧拉公式的基础上,欧拉公式:
e
i
θ
=
cos
(
θ
)
+
i
sin
(
θ
)
e^{i\theta} = \cos(\theta) + i\sin(\theta)
eiθ=cos(θ)+isin(θ)
当 θ=π 时,就是著名的数学中最美公式:
e
i
π
=
−
1
e^{i\pi} = -1
eiπ=−1
注4:傅里叶变换的原理参见:
https://zhuanlan.zhihu.com/p/19763358
6 联邦梯度-知识传输(Federated Gradient-Knowledge Transfer)
FedGKT是一种联邦学习中的聚合方法,旨在解决设备间计算和通信资源不平衡的问题。FedGKT通过知识蒸馏(Knowledge Distillation)和梯度传输(Gradient Transfer)相结合的方式,实现不同计算能力设备间的高效联邦学习。各客户端在本地设备上使用较小的子模型进行训练,并生成本地梯度,然后将本地训练得到的子模型预测结果(软标签)上传到服务器。服务器收集所有客户端的预测结果,使用这些预测结果对全局模型进行更新,同时根据客户端上传的梯度信息对全局模型进行更新,然后使用全局模型和客户端模型进行知识蒸馏。客户端将其本地模型的输出作为教师模型,服务器上的全局模型作为学生模型,进行蒸馏训练,所用公式为:
L
distill
=
∑
i
=
1
N
L
KL
(
T
i
,
S
)
\mathcal{L}_{\text{distill}} = \sum_{i=1}^{N} \mathcal{L}_{\text{KL}}(T_i, S)
Ldistill=i=1∑NLKL(Ti,S)
其中,
L
distill
\mathcal{L}_{\text{distill}}
Ldistill 是知识蒸馏损失,
L
KL
\mathcal{L}_{\text{KL}}
LKL 是 Kullback-Leibler 散度(也称为相对熵,是一种量化两种概率分布之间差异的方式,常用于生成模型和模型优化中的损失函数),
T
i
T_i
Ti是第
i
i
i个客户端的教师模型输出,
S
S
S是学生模型输出(全局模型)。服务器使用聚合的梯度和知识蒸馏损失来更新全局模型参数:
θ
global
←
θ
global
−
η
(
g
agg
+
∇
θ
L
distill
)
\theta_{\text{global}} \leftarrow \theta_{\text{global}} - \eta (\mathbf{g}_{\text{agg}} + \nabla_{\theta} \mathcal{L}_{\text{distill}})
θglobal←θglobal−η(gagg+∇θLdistill),η是学习率。
- 优点:有效提升性能,适应性强。
- 缺点:计算、通信开销增加。
- 应用场景:医疗领域、交通领域这类数据异质性和客户端设备之间存在差异的情况下。
注1:所谓知识蒸馏,是一种知识转移技术,通过将复杂模型的知识转移到较简单的模型中,以提升较简单模型的性能。一个学生模型从教师模型中学习,需要先使用教师模型对训练数据进行预测,生成所谓的“软标签”。软标签是指教师模型输出的概率分布,而不仅仅是硬标签(即类别标签),然后学生模型使用软标签和原始标签来训练。学生模型通过最小化与教师模型生成的软标签之间的差异来学习,所用损失函数为:
L
distill
=
α
L
ce
(
p
s
,
y
)
+
(
1
−
α
)
L
kl
(
p
s
,
p
t
)
L_{\text{distill}}=αL_{\text{ce}}(p_s,y)+(1−α)L_{\text{kl}}(p_s,p_t)
Ldistill=αLce(ps,y)+(1−α)Lkl(ps,pt)
α是权重系数,控制分类损失和蒸馏损失在总损失中的相对重要性。
L
c
e
L_{ce}
Lce 是交叉熵损失(即传统的监督学习损失函数,常用于分类问题),用于比较学生模型输出
p
s
p_s
ps与真实标签
y
y
y之间的差异。
L
k
l
L_{kl}
Lkl同样是 KL 散度,用于比较学生模型输出
p
s
p_s
ps与教师模型输出
p
t
p_t
pt之间的差异。故有些联邦学习会将中心服务器设置为教师模型,客户端设置为学生模型,这些客户端从服务器学习知识。
注2:两个离散概率分布
P
=
p
(
x
)
和
Q
=
q
(
x
)
P={p(x)}和Q={q(x)}
P=p(x)和Q=q(x),其KL散度:
D
K
L
(
P
∥
Q
)
=
∑
x
p
(
x
)
log
p
(
x
)
q
(
x
)
D_{KL}(P \parallel Q) = \sum_{x} p(x) \log \frac{p(x)}{q(x)}
DKL(P∥Q)=x∑p(x)logq(x)p(x)
两个连续概率分布
p
(
x
)
和
q
(
x
)
p(x)和q(x)
p(x)和q(x),其KL散度:
D
K
L
(
p
∥
q
)
=
∫
−
∞
∞
p
(
x
)
log
p
(
x
)
q
(
x
)
d
x
D_{KL}(p \parallel q) = \int_{-\infty}^{\infty} p(x) \log \frac{p(x)}{q(x)} \, dx
DKL(p∥q)=∫−∞∞p(x)logq(x)p(x)dx
7 联邦匹配平均(Federated Matched Averaging)
FedMA是一种联邦学习算法,旨在解决传统联邦平均算法在异构模型(不同结构的模型)上的局限性。首先初始化客户端模型,并在本地数据上进行训练。然后服务器接收客户端的模型后,通过比较不同客户端的模型层和神经元之间激活值和权重向量的相似性来确定匹配关系。为了确定哪些神经元可以匹配,FedMA首先会在每个客户端的模型层中对神经元进行聚类。这通常使用某种聚类算法,如K-means,以便在每个层中找到代表性神经元簇。在完成聚类之后,FedMA会对聚类的中心进行比较,以找到不同客户端之间相似的神经元簇。匹配过程一般分为以下几步:
- 计算相似性矩阵:为每对客户端的每一层神经元簇计算相似性矩阵,矩阵的每个元素表示两个簇之间的相似性。
- 优化匹配关系:使用匈牙利算法等优化算法来确定最优匹配关系,使得总体相似性最大化。
- 服务器根据匹配结果,对齐和聚合各个客户端的模型。然后将聚合后的全局模型分发给各个客户端。重复上述步骤,直到收敛。
- 优点:改进训练效果。
- 缺点:计算复杂度增加。
- 应用场景:多任务学习,数据异质性环境。
8 联邦近端优化(Federated Proximal)
FedProx旨在解决联邦学习环境中的数据异质性(Non-IID)和客户端计算资源差异带来的挑战。它通过引入一个近端项(正则化项)限制本地模型与全局模型的差异,从而控制客户端训练过程中的漂移(drift)问题,即每个客户端在本地数据上进行模型训练,优化包含近端项的目标函数:
w
k
(
t
+
1
)
=
arg
min
w
[
f
k
(
w
)
+
μ
2
∥
w
−
w
(
t
)
∥
2
]
w_k^{(t+1)} = \arg \min_{w} \left[ f_k(w) + \frac{\mu}{2} \| w - w^{(t)} \|^2 \right]
wk(t+1)=argwmin[fk(w)+2μ∥w−w(t)∥2]
f
k
(
w
)
f_k(w)
fk(w) 是客户端
k
k
k 上的本地损失函数、
w
w
w是本地模型参数、
w
(
t
)
w^{(t)}
w(t) 是全局模型在第
t
t
t轮的参数、
μ
\mu
μ 是一个正的超参数,用于控制近端项的权重、
∥
w
−
w
(
t
)
∥
2
\| w - w^{(t)} \|^2
∥w−w(t)∥2是表示本地模型与全局模型差异的二次惩罚项(模型参数与全局模型参数之间的欧几里得距离的平方)。
通过上述公式更新本地模型参数,最后将其上传给服务器进行聚合,从而减少模型更新过程中的偏差,提高联邦学习在非独立同分布(Non-IID)数据和异构设备环境中的稳定性和效果。类似FedProx的还有FedAdam、FedYogi、FedOpt。原理相同,只是使用不同的优化算法。
- 优点:提高鲁棒性。
- 缺点:计算开销增加。
- 应用场景:无特定应用场景,FedProx旨在稳定性。
注:当我们写
m
i
n
f
(
x
)
minf(x)
minf(x) 时,我们关心的是函数 f(x)在其定义域内所能取得的最小值
当我们写
a
r
g
m
i
n
f
(
x
)
argminf(x)
argminf(x)时,我们关心的是哪个 x使得 f(x)取得最小值。
9 联邦表示学习(Federated Representation Learning)
表示学习是一种机器学习方法,它试图在数据中自动发现有用的特征,以便更有效地解决各种任务。表示学习将原始数据转化为易于处理的形式,这可以帮助模型更快地学习和更好地泛化。常见的表示学习技术例如自编码器(Autoencoder)、变分自编码器(VAE)、生成对抗网络(GAN)。而FedRep核心思想就是分离模型的表示层和分类层,以便在联邦学习环境中更好地处理数据异质性问题。表示层负责提取特征,是所有客户端共享的;分类层是每个客户端特有的,用于根据表示层提取的特征进行分类。初始化后,客户端首先固定表示层,仅训练本地的分类层,利用本地数据进行多轮迭代。然后固定分类层,使用本地数据更新表示层的参数,并将这些更新发送回服务器。服务器聚合来自所有客户端的表示层更新,更新全局表示层的参数。重复上述过程,直到模型收敛。
- 优点:充分利用分布在不同客户端的数据,提高模型的泛化能力。
- 缺点:需要处理数据异质性问题,数据隐私问题。
- 应用场景:同类数据机构合作训练。
10 联邦归一化平均(FedNova)
FedNova 主要解决的是在分布式学习环境中如何处理不同客户端的模型参数的标准化问题。其核心思想是对本地模型更新进行标准化,以便更好地整合来自不同客户端的更新。步骤如下。类似的还有联邦批归一化(Federated Batch Normalization)算法,FBN通过在每个客户端进行局部的批归一化,服务器汇总统计信息以更新全局批归一化参数。
- 客户端本地训练:
每个客户端 i 使用其本地数据集Di在全局模型 θ t \theta^t θt上进行本地训练,生成本地模型更新 Δ θ i t + 1 \Delta \theta_i^{t+1} Δθit+1更新公式为: Δ θ i t + 1 = θ i t + 1 − θ t \Delta \theta_i^{t+1} = \theta_i^{t+1} - \theta^t Δθit+1=θit+1−θt其中 θ i t + 1 \theta_i^{t+1} θit+1是客户端 i 在第 t 轮的本地模型参数, θ t \theta^t θt 是全局模型参数。 - 标准化本地更新:
将每个客户端的更新 Δ θ i t + 1 \Delta \theta_i^{t+1} Δθit+1按照客户端的训练步骤数进行标准化,以减少因训练轮数不同造成的更新偏差。标准化后的更新 Δ θ ~ i t + 1 \tilde{\Delta \theta}_i^{t+1} Δθ~it+1计算为: Δ θ ~ i t + 1 = Δ θ i t + 1 E i \tilde{\Delta \theta}_i^{t+1} = \frac{\Delta \theta_i^{t+1}}{E_i} Δθ~it+1=EiΔθit+1 其中 E i E_i Ei 是客户端 i 在本地训练过程中所经历的总梯度步数(例如,训练轮数 * 每轮的样本数)。 - 全局模型更新聚合:
服务器聚合所有客户端的标准化更新 Δ θ ~ i t + 1 \tilde{\Delta \theta}_i^{t+1} Δθ~it+1,计算全局模型的更新:
θ t + 1 = θ t + ∑ i = 1 N n i n Δ θ ~ i t + 1 ∑ i = 1 N n i n \theta^{t+1} = \theta^t + \frac{\sum_{i=1}^{N} \frac{n_i}{n} \tilde{\Delta \theta}_i^{t+1}}{\sum_{i=1}^{N} \frac{n_i}{n}} θt+1=θt+∑i=1Nnni∑i=1NnniΔθ~it+1
其中 n i n_i ni 是客户端 i i i的数据量, n n n 是所有客户端的数据总量。这里的全局模型聚合不局限于平均聚合。有时服务器会将聚合结果进行归一化后再传递给客户端,以确保在整个联邦网络中具有一致性。
- 优点:解决数据异质性问题,提高模型的泛化能力和稳定性。
- 缺点:计算开销、通信开销增加。
- 应用场景:大规模分布式训练,异构数据环境。
关于联邦学习在计算机视觉中的具体应用在下一篇文章中详细介绍:联邦学习——计算机视觉篇(下)
参考文献
Federated Learning for Computer Vision
Bayesian Nonparametric Federated Learning of Neural Networks
Federated optimization in heterogeneous networks
Cross-domain Federated Object Detection
MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
Communication-Efficient Learning of Deep Networks from Decentralized Data