谷歌于2017年提出联邦学习的训练方法,发表了相关博客链接[1],从[1]这篇文章的标题《Federated Learning: Collaborative Machine Learning without Centralized Training Data》可以看出来谷歌对于联邦学习的基本定义是,无需通过中心化的数据,即可训练一个机器学习模型。
即假设训练数据分布在>1台不同的计算机(终端、服务器、移动设备等都可以)上,这个时候如果按照非联邦学习的方法,需要先把数据收集到同一的单一服务器(或服务器集群)中,然后统一训练,这带来的主要问题就是这种数据收集可能涉及隐私泄漏、许可协议等问题,于是提出来一种,不需要上传数据到单一服务器的训练方法。
总结起来就是:部分模型、部分模型参数(或梯度扽个)可共享,数据不可共享。因为共享的是模型而不是数据,可以最大限度避免数据泄漏,相比数据脱敏的相关算法(如K-annoymity),保密性更强。
谷歌提出的联邦学习思想中,可以参考另一个介绍文章[2],给出的例子是toC的训练,例子中数据保存在个人移动设备中(手机),不需要数据上传,大体的思路是:
(图片引用自谷歌博客)
大体流程是:
从来自wiki的图片也可以看出来,大体过程:
(图片引用自维基百科)
在谷歌提出联邦学习问题之后,结合其他如隐私数据等研究,一部分人,如微众银行与后续他们组织的fedai等组织,以及相关提出的白皮书[3][4],给出了提出了一些新的应用场景。
主要区别是谷歌提出了主要面向C端用户的方法,而部分人希望能将之扩展到B端机构,例如多个拥有不同程度重叠数据方。
谷歌提出的toC应用中,每个训练终端相当于有且只有一个用户(因为是手机嘛),但是用户特征高度重叠(例如都是搜索引擎点击记录),这种情况下被[4]称为横向联邦学习。
例如某城市内的银行拥有这个城市很多商户的贷款、违约等信息,这个城市内运营的电商公司有这个城市的这些商户的销量、差评等数据,但是银行和电商公司都不能直接互联数据,但是希望能共享同一个信用评级模型。即用户重叠,但用户特征不重叠。这种情况下被文献[4]称为纵向联邦学习。