一 背景
最近总结本人的公众号的时候,发现一个问题:对于联邦学习的文章,根本都是在讲述纵向联邦学习,对于横向联邦学习的技术波及较少,所以灵机一动之下,决定写几篇文章来压压箱子底。
横向联邦:古代挪动设施能够拜访大量适宜学习模型的数据,这些数据反过来能够大大提高设施上的用户体验。例如,语言模型能够进步语音辨认和文本输出,图像模型能够主动抉择好的照片。然而,这些丰盛的数据通常是隐衷敏感的、数量很大的,或者两者兼有,这可能会阻止记录到数据中心并应用惯例办法在那里进行剖析训练。
所以针对于此研发人员设计了一种新的模式,即让训练数据分布在挪动设施上,并通过汇集本地计算的更新来学习共享模型。咱们将这种模式称为联邦学习。
本篇文章作为介绍横向联邦学习的首作,次要解说下横向联邦学习的模式、难点、参数的更新形式,后续文章会陆续从以下方面进行介绍;
- 高效的共享模型构建构建更新模式;
- 构建更新共享模型中的隐衷平安危险以及应答伎俩;
- 横向联邦学习的前沿技术;
二 横向联邦学习面临的难题
任何问题都不是孤立存在的,都是有着千头万绪的分割。其实对于横向联邦学习的场景,如果是相熟机器学习框架的同学来说,可能不会感觉非常生疏。云端数据中心的分布式机器学习能够有成千盈百的节点,比照横向联邦学习有肯定的借鉴意义,都存在着节点更新的同步与异步的问题,节点梯度更新之后的问题、节点掉线的问题、数据的 Non IID 问题,然而横向联邦学习的场景更加简单,基础设施绝对云端的对立高速基建存在十分大的差别,同时加上隐衷爱护机制,这就造成了横向联邦学习的零碎设计会更加的简单,以撑持各种异构的底层基建。
在云端分布式训练过程中,通信是重大的瓶颈,研发人员花了大量的精力进行优化,其模式特点进一步形容:
- 现有的工作通常要求客户端的数量远远小于每个客户端的示例数量;
- 数据以 IID 的形式散布在客户端,每个节点有雷同数量的数据点;
横向联邦学习与云端分布式训练有很多相似的中央,咱们能够把云端的 Worker 机器看做是客户端,把每个 Worker 负责训练的数据看做是客户端独有的数据,然而从整体来说,还是有很大不同与挑战。
- 设施的异构性,不稳固;
- 通信网络的异构性、不稳固、不牢靠;
- 数据的异构性,Non IID 问题(云端数据与机器非公有附属关系,能够通过 Global Shuffle 解决);
- 框架的算法效率,通信的频率等;
- 训练过程中的隐衷性;
三 横向联邦学习的参数更新机制
本节次要介绍横向联邦学习的模型更新机制,先介绍两种
- FedSGD
- FedAvg
上面咱们就别离介绍下这两种模型更新机制的办法、不同与优缺点等;
3.1 FedSGD
相似于云端数据中心外面的分布式机器学习的同步模式,通过梯度的传输进行模型的全局更新。最近大量的深度学习的胜利利用简直齐全依赖于随机梯度降落(SGD)的变体作为优化算法,因而,咱们很天然地从 SGD 开始构建联邦优化的算法。咱们能够通过应用所选设施上的所有数据来抉择批处理,所以咱们将这个简略的基线算法称为 FedSGD。
-
Client 节点流程
- 客户端收到来自服务端的模型参数 w 的信息;
- 客户端应用服务端的模型参数 w 进行本地模型的更新;
- 客户端应用本地数据进行训练,并且计算本地梯度 $g_i$;
- 客户端将计算的梯度 $g_i$,发送到服务端;
-
Server 节点流程
- 服务端本轮训练选取 n 个客户端;
- 服务端将目前模型参数播送到所有参加本轮训练的 n 个客户端;
- 服务端期待接管本轮训练所有参加客户端的梯度信息 $g_1, g_2,…,g_n $;
- 服务端计算整体的梯度 $g = g_1 + g_2 + … + g_n$
- 计算模型最新参数 $w = w – \lambda * g $,并且更新参数,期待下一轮计算;
3.2 FedAvg
下面形容算法能够了解为一个端点的简略的一次均匀,其中每个客户求解最小化其部分数据损失的模型,并对这些模型进行聚合以产生最终的全局模型。这种办法在带有 IID 数据的凸状况下失去了宽泛的钻研,家喻户晓,在最坏状况下,产生的全局模型并不比在单个客户端上训练模型更好,所以咱们须要针对联邦学习钻研一种新的模型更新办法。
咱们在回顾下联邦学习中咱们比拟辣手的问题:
- 数据的 IID 问题
- 通信的问题
在云端分布式训练模式下,针对数据的 IID 问题,个别的解法是在云端训练之前,对大规模的样本数据进行全局 Shuffle 打散操作,将 Non IID 问题转化为 IID 问题。通信方面呢,有 All Reduce 模式以及一些其余流量包合并的机制,上面咱们看看在联邦学习中如何解决这些问题。
FedAvg 与 FedSGD 的不同点在于:
- 传递数据的不同:FedSGD 传递的是梯度 g,FedAvg 传递的是模型参数 w;
- 传输效率不同:FedAvg 会在本地通过多轮的训练,先对本地模型通过 Loss 的多轮优化,在同步最初的优化参数 w 到服务端。
- 模型聚合的形式不同:服务端针对客户端返回的参数 w 进行均匀聚合,冀望通过这种形式解决数据的 Non IID 问题。
- 安全性:FedAvg 在本地通过多轮训练,对于模型的保护性更好。
-
Client 节点流程
- 客户端收到来自服务端的模型参数 w 的信息;
- 客户端应用服务端的模型参数 w 进行本地模型的更新;
- 客户端应用本地数据进行训练,并且计算本地梯度 $g_i$;
- 客户端将计算的梯度 $g_i$,发送到服务端;
-
Server 节点
- 服务端本轮训练选取 n 个客户端;
- 服务端将目前模型参数播送到所有参加本轮训练的 n 个客户端;
- 服务端期待接管本轮训练所有参加客户端的梯度信息 $g_1, g_2,…,g_n $;
- 服务端计算整体的梯度 $g = g_1 + g_2 + … + g_n$
- 计算模型最新参数 $w = w – \lambda * g $,并且更新参数,期待下一轮计算;
四 番外篇
集体介绍:杜宝坤,隐衷计算行业从业者,从 0 到 1 率领团队构建了京东的联邦学习解决方案 9N-FL,同时主导了联邦学习框架与联邦开门红业务。
框架层面:实现了电商营销畛域反对超大规模的工业化联邦学习解决方案,反对超大规模样本 PSI 隐衷对齐、平安的树模型与神经网络模型等泛滥模型反对。
业务层面:实现了业务侧的开门红业务落地,创始了新的业务增长点,产生了显著的业务经济效益。
集体比拟喜爱学习新货色,乐于钻研技术。基于从全链路思考与决策技术布局的考量,钻研的畛域比拟多,从工程架构、大数据到机器学习算法与算法框架均有波及。欢送喜爱技术的同学和我交换,邮箱:baokun06@163.com
五 公众号导读
本人撰写博客曾经很长一段时间了,因为集体涉猎的技术畛域比拟多,所以对高并发与高性能、分布式、传统机器学习算法与框架、深度学习算法与框架、明码平安、隐衷计算、联邦学习、大数据等都有波及。主导过多个大我的项目包含批发的联邦学习,社区做过屡次分享,另外本人保持写原创博客,多篇文章有过万的浏览。公众号 秃顶的码农 大家能够依照话题进行间断浏览,外面的章节我都做过依照学习路线的排序,话题就是公众号外面上面的标红的这个,大家点击去就可以看本话题下的多篇文章了,比方下图(话题分为:一、隐衷计算 二、联邦学习 三、机器学习框架 四、机器学习算法 五、高性能计算 六、广告算法 七、程序人生),知乎号同理关注专利即可。
<font color=red> 所有有为法,如梦幻泡影,如露亦如电,应作如是观。</font>
本文由 mdnice 多平台公布