tensorflow实战google第二版_TensorFlow Federated: 基于TensorFlow的联邦学习入门教程

TensorFlow Federated (TFF) 是由Google提出的开源离散数据机器学习和其他计算平台,作为联邦学习 (Federated Learning) 的应用框架和计算平台,TensorFlow Federated 可以通过利用如今数量众多的移动智能设备和边缘端计算设备的计算能力,保证数据不离开本地的同时训练本地机器学习模型,通过Google开发的 Federated Averaging 算法,即使在较差的通信环境下,实现保密、高效、高质量的模型汇总和迭代流程,并且移动端和边缘端用户体验上不做任何牺牲和妥协。目前Google已经将联邦学习应用在移动设备键盘输入预测上。

tensorflow实战google第二版_TensorFlow Federated: 基于TensorFlow的联邦学习入门教程_第1张图片

TensorFlow Federated (TFF): Machine Learning on Decentralized Data (TF Dev Summit ‘19)

TensorFlow Federated 通过提供两层API:Federated Learning (FL) API 和 Federated Core (FC) API 实现单机模拟多终端参与的联邦学习模型训练和迭代的实验环境和计算框架。

Federated Learning (FL) API 主要提供了可直接应用的训练联邦学习模型的TensorFlow高层接口,包括Model, Federated Computation Builders, Datasets 三个部分:

  • Model:模型部分提供让开发者可以直接调用tff.learning的封装函数;
  • Federated Computation Builders:主要用于辅助联邦学习的训练和计算过程;
  • Datasets:给出了用于TFF仿真和模型训练的可直接下载和访问的罐装数据集。

Federated Core (FC) API 将TensorFlow和分布式通信运算符结合,提供了底层联邦学习接口,可以用于构建自定义的联邦学习算法。

tensorflow实战google第二版_TensorFlow Federated: 基于TensorFlow的联邦学习入门教程_第2张图片

TensorFlow Federated (TFF): Machine Learning on Decentralized Data (TF Dev Summit ‘19)

TensorFlow官网https://www.tensorflow.org/federated提供了基于联邦学习的图像分类和文本生成的tutorial教程。以MNIST图像分类问题为例,训练单机模拟多终端的联邦学习模型步骤如下:

快速配置环境:目前因为TensorFlow 2.0的版本已经去除了contrib module,所以pip安装时会默认安装TensorFlow 1.13的版本。

b16eab527ca0e6136846c447faed545d.png

准备数据:联邦学习的数据来自于多个用户,服从非独立同分布(non-i.i.d)的特征,这里我们选择了准备好的联邦版MNIST数据。

e9cf1f85a15558d693d32809461d24b9.png

选择参与迭代的用户:在实际场景中我们能够同时参加训练的用户设备只是总设备的一部分,这里借助Federated Averaging方法,对客户端集进行一次采样,并在多轮中重复使用相同的集合以加速收敛。

tensorflow实战google第二版_TensorFlow Federated: 基于TensorFlow的联邦学习入门教程_第3张图片

Keras建立模型:通过调用tff.learning.from_compiled_keras_model,将模型和样本数据批量作为参数传递给中心模型。

tensorflow实战google第二版_TensorFlow Federated: 基于TensorFlow的联邦学习入门教程_第4张图片

训练联邦学习模型:借助tff.learning.Model封装模型调用Federated Averaging算法进行模型训练,通过initialize来建立服务器初始状态,next作为开始迭代函数进行20次迭代训练,最终结果我们可以看到loss降低模型趋于收敛。

tensorflow实战google第二版_TensorFlow Federated: 基于TensorFlow的联邦学习入门教程_第5张图片

模型评估:在联邦学习模型训练的过程中,这一部分只进行了简单的平均训练,那么在评估模型是否过拟合的时候,我们可以借助tff.learning.build_federated_evaluation将模型构造函数作为参数传递,而不需要借助Optimizer evaluation。

6dc6b640f5486ee43718569baf9fcf4b.png

TensorFlow Federated的简单入门就到此结束,从发展的角度来说,每次迭代选择不同的用户、使用不同于Federated Averaging算法的模型训练和参数传递方法、研究不同的差异化隐私保护机制以及多机版的实现都需要我们进行更深入的探索与实验,才将联邦学习的符合隐私安全、多方联合训练的、模型精度无损的特点实现更好的发展与应用。

Reference:

1. TensorFlow Federated: Machine Learning on Decentralized Data. available on: https://www.tensorflow.org/federated

2. Kharitonov E. Federated Online Learning to Rank with Evolution Strategies. InProceedings of the Twelfth ACM International Conference on Web Search and Data Mining 2019 Jan 30 (pp. 249-257). ACM.

3. 分布式机器学习时代即将来临?谷歌推出“Federated Learning”. available on: https://news.cnblogs.com/n/566673/

4. Federated Learning White Paper V1.0

Federated Learning,首个【联邦学习】生态和产业服务平台,以全球视野跟踪【联邦学习】领域最新动态和资讯。

tensorflow实战google第二版_TensorFlow Federated: 基于TensorFlow的联邦学习入门教程_第6张图片

你可能感兴趣的:(tensorflow实战google第二版_TensorFlow Federated: 基于TensorFlow的联邦学习入门教程)