联合学习:Android去中心化的分布式机器学习

转载请注明来源

该文章翻译自:

Federated Learning: Collaborative Machine Learning without Centralized Training Data

原文地址

概要

标准的机器学习一般是在单机或者集群上集中处理数据、训练模型。谷歌为了给机器学习提供更好的云服务,已经建立了世界上最安全和鲁棒性最好的云基础平台设置。如今,在移动设备上的基于用户交互的模型训练,我们推出了额外的方法:联合学习

联合学习使得在移动设备上的模型共享成为可能,在移动端存储所有的训练数据,将机器学习的模型训练和云端存储解耦。这使得移动端进行模型训练和进化成为可能,解决了以前模型只能云端下发训练好的模型,而无法在本地训练的问题。类似的例子有Mobile Vision API和On-Device Smart Reply。

联合学习的工作原理如下:手机等设备下载云端最新的共享模型,根据手机上用户的历史数据来改进和训练这个模型,然后将用户个性化的模型抽取为一个小的更新文件。仅将模型的差异部分上传到云端,同时使用加密算法保证其安全性,并在云端和其它用户上传的模型差异做平均化的更新,以改善共享模型。这样做的好处是,所有的训练数据都在用户的手机上,并不发送隐私信息到云端,仅仅发送的是模型的变更部分。

关键词

Federated Learning,Deep Learning,Mobile,Android,Gboard,Decentralized
联合学习,深度学习,移动端,安卓,谷歌输入法,去中心化

技术架构

联合学习的架构图

基于每个用户的手机:

  • A.个性化的模型,聚合大量用户的模型改进
  • B.融合为共享模型
  • C.不断重复,完善共享模型

联合学习能产生更聪明的模型,更低的延时和更少的功耗,同时确保用户的隐私。还有一个额外的好处是:除了能不断改进云上的共享模型之外,还能够立刻使用手机端的个性化模型,这个模型完全是根据用户的历史行为数据训练,针对性更强,可以说是一个越来越懂你的模型。

我们目前正在Android系统自带的Gboard(Google Keyboard)上进行联合学习的效果测试。当Gboard显示一个搜索结果时,会记录搜索上下文以及你是否点击了该搜索结果。基于用户的历史搜索数据,联合学习可以为用户的下一次的搜索结果提供迭代和持续改进。

Gboard联合学习的测试场景

为了使联合学习成为可能,我们必须解决很多算法和技术上的难点。在经典的机器学习问题中,一般是在云端分布均匀的大型数据集上运行诸如随机梯度下降(SGD)的优化算法进行训练。这种高迭代的算法对训练数据集的要求是:低延迟、高吞吐。但是在“联合学习”环境中,数据以严重不均衡的方式分布在数百万台移动设备上。同时,这些设备还具有高延迟、低吞吐的特性,并且只能间歇性地进行训练。

受限于当前移动设备的网络带宽,谷歌研发出“Federated Averaging”算法,和原生的SGD版本相比可以减少10-100倍的通信消耗。核心思想就是使用现代移动设备中的强大处理器芯片来计算高质量的模型更新,而非简单的梯度迭代。取而代之的是更好的模型更新以及更少的迭代次数,同时还可以减少和服务端的通信频率。由于网络的上传速度通常比下载速度慢很多,谷歌还开发出一种新颖的算法:“random rotations and quantization”,将上传更新的通信速度提升为原来的100倍。这些算法都聚焦在深度学习的训练上,谷歌还不满足于此,还针对点击率预测的问题设计出了“high-dimensional sparse convex"模型。

将这项技术部署到数百万个不同的手机中,是一个非常复杂的过程。在移动设备上的训练也需要一个精简版的TensorFlow。同时为了保证手机的流畅性,对模型的训练仅仅发生在手机空闲时,比如充电并连接Wifi时,该场景下几乎对手机的性能没有影响。


参与联合学习的场景不会影响手机用户的体验。

联合学习需要以安全、高效、可扩展、容错的方式进行模型的更新和聚合。

联合学习并不需要将用户的隐私数据上传到云端,但是谷歌更进一步,开发了一个名为“Secure Aggregation”的协议,该协议只有当100或1000个用户都发起了模型更新时,才会尝试解密这部分更新,在此之前无需单独的检查某个手机的更新,更进一步保护了用户的隐私。服务器只用关心多个用户的平均更新,这样也更安全。这个协议还可以用在其它的问题,目前我们正在试图把这个协议用在线上的项目中,并预期在不就得将来能部署到联合学习的应用程序中。

当然,联合学习并不能解决所有的机器学习问题(例如,通过大量的人工表述数据识别不同的狗),以及很多模型所需要的数据已经存储在云端(例如,Gmail的垃圾邮件过滤器)。Google会持续推进基于云服务的深度学习技术,同时我们也会继续扩展联合学习领域的研究,以扩大我们解决问题的范围。比如Gboard希望学习到用户真实的输入意图,基于用户的输入习惯提升本地语言模型的能力。同时,Google也希望通过联合学习获得用户在手机上经常看哪些照片、分享、删除哪些照片。

联合学习要求机器学习从业者采用新的工具和新的思维方式:从模型设计、训练再到评估,都可以不直接访问原始数据,而是考虑一定的限制性开销。我们相信联合学习能给用户带来价值,也希望在机器学习的社区中看到大家对这类话题更广泛的交流。

致谢

本文包含了Google很多同事的研究成果,包括Blaise Agüera y Arcas, Galen Andrew, Dave Bacon, Keith Bonawitz, Chris Brumme, Arlie Davis, Jac de Haan, Hubert Eichner, Wolfgang Grieskamp, Wei Huang, Vladimir Ivanov, Chloé Kiddon, Jakub Konečný, Nicholas Kong, Ben Kreuter, Alison Lentz, Stefano Mazzocchi, Sarvar Patel, Martin Pelikan, Aaron Segal, Karn Seth, Ananda Theertha Suresh, Iulia Turc, Felix Yu, Antonio Marcedone和Gboard团队的合作伙伴。

个人总结

通过这篇文章可以看出,Google在移动设备AI化做了相当大的努力,也在自家的产品:Gboard、Photo、Gmail、Youtube上做了各种工程尝试,包括2017年IO大会推出TensorFlow Lite版,野心也窥见一斑。作为移动开发者,必须跟上Google的步伐,尽早了解深度学习相关的基础知识,快速将自己的产品AI化。

你可能感兴趣的:(联合学习:Android去中心化的分布式机器学习)