在神经网络中,如果一个网络的训练数据越多,其训练效果往往会越好。但是由于用户数据不能够被随意的使用和转发,因此各个商业公司和研究机构的数据不能合并训练,因此,开发出联邦学习用于在不泄露用户数据的情况下,利用用户数据进行训练.
各个worker的业务类型相似,数据特征重叠多,样本重叠少
例如:不同地区的两家银行。多家银行就都可以上传自己的模型参数,然后对参数进行更新,完成模型效果的提升。这就是横向联邦学习,又被称之为特征对齐的联邦学习
各个worker的业务类型不相似,样本重叠多,特征重叠少
例如:同一地区的银行和电商,就需要先将样本对其,其中由于不能直接进行信息匹配,可以借助加密算法,让参与者在不泄露信息的情况下,找出相同的样本后联合他们进行特征,构建一个大表,进行模型训练。这被称之为:纵向联邦学习,又被叫做样本对齐的联邦学习
如果样本重叠不多,特征重叠也不多,希望利用数据提升模型能力,就需要将参与者的模型和数据迁移到同一空间中运算,被称之为联邦迁移学习
联邦学习是一种分布式机器学习,以并行计算为基础。
联邦学习的目标:解决数据的协作和隐私保护问题。
联邦学习的分布并不是独立同分布的,因为用户与用户之间存在差异性,数据量可能也不是一个数量级的。所以不符合独立同分布的概率分布。
(1)用户对自己的设备和数据有绝对的控制权,用户可以随时停止计算和参与通信。而在传统的分布式学习中worker node完全由server控制。
(2)参与联邦学习的设备往往是不稳定的,计算能力也不尽相同。
(3)联邦学习的通信代价大,通信量多。(所以我们要减少通信次数)
(4)参与联邦学习的数据并非独立同分布,不利于算法设计,因为每个用户的数据是不一样的。
(5)联邦学习的节点负载不平衡,每个用户的数据量不一样,不好分配权重,建模复杂。计算时间不一样。
降低通信次数:其核心要点就是,worker node多计算少通信。
这里介绍一种新的算法和上述算法有些差别。叫做federated averaging algorithm(FedAvg)
worker node的工作内容:
接收服务器发来的参数;
使用参数和局部数据计算梯度;
本地更新参数;循环几次。
向服务器发送新参数;
server的工作内容:
从每个工作节点接收新参数;
计算W=SUM(p1,p2,p3,……。PM);
参数=1/m(W) 可以做加权平均,也可以是直接平均;
向每个工作节点发送参数;
优点:可以在相同的通信次数下,FedAvg比原算法(Grad Desent)的收敛速度更快。
缺点:让移动设备计算相同的数据量,FedAvg比原先的Grad Desent梯度下降慢,收敛更慢。
总结:以牺牲worker node的计算量来换取通信量的减少。但是由于联邦学习的通信代价大而计算代价小,所以其有一定的作用。
维基百科介绍:
联邦学习是一种机器学习技术,
具体来说就是人们在多个拥有本地数据样本的分散式边缘设备或服务器上训练算法。
这种方法与传统的集中式机器学习技术有显著不同,
传统的集中式机器学习技术将所有的本地数据集上传到一个服务器上,
而更经典的分散式方法则通常假设本地数据样本都是相同分布的。
联合平均 (FedAvg) 是 FedSGD 的泛化,
允许本地节点对本地数据进行多次批量更新,并交换更新的权重而不是梯度。
此外,对来自相同初始化的调整权重进行平均并不一定会损害所得平均模型的性能。
尽管它很简单,但它在现实环境中缺乏理论保证。
传统的联邦学习是基于每个worker设备(节点)的梯度下降:
在每一轮中,每个worker通过其本地数据集在本地多次更新其梯度下降权重,
然后中央节点聚合器对权重进行平均所有工人,并再次分配给工人。
对多轮重复上述过程。这种方法的主要缺点是效率低。
众所周知,由于频繁的梯度传输导致的高通信开销会减慢 FL。
为了减轻通信开销,已经研究了两种主要技术:
(i)表征通信和计算之间权衡的权重的本地更新和
(ii)表征通信和精度之间权衡的梯度压缩。
借鉴 https://www.jianshu.com/p/5f3c35620bb7