从2016年 Federated Learning 这个词的正式提出,到今年2020年,Federated Learning 可以说是发展迅速。尽管只有四、五年的历史,要梳理出发展现状和展望前景也不容易。这样吧,我来给大家以一个简单明了的方式来介绍一下,这个方式就是 -- 划重点。
起源
Federated Learning 起源于这篇文章:
Communication-Efficient Learning of Deep Networks from Decentralized Dataarxiv.org
文章中提出的算法,从结构上看,是由一个中心化的服务器来协调安排很多很多的客户端设备。
作者把这些客户端设备的集合描述成一个“松散的联邦” (“a loose federation”),由此命名为:“联邦学习”。
其实这个名字还是挺贴切的。”联邦“表示一个松散的实体集合,并不要求所有参与的设备和服务器永远连接。
定义
这篇文章给出了一个官方的Federated Learning的定义:
Federated learning is a machine learning setting where multiple entities (clients) collaborate in solving a machine learning problem, under the coordination of a central server or service provider. Each client’s raw data is stored locally and not exchanged or transferred; instead, focused updates intended for immediate aggregation are used to achieve the learning objective.
翻译成人话就是:
- Federated Learning 是指一类机器学习问题。
- 这类问题有一个中心的服务器,加上很多个客户端。
- 整个过程中客户端的数据不离开设备,只向服务器发送用于更新模型的信息。
所有满足以上条件的机器学习问题,都属于 Federated Learning。
科研
想知道这个科研领域发展到什么样了,看这一篇就够了:
Advances and Open Problems in Federated Learningarxiv.org
(其实这话有点不负责任,因为这一篇就顶十篇… 这篇文章一共一百多页…)有空我也给这篇文章划一下重点。
框架
新的机器学习领(da)域(keng)出来了,各家公司不甘示弱,纷纷出来抢占山头。玲琅满目的 Federated Learning 框架,有良心作品,也有大坑。
- TensorFlow Federated: 基于TensorFlow,Google 出品,信誉有保障,有啥问题,可以问我。
- PySyft:基于PyTorch,简单直观,暂时只支持科研用途。
- Federated AI Technology Enabler (FATE):来自微众银行,号称工业级的框架。
- PaddleFL:基于PaddlePaddle,来自百度。
- NVidia Clare:来自英伟达,目前没开源。
系统
目前为止(2020年1月),最详细的关于 Federated Learning 工业级系统的描述应该是:
Towards Federated Learning at Scale: System Designarxiv.org
这篇文章详细描述了 Google 内部使用的 Federated Learning 平台的系统设计,描述了遇到的挑战和解决方案,同时展望了未来的方向。这些设计对后来的FL系统(比如PySyft)都有着一定的影响。
划重点时间 -- 这篇文章主要讲了客户端的设计,服务器端的设计,客户端和服务器端之间的通信协议的设计以及系统的工作流和相关的工具库。
业界
大公司,小公司,国内公司,国外公司,越来越多的企业和组织加入了对 Federated Learning 的实践中。Google,Facebook 就不用说了,除此之外还有腾讯,百度,小米,京东等等都纷纷入局。
2019年可以说是 Federated Learning 极速发展的一年,不过这个领域相对还比较年轻,不管是在业界还是学术界,有大量的“挂在低处的果实”,想做出一些成果相对容易,我认为现在正是加入这个浪潮的好时机。
一不小心写了这么长,违反了一开始说的简单明了的原则,不写了,就到这吧。希望能对同学们有所启发。