其他

谷歌推出“联合学习”,上千万手机协同训练一个共享神经网络模型

2017-04-07 新智元

   新智元编译  

来源:research.googleblog.com

作者:Brendan McMahan & Daniel Ramage

译者:文强


【新智元导读】Google Research博客今日更新,介绍了他们的一项新工作“联合学习”(Federated Learning)。这种新的方法不将训练数据集中在一处,而是利用分散在成百上千万用户手里的多台手机,协同训练机器学习模型,而且所有的训练数据都保留在原来各自的设备上。联合学习能够提升模型质量,降低延迟、减少功耗,同时确保隐私。



标准的机器学习方法需要将训练数据集中到一台机器或者一个数据中心里。现在对于那些用户使用移动设备交互时训练出来的模型,我们引入了一种额外的方法:联合学习。


联合学习使手机能够协同学习一个共享预测模型,同时将所有的训练数据都保留在设备上,这样就将机器学习的能力和将数据存储在云中的需求分离开来。由此,我们就不仅能在移动设备上使用模型(比如使用 Mobile Vision API 和 On-Device Smart Reply 进行预测),也能够在移动端训练模型。


联合学习的工作原理是这样的:先用你的设备下载当前的模型,然后用你手机上的数据训练这个模型,之后所有的改变都会总结为一个小的更新。最后,只有这个更新会被传到云端(使用加密通信的方式),并立即就与其他用户的更新合在一起平均化,然后改善共享的模型。所有的训练数据都保留在你的设备上,云端也不会存储单独的更新。



你的手机会根据你的使用情况(A)在本地将模型个性化(personalize)。多位用户的更新会被聚合(B)成共享模型的一种共同的(consensus)变化(C),以此往复。


使用联合学习能够提升模型质量,降低延迟、减少功耗,同时确保隐私。这种方法还有一个直接的好处:在向云端传输模型更新之外,更新后的模型也能立马就在手机上使用,提升你的使用体验。


谷歌目前正在 Android 上使用 Google 键盘上的 Gboard 测试联合学习。当Gboard显示一条查询建议时,你的手机会将上下文信息以及你是否点击了这条建议存储在本地。联合学习会处理这一本地的使用历史记录,对Gboard的查询建议模型的下一次迭代进行改进。



为了使联合学习成为可能,我们必须克服许多算法和技术挑战。在典型的机器学习系统中,诸如随机梯度下降(SGD)的优化算法是云服务器上均匀分配的大型数据集上运行。这种高度迭代的算法在连接训练数据时,需要低延迟和高吞吐量。但在“联合学习”的情况下,数据以非常不均匀的方式分布在成百上千万台的设备上。此外,这些设备明显具有更高的延迟、低吞吐量连接,并且只能间歇性地训练。


带宽和延迟的限制促使我们开发了 Federated Averaging,联合平均算法,与朴素联合 SGD 版本相比,联合平均算法训练深度网络的通信需求要少 10-100倍。关键的思路是,在现代移动设备中使用强大的处理器来计算比简单梯度步骤更高质量的更新。由于生成好模型需要的高质量更新的迭代次数少了,训练需要的通信也就少了。考虑到上传速度通常比下载速度慢得多,因此我们还开发出一种新的方法,通过使用随机旋转(rotation)和量化(quantization)来压缩更新,将上传通信成本降低了 100 倍。虽然这些方法专注于深度网络的训练,但我们还设计了高维稀疏凸模型的算法,这些算法优于点击率预测等问题。



将这项技术部署到运行Gboard的数百万个不同类型的手机中,需要一个复杂的技术堆栈。在移动端本地训练时会使用 TensorFlow 的Mini 版。仔细的调度确保了只有在设备空闲,在充电(有插电线)并且在免费无线连接的时候才能进行训练,因此对手机的性能不会产生影响。


关于数据隐私和安全,文章做了详细的介绍。


最后,文章表示,联合学习要求机器学习从业者采用新的工具和新的思维方式:模型开发、训练和评估,不需要直接访问或标注原始数据,而通信成本则是限制因素。联合学习带来的用户利益让攻克技术挑战变得更有价值,希望大家都参与到讨论中来。



原文链接:https://research.googleblog.com/2017/04/federated-learning-collaborative.html



3月27日,新智元开源·生态AI技术峰会暨新智元2017创业大赛颁奖盛典隆重召开,包括“BAT”在内的中国主流 AI 公司、600多名行业精英齐聚,共同为2017中国人工智能的发展画上了浓墨重彩的一笔。


点击阅读原文,查阅文字版大会实录


访问以下链接,回顾大会盛况:


  • 阿里云栖社区:

  • 爱奇艺:

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存