采用机器学习模式需要数据。 我们越多越好。 但是,数据并不便宜,更重要的是,数据可能包含敏感的个人信息。

以新法律形式作为GDPR以及提高用户和公民对其数据价值的认识的最新隐私发展正在产生对实施更多隐私的技术的需求

虽然匿名技术可以极大地帮助解决隐私问题,但所有数据都被发送到中央位置以训练机器学习模型的事实始终是担心的动机

该项目证明了如何使用Android应用程序作为边缘设备来设置基本的联合学习环境

代码

如果你想直接跳到代码中,你可以在下面的回复中找到它

Android应用程序

mccorby / PhotoLabeller
联合学习:进行图像分类和本地培训的客户端应用程序。更好的与...github.com

服务器在

mccorby / PhotoLabellerServer
PhotoLabellerServer - 联合学习:参数服务器对来自客户端的模型进行更新汇总...github.com

组件

该项目分为三个主要部分:

  1. 一个服务器,用Kotlin编写,并使用DL4J 生成基于Cifar-10数据集的模型
  2. 使用此模型分类使用相机拍摄的图像的Android应用程序。 写在Kotlin并且也使用DL4J
  3. Android应用程序能够使用本地数据和服务器来训练模型的联合学习设置能够使用来自边缘的更新来更新共享模型

该模型

该模型基于Cifar-10数据集,这是一个众所周知的数据集,可以对十种不同类别的图像进行分类

Cifar-10中的类有一些例子

为了实现双重目的,模型的体系结构进行了调整:

a)具有不那么差的表现

b)允许它在Android应用程序中加载和训练

所选的体系结构是一个具有一个CNN层和密集层的浅层卷积神经网络。 这被证明足以获得一个体面的表现,使用50个时期和10,000个样本,同时保持模型的大小很小

有密集层的CNN

(关于模型大小的说明:这个PoC的重点在于联合学习,更好的模型可以用更多的层次进行训练,并通过应用不同的技术进行量化或使用结构化或草图更新来减少其尺寸。的PoC!)

用于在服务器端训练模型的代码位于PhotoLabellerServer项目的model模块中

用App做出预测

该应用程序允许用户使用嵌入在应用程序本身中的模型对照片进行基本分类,或者当连接到服务器时,可以使用最新版本的共享模型

图像分类器正在运行

该应用app模块结构为app模块,其中包含Android特定的类和Deeplearning4j相关类的trainer 。 base模块包含交互器和域对象

训练者的实现,负责使用DL4J进行预测和训练,调用预测函数以获得图像的分类

联合学习设置

联合学习通过允许边缘设备参与培训来颠倒机器学习模型的更新。

代替将客户端中的数据发送到集中位置,Federated Learning将模型发送给参与联合的设备。 然后使用本地数据对模型进行重新训练(使用转移学习 )

数据和数据永远不会离开设备,让它成为您的手机,笔记本电脑或物联网小工具

服务器打开一轮“培训”,在此期间客户可以将更新模型发送到服务器。

客户端。 在边缘进行训练

我们的Android应用程序决定何时参与共享模型的培训。 它使用已有的模型或服务器中的模型执行Transfer Learning操作(如果更新)。 然后对模型进行的更新发送到服务器

服务器端。 平均和更新模型

一旦轮次结束,服务器通过执行联合平均来更新共享模型,如以下要点所示

服务器还实现了客户端使用的简单REST API。

请注意,客户端,Android应用程序的实现方式只需要很少的努力即可转移到其他Kotlin平台

笔记

性能

在Android应用程序中使用图像进行任何类型的操作始终要求设备必须执行的计算工作。 使用图像对模型进行训练会多次增加这种努力

这意味着在Android应用程序中完成的转换学习阶段非常短:只有几个样本的几个时代。 这是应用程序在内存不足之前可以做的最多! 参数总数约为450k。 这对于应用程序可用的内存非常重要

但是,其他使用其他类型数据的模型运行平稳。 以前版本的联合学习设置仅使用了一些功能仅有的糖尿病数据集。 这可以用更多的时代来完成(我实际上没有找到限制,因为我在达到OOM之前获得了期望的表现)以及更多的数据点

该应用程序的架构适合您尝试其他模型和数据集。 随意重复使用它进行研究,并告诉我是否可以提供帮助

谢谢阅读!

https://proandroiddev.com/federated-learning-e79e054c33ef

【译】Federated Learning: Bringing Machine Learning to the edge with Kotlin and Android相关推荐

  1. 【译】Privacy and machine learning: two unexpected allies

    在机器学习的许多应用中,例如用于医疗诊断的机器学习,我们希望具有机器学习算法,其不记住关于训练集的敏感信息,诸如个体患者的特定医疗历史. 差分隐私是衡量算法提供的隐私保证的框架. 通过差异隐私的镜头, ...

  2. 【译】Attacks against machine learning — an overview

    这篇博客文章调查了针对AI(人工智能)系统的攻击技术以及如何防范它们. 在较高级别,对分类器的攻击可以分为三种类型: 对抗性输入 ,这是特制的输入,其目的是可靠地错误分类以逃避检测. 对抗性输入包括旨 ...

  3. 【译】What do machine learning practitioners actually do?

    这篇文章是系列文章的第1部分. 第2部分是对AutoML和神经架构搜索的固有介绍, 第3部分特别关注Google的AutoML. 关于机器学习人才稀缺 (见这里 , 这里和这里 )以及声称他们的产品自 ...

  4. Federated Machine Learning: Concept and Applications

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 今天的人工智能仍然面临两大挑战.一种是,在大多数行业中,数据以孤岛的形式存在.二是加强数据隐私和安全.我们提出了一个解决这些挑战的可能方案 ...

  5. [论文解读]关于机器学习测试,看这一篇论文就够了 Machine Learning Testing: Survey ,Landscapes and Horizons

    Machine Learning Testing: Survey ,Landscapes and Horizons 文章目录 Machine Learning Testing: Survey ,Lan ...

  6. azure模型训练_如何在Azure Machine Learning Studio上开发K-Means模型

    azure模型训练 In this article, we will discuss the k-means algorithm and how can we develop a k-means mo ...

  7. 机器学习(Machine Learning)深度学习(Deep Learning)资料(Chapter 2)

    机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 2) - tony的专栏 - 博客频道 - CSDN.NET 注:机器学习资料篇目一共 ...

  8. 【github】机器学习(Machine Learning)深度学习(Deep Learning)资料

    转自:https://github.com/ty4z2008/Qix/blob/master/dl.md# <Brief History of Machine Learning> 介绍:这 ...

  9. 机器学习(Machine Learning)深度学习(Deep Learning)资料汇总

    本文来源:https://github.com/ty4z2008/Qix/blob/master/dl.md 机器学习(Machine Learning)&深度学习(Deep Learning ...

最新文章

  1. 理解离散傅立叶变换(一)
  2. oracle 内存结构 share pool sql解析的过程
  3. 目前最常用的计算机机箱类型为_常用的计算机设备
  4. idea测试连接mysql报错08001_IDEA连接MySQL错误
  5. 从Javascript单线程谈Event Loop
  6. [css] 如何用css实现把“我不爱996”变成“699爱不我”?
  7. 线程八锁,同步锁的应用
  8. 动态ip地址方案有什么优点和缺点_OA期刊的优点和缺点是什么
  9. 陈纪修老师《数学分析》 第01章:集合与映射 笔记
  10. SpringBoot(尚硅谷)
  11. vc6.0项目到vc2013移植记录
  12. java 可达性算法实现,垃圾标记阶段算法之可达性分析算法
  13. html手写笔记照片,Myscript Nebo – 好用到哭的手写笔记软件!你只管写画,它帮你识别转换成文字 | 火星博客...
  14. ATFX:非农就业报告来袭,美元指数或再迎剧烈波动
  15. Java实现UDP组播(multicast)和单播(unicast)简单例子——局域网内
  16. APIS——获取dom对象、操作元素内容和属性、间歇函数
  17. 浅析嵌入式系统的发展趋势
  18. 2013华为你知道多少?
  19. c语言中数组的各元素必须具有相同的类型,2018年9月计算机二级C语言程序设计章节习题1...
  20. 贝塞尔曲线工具css,贝塞尔曲线以及css动画 | Soo Smart!

热门文章

  1. TypeError: Cannot red property 'style' of null 错误解决
  2. Unity UGUI - Canvas / Camera
  3. webstorm+nodejs+JetBrains IDE Support+chrome打造前端开发神器
  4. Python学习笔记:电子邮件,POP3收取邮件
  5. Python学习笔记:常用第三方模块(1)
  6. 嵌入式驱动开发应具备的三大基础
  7. C/C++调用Fortran的使用说明
  8. TensorFlow tf.data 导入数据(tf.data官方教程) * * * * *
  9. 【编程】为什么不能直接对链表头head进行操作?
  10. 学长毕业日记 :本科毕业论文写成博士论文的神操作20170413