一,本周工作
1,读完《2017-FedAvgCommunication-Efficient Learning of Deep Networks》论文
收获如下:
①
本文提出了基于迭代模型平均的深度网络联邦学习
本文提出了一种新背景,可以利用移动设备中存储的大量数据来训练模型
试验表明本文方法对于不平衡和非IID分布的数据效果很好,并且比分散训练同等网络需要的轮数少几个数量级
本文 Federated Average Learning(联合平均学习)
②
本文针对数据---移动设备中数据
特点:
1,来自真实用户,比数据中心的代理数据更有价值
2,更加敏感,尽量不要收集这部分数据
3,标签可以在于用户交互中自然推断出来
③
系统上还要解决一些实际问题:
1,客户端数据集岁数据的添加和删除而变化
2,以复杂方式与本地数据分布相关联的客户端可用性
(这些问题本文全都不考虑,instead,使用了一个适合实验的受控环境)
本文试验描述
1,有一组固定K个客户端(这里客户端不宜太多,否则影响效果),每个客户端有固定的本地数据集
2,在每一轮开始时,随机选择C个客户端,并且服务器将当前全局算法状态(指模型的参数)发给这些客户端的每一个
3,每个客户端基于全局状态和本地数据集执行本地计算,并向服务器发送更新,然后,服务器将这些更新应用于全局状态,并重复该过程
④
关键观点:
1,数据中心优化中,计算成本远大于通讯成本,而在联合优化中通讯成本远大于计算成本
因此,本文打算增加额外的计算,来减少训练模型所需要的通信次数
主要方式如下:
1,增加并行性,每一轮选中更多客户端 (本实验未采用这种方式)
2,每个客户端上的计算增加,让每个客户端在每个通讯回合之间进行更复杂的计算(而不仅仅是梯度计算这种简单的计算)
2,读对应论文
二,下周计划
复杂聚合端的开发,需要学习socket与后端进行模型的交互,多线程技术,处理多个后端传来的信息,模型聚合技术。
目前打算是继续结合论文看代码,查明聚合端是如何聚合的,同时返回模型是如何更新的