赞
踩
联邦学习(Federated Learning)近几年很火,本文拟用最通俗语言解释联邦学习的来龙去脉。
其实联邦学习没有那么新颖,任何技术都是有一条主链的,并不是从石头里蹦出来。联邦学习的前身就是分布式学习。(并不是说联邦学习就取代分布式学习,各有适合的场景)
那先简单介绍一下分布式学习,就是你有一个模型要训练,而你手头上有多个CPU或GPU,这时你就想在多个计算节点上同时训练这个模型,来加快训练,这就是分布式学习。一般这些节点有一个老大哥,叫server;一群小弟,叫worker。那么很直观的有两招,同步(多个worker训练完模型的一部分,同时与server通信。),异步(每个worker训练完模型的一部分后就立刻可以与server通信,从而进入下一轮计算。)
左图为同步,右图为异步
现在一般都是异步,因为同步的代价很大,而且会有木桶效应,算力强的节点会被算力弱的节点拖住。但是异步也有它的挑战,比如如果一个算力强的节点已经算了7、8轮,一个算力弱的节点才计算完1轮,这时这个比较迟更新的梯度基于的是老参数,对模型有可能是有害的,即需要设备算力比较均匀。
还有一个方案就是去中心化,简单来说就是没有老大哥server了,又或者个个都是server。
题外话:并行计算和分布式学习其实就一个东西,严格点定义就是节点与server之间通信时是有线且在一个不大的区域内,就是并行计算;如果是无线通信,一般我们就叫它分布式计算。
联邦学习是为了解决一些特殊场景下分布式学习,可以理解为分布式学习的一种,带约束的分布式学习。
比如现在想基于用户的手机上产生的数据来训练模型,那么多台手机,我们自然想到分布式学习,但是,现在手机上的数据因为隐私问题我们不希望传到server,手机(worker)对数据有绝对的控制权;同样的场景也有像银行、保险公司、医院等有数据隐私的地方,它们想参与分布式学习,但是还想对数据有绝对控制权。
所以联邦学习就是允许多个参与者协同训练共享模型,同时保持各自数据的隐私和安全。
在联邦学习中,数据不需要集中存储或处理,而是保留在本地。模型的更新(如梯度或模型参数)在本地计算,然后被发送到中央服务器进行聚合,最终形成更新后的全局模型。
根据数据分布:
根据模型更新的方式分类:
联邦学习有它自己的特点:
个人理解,分布式学习:专职;联邦学习:兼职(不稳定,异构性强)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。