联邦学习
视频学习资源:台大博士讲联邦学习 ( 讲的非常通俗易懂!!力荐!!)
看了这个视频和我的总结文档,就可以看懂联邦学习的大部分论文了(本人亲测,当然还有些不懂的概念配合Chat-GPT查就可以)
目的:训练来自多个数据源的单个模型,其约束条件是数据停留在数据源上,而不是由数据源(也称为节点、客户端)交换,也不是由中央服务器进行编排训练(如果存在的话)。
举个例子:一个模型需要10家医院的病人CT影像信息,但是病人的隐私实际上是非常重要的,那么如何既能用到10家医院的dataset进行模型训练,又同时避免任意两家医院相互交换病人信息? ——》 Federated learning
Data keeps private on each data owner during training
一句话概括就类似:云计算的分布式处理技术用于机器学习的训练模型中
- Vertical federated learning
客户端拥有同批客户不同类型的data(如消费、治疗咨询),实现不同类型数据平台dataset互相不交换信息的同时,每个客户匹配各自不同类型的data
缺点:有很多不一样业务的公司/客户端(比如n个)加入时,要完成每个客户(设为x个)的业务信息对应工作量很大(xn),且需要互相认证之类的,实现起来很困难。
- Horizontal federated learning
客户端拥有不同批客户的相同类型数据(如10家医院病人的CT影片信息),实现每个客户端(医院)只和中心训练交换数据,两两隔绝不交换信息。(每个客户端在本地先训练模型获得参数,并将参数传到centersever模型中训练,centersever将训练好的模型参数返回给每一个客户端,反复迭代最终得到最优模型)
Federated Learning Methods
需要的条件:
- 支持多个数据拥有方从远端参加训练
- 保持每个数据拥有方的数据私密性
- 支持现有的机器学习 & 深度学习方法
为了实现上述条件,模型需要具备:
- 学习模型需要被保存下来(machine learning & deep learning)
- 新模型的更新方案是联邦学习的关键之关键
- problem setup需要修改(如下:)
举个例子,在梯度下降最小化损失函数中:
传统机器学习problem setup:
arg
min
θ
L
(
f
(
x
;
θ
)
,
y
)
\underset{\theta}{\arg \min } L(f(x ; \theta), y)
θargminL(f(x;θ),y)
联邦学习problem setup:
arg
min
θ
∑
i
L
(
f
(
x
i
;
θ
)
,
y
i
)
\underset{\theta}{\arg \min } \sum_{i} L\left(f\left(x^{i} ; \theta\right), y^{i}\right)
θargmini∑L(f(xi;θ),yi)
可见,联邦学习的最小化损失函数目标是所有clients的损失值总加和最小(这里θ是不同clients训练时产生的不同参数θ)
不同的 Federated Learning Methods 有主要三种:FedSGD FedAvg FedProx
FedSGD(2015):
Sever 聚合(加和求平均等方法)所有来自 clients 的 gradients 并产生一个全局模型,全局模型训练完成后再分别发送给被一个 client
最大的特点:gradients aggregation is needed in every training step
缺点:
- 由于每一个训练step一般很快,但是联邦学习需要不同客户端在远端传给 sever 相应的 gradients ,这个过程的时间花销t可能比 step 的训练过程长的多得多
- 如果有一个 clients 的 GPU 非常拉,那么所有客户端都得等这个 clients 训练完一个 step 才能继续,效率低
FedAvg(2017):
在 FEDSGD 模型的基础上,Sever 直接聚集每个 clients 的模型参数本身
优点:
- 每个客户端可以灵活安排做几个 step 后再传给 Sever (异步性)
- clients 和 Sever 之间沟通的cost减小(多个 step 后再穿一次)
缺点:
- 由于每个 clients 的异步性,存在风险:多个 step 后每个 clients 的模型训练的结果可能差别很大,每个 model 都往不一样的地方跑,导致最终的 Sever Model 效果不太理想,而且多次迭代越来越不理想(自举)
FedProx(2020):
在前面模型的基础上加了模型优化的限制,从而防止模型过于差异化。
在每个 client 定义的损失函数中加上一个规范化参数约束:
L
F
e
d
P
r
o
x
,
i
(
f
(
x
i
;
θ
i
)
,
y
i
)
=
L
i
(
f
(
x
i
;
θ
i
)
,
y
i
)
+
μ
2
∥
θ
s
−
θ
i
∥
2
L_{\mathrm{FedProx}, i}\left(f\left(x_{i} ; \theta_{i}\right), y_{i}\right)=L_{i}\left(f\left(x_{i} ; \theta_{i}\right), y_{i}\right)+\frac{\mu}{2}\left\|\theta_{s}-\theta_{i}\right\|^{2}
LFedProx,i(f(xi;θi),yi)=Li(f(xi;θi),yi)+2μ∥θs−θi∥2
通过这个条件约束,模型的 training curve 会更加平缓,即参数收敛更加平滑。
缺点:收敛会比前者稍微慢一些
tips:联邦学习对所有现有模型(Regression、SVM、Decision Tree、Neutral Networks)、优化器(ADAM、SGD)等都支持。
学习资源:
Federated Learning Libraries: FATE, PySyft, NVIDIA Clara (针对医学影像)