Introducing Tensorflow Federated
Last updated
Last updated
作者: Alex Ingerman(产品经理)和 Krzys Ostrowski(研究科学家)译: Junyangz
注: Federated Learning 译作 联合学习 或 联盟(邦)学习,因Google中国翻译为联盟学习所以本文均译为联盟学习。
原文: https://medium.com/tensorflow/introducing-tensorflow-federated-a4147aa20041
据统计,全世界约有30亿部智能手机和70亿部连接设备。 这些电话和设备不断产生新的数据。 传统的分析和机器学习需要在处理数据之前集中收集数据,以获得insights,ML模型以及最终产品的改进。 如果数据敏感或集中化代价昂贵,则这种集中式方法可能会出现问题。 如果我们能够在生成数据的设备上运行数据分析和机器学习,并且仍然能够将所学的内容汇总在一起,那不是更好吗?
Tensorflow Federated (TFF)是一个开源框架,用于对分散式数据进行机器学习和其他计算的实验。 它实现了一种称为Federated Learning(FL)的方法,允许许多参与的客户端训练共享的机器学习模型,同时保持它们的数据位于本地。 我们根据我们在谷歌开发Federated Learning技术的经验设计了 TFF,它为移动键盘预测和on-device search的机器学习模型提供了动力。 有了 TFF,我们很高兴能够将一个灵活、开放的框架放到所有 TensorFlow 用户的手中,用于本地模拟分散式计算。
为了说明 FL 和 TFF 的用法,让我们从最著名的图像数据集之一: MNIST 开始。 创建 MNIST 的原始 NIST 数据集包含81万个手写数字的图像,这些数字来自3600名志愿者,我们的任务是建立一个机器学习模型来识别这些数字。 传统的做法是将机器学习算法应用于整个数据集。 但是,如果我们不能把所有的数据结合起来呢? 例如,因为志愿者不同意将他们的原始数据上传到中央服务器?
使用 TFF,我们可以编写我们选择的机器学习模型结构,然后跨所有数据拥有者提供的数据进行训练,同时保持各方的数据分散在各自本地。 我们将在下面介绍如何使用 TFF 的联盟学习(FL) API,使用由 Leaf 项目处理的 NIST 数据集的其中一个版本分隔每个志愿者所写的数字。
您可以在联盟 MNIST 分类教程中看到其余部分。
除了 FL API 之外,TFF 还提供了一组较低级别的原语,我们称之为联盟核心(Federated Core,FC) API。 这个 API 支持在分散的数据集上进行广义的计算。 使用联盟学习训练机器学习模型是联盟计算的一个例子; 在分散数据上对其进行评估是另一个例子。
让我们用一个简单的例子来看一下 FC API。 假设我们有一系列的传感器来获取温度数据,并且想要计算这些传感器的平均温度,而不需要将它们的数据上传到中心位置。 使用 FC API,我们可以表示一个新的数据类型,指定它的底层数据(tf.float32
)以及数据存在的位置(分散在客户端的设备上)。
READINGS_TYPE = tff.FederatedType(tf.float32, tff.CLIENTS)
然后在这个类型上指定一个联盟平均函数。
定义了联盟计算之后,TFF 以一种可以在分散式设置中运行的形式表示它。 TFF 的初始版本包括一个本地运行态,该运行态模拟跨一组持有数据的客户端执行的计算,每个客户端计算其本地贡献,集中的协调器聚合所有贡献。 但是,从开发人员的角度来看,联盟计算可以看作是一个普通的函数,它恰好有驻留在不同位置的输入和输出(分别位于单个客户端和协调服务器中)。
联盟平均算法的一个简单变体也可以直接使用 TFF 的声明模型:
通过TensorFlow Federated,我们朝着让更多的用户可以使用这项技术的方向迈出了一步,并且邀请社区在一个开放、灵活的平台上参与开发联盟学习及相应研究。 您可以在浏览器中尝试 TFF,只需点击几下,通过遍历教程。 有很多方法可以参与进来: 你可以在你的模型上体验现有的 FL 算法,为 TFF 仓库贡献新的联盟数据集和模型,添加新的 FL 算法的实现,或者用新的特性扩展现有的 FL 算法。
随着时间的推移,我们希望 TFF 运行时能够适用于主要的设备平台,并集成其他有助于保护敏感用户数据的技术,包括用于联盟学习(与 TensorFlow 隐私集成)和安全聚合的差分隐私。 我们期待着与社区一起开发 TFF,并使每个开发人员都能使用联合技术。
准备好开始了吗? 请访问 https://www.tensorflow.org/federated/ 并尝试 TFF!
创建 TensorFlow Federated 是一项团队工作。 特别感谢 Brendan McMahan、 Keith Rush、 Michael Reneer 和 Zachary Garrett,他们都做出了重大贡献。