联邦学习初理解

开头一段是故事,可跳过看正文

几年前师兄让我研究一下为深度学习训练提供云服务时,如何解决用户的数据隐私顾虑,精度允许有损耗。

当时一腔热血展开调研,对着CNN结构苦思冥想,不给数据怎么训练?给了数据怎么隐私?

然后顺理成章的钻进了数据加密的死胡同。原想着“加密->训练->解密”做成端到端或许行得通,跑了一波实验只能得到雪花点。发现一个无比牛叉的发明——同态加密,啃了好几天终于略有些理解,却是框架难实现、模型难收敛、图像难处理。

在同态加密的死胡同里挣扎了一番,还是数学能力不足放弃了,感觉是个无解的问题。

今年突然发现了“联邦学习”这个名词,科研界与工业界早已炒得火热,第一反应就是“啊?这样训练也能用?也能刷论文?也能做产品?”

好吧感觉这么多年还是不够懂科研。想起那个水笔的故事——墨水只能灌那么高,再高会漏墨,怎么办呢,把笔芯就生产成那么高墨水的就好了,完全能用啊。

如今坑都填差不多了,剩下的要么是人不想做的,要么是无比难搞的。

这世上精明人那么多,哪有那么多舒服的方向给你。而且也给过你机会了。

静下心来不要挑三拣四,总能做出点东西。

联邦学习是什么

大数据时代,数据为王,机器学习模型或好或坏,丢几十T数据进去,都能给你练出个NB模型,预测用户习惯,精准推送文章、商品、广告,换来的都是流量,都是真金白银。

可用户不开心啊,我的聊天记录,我的朋友圈,我的联系人列表,都是我的隐私,你凭什么拿去机器学习。感到被监控,感到可怕...

好的,法律来了,国内外都有,保护用户隐私。

互联网公司郁闷了,这可咋整。

好好好,不拿你数据了,借你手机cpu用你自己的数据跑几个特征值给我,我看不到你的隐私,还依然给你提供智能的自动化服务,双赢,如何。

联邦学习的雏形就这么来了,比较典型的开始是谷歌2016年预测Android设备文本输入的模型训练中,保持数据在设备本地,服务器只收集设备按机器学习算法求出的局部梯度,通过服务器合并,在数学上逼近全局训练效果的计算方案。

再往后,更丰富的需求和方案也来了:

  • 不同的企业都有数据,合在一起训练的模型不是更好。但是数据都是钱啊,凭什么给。互换数据?问问我的用户答应不答应。
  • 不同的部门有同一批用户的不同方面的数据,银行有存款信息,医院有病例信息,结合起来可以有更完整的用户模型,但是...

要么是部门财产,要么是用户隐私,反正数据都拿出来一起跑个好模型的乌托邦是不存在的。

机器学习一般把数据看作一个一个的包含多个特征值的数据,一个放一行的话,可以放进一个Excel表格里,一行是一个数据,每列是数据的一个特征值。

那么

  • 横向联邦学习:不同企业的数据是不同的行,他们可能包含了不同的类别,把这些数据以联邦学习的方式训练联合模型,会支持更丰富的类别或更好的分类泛化性能。
  • 纵向联邦学习:不同部门的数据是不同的列,即每个数据都包含了用户重叠或不重叠的若干特征,以联邦学习的方式训练联合模型,会基于更多的特征给出更精准的结果。

联邦学习研究些什么

通讯成本高

不是本地一个GPU从硬盘里拿了就训练,而是要各个终端频繁地发送梯度信息,下载模型更新信息。

在保证相同模型精度前提下,考虑减少通讯次数、模型更新时间等

统计学异质性(Statistical Heterogeneity)

这词也没找到官方翻译,说“异构性”感觉格局小了。。其实单词直译看起来还不错。

这个问题在普通机器学习中就有,比如训练mnist 09的手写数字识别,如果加入训练的数据是一堆0,然后一堆1,然后...,在训练完一堆9之后,你会发现模型可能预测啥都是9。每堆数据的分布是不一样的。

那怎么办?传统机器学习把数据随机打乱一下就好了。这样你随便拿起“一堆”数据,他们就会有个统计学分布(比如画个柱状图统计不同数字个数)。不同“堆”得到的分布都很接近。

按概率论说,每次随便拿起一个数字是几的概率是相互独立的,即先拿起一个数是0,不会影响再拿起一个数是几的概率。

又分布接近,又相互独立,嗯,独立同分布(Independent and Identically Distributed,IID),这样的数据,才能在机器学习的熔炉里均衡地炼出较靠谱的解。

那前面扎堆的0、扎堆的1...扎堆的9就是非独立同分布了(Non-IID)。

传统机器学习可以随机打乱,但联邦学习我们没法把数据集合在一起处理,你的手机里全是0,我的手机里全是1,麻烦就大了。

再者,手机运算速度、网络环境、网络波动,都给不同方向传给服务器的数据带来各种不确定性,归根到底都影响了数据的分布。

所以联邦学习最大的困难就是悬丝诊脉,哦不,是碰不到数据还要依赖数据的分布。

数据安全

既然要数据隐私,那这要考虑的就太多了,数据怎么不泄露?即使不发数据,发的信息会不会足够猜到数据本身是什么?

如果要依赖“大”数据,往服务器发信息的终端一定都是“善良”的吗?

任何事情牵扯到互联网,环节就会非常多,数据发送、接收、模型聚合、下发,都要顾虑一个安全问题,隐私安全,模型安全,数据安全...

应用落地

有理论不一定能用,把理论用起来产生经济价值也有一系列要解决的问题。

需求与优化

异步训练?模型验证?无监督?区块链?...

我想做点什么

统计学异质性是个老话题,哪怕是在联邦学习中。如前文所说,好填的坑都被人填完了,难啃的骨头啃一啃吧,总有些能改进的地方,对应用落地还是有些帮助。


参考

  • [1] YANG Q, LIU Y, CHEN T, et al. Federated machine learning: Concept and applications[J]. ACM Trans. Intell. Syst. Technol., 2019, 10(2): 12:1­12:19.
  • [2] LI T, SAHU A K, TALWALKAR A, et al. Federated learning: Challenges, methods, and future directions[J]. IEEE Signal Processing Magazine, 2020, 37: 50­60.
  • [3] LI L, FAN Y, TSE M, et al. A review of applications in federated learning[J]. Computers & Industrial Engineering, 2020, 149: 106854.
  • [4] LI T, SAHU A K, ZAHEER M, et al. Federated optimization in heterogeneous networks [C]//DHILLON I S, PAPAILIOPOULOS D S, SZE V. Proceedings of Machine Learning and Systems 2020, MLSys 2020, Austin, TX, USA, March 2­4, 2020. mlsys.org, 2020.