背景:

在分布式学习中,如下图所示,将深度学习中的梯度计算任务分成n份,交给n个从机进行计算,再将计算后的梯度返还到主机,用于模型的更新,这样计算的速度相比于单个主机进行计算,速率得到大大提升。尤其是面对大量数据集,神经网络深度比较深的情况。但是,这种方法也同样存在问题,假设在分布式系统上使用SGD(随机梯度下降),从机每次输入一个样本数据(xi,yi),就需要将梯度计算出来送入主机进行更新,主机与从机的交流损耗就会大幅度增加。所以为了解决这个问题,常用的算法有以下几种类型。
核心思想:将传输过程中的梯度进行压缩,取值,从而减小传输过程中的时间损耗。

Related work:

Stochastic Gradient Descent(SGD):
每次仅仅选用一个样本数据进行计算梯度,并将梯度用来更新

Batch Gradient Descent(BGD):
将全部的数据输入到模型中进行梯度计算

SGD相比于BGD,优势在于它的更新波动大一些,不容易陷入局部最优点,并且内存的损耗相对较小,所以SGD算法也经常在机器学习上使用

常见对于梯度(gradient)的处理方法:

1、quantize gradient(biased):
将梯度进行分桶,以桶中的平均值、中位数作为梯度的代表值,从而减少损耗(reduction)。
如下图所示:
我们将Values中的梯度值根据大小分成桶,大小相近的分到一块,然后我们以,得到分桶的数据,我们以桶的中位数代表该桶中的梯度值,例如:0.08和0.02分到第三个桶中,因此这俩数据的值都被记为[0.1,0.3]区间的中位数0.2,从而达到数据压缩的目的,而我们在分布式学习中只需要将桶中的数据传输,大大减少了主机和从机之间的传输损耗。

2、sparsify gradient(unbiased)
在大部分场景应用中,神经网络模型的梯度往往呈现稀疏性(大部分值为零),如下图所示(鸢尾花数据集迭代20000次梯度分布图)也就意味着,我们在更新时,只有部分权值W进行更新,大部分的权值更新要么更新变化不大,要么不进行更新。所以我们可以只选用最大的k个梯度值进行传输更新,而其他的梯度我们认为是零。所以代表性的方法是只取出梯度值中的Topk来进行权值更新,提高速度,减少损耗(reduction)

算法一:

Sketched-SGD(类型:sparsify gradient):

该算法是上述算法分类中的sparsify gradient(unbiased)方法,取出Topk的梯度来进行更新,只取Topk进行更新存在一个问题:不能保证算法的收敛特性(no convergence guarantees),所以该算法为了克服该问题引入了误差计算。核心思想是:通过每次计算更新累积误差来实现 convergence guarantees。
下图是该算法的伪代码:

REFERENCES:
[1]SketchML: Accelerating Distributed Machine Learning
with Data Sketches
[2]Communication-efficient Distributed SGD with
Sketching
[3]Sebastian U Stich, Jean-Baptiste Cordonnier, and Martin Jaggi. Sparsified sgd with memory. In
Advances in Neural Information Processing Systems, pages 4452–4463, 2018.

以上内容只是个人的理解总结,如有错误还烦请大家批评指正。以后会不定时更新内容。

浅谈分布式学习(SGD)中提高速率的方法相关推荐

  1. 浅谈在ASP.NET中数据有效性校验的方法

    作者:未知 作为一名程序员,一定要对自己编写的程序的健壮性负责,因此数据的校验无论在商业逻辑还是系统实现都是必不可少的部分. 我这里总结了一种自认为比较不错的asp.net(C#)的数据校验方法,如大 ...

  2. 综合评价模型的缺点_浅谈交通影响评价中不同交通预测方法的特性

    目前,据小编经验觉得,我国交通影响评价的工作中仍有很多问题未得到很好的解决,主要表现在:交通需求预测模型有待进一步精细.交通的影响程度评价内容与指标不够明确.报告中提出的交通改善措施很难落实到位等方面 ...

  3. 嵌入式AI —— 6. 为糖葫芦加糖,浅谈深度学习中的数据增广

    没有读过本系列前几期文章的朋友,需要先回顾下已发表的文章: 开篇大吉 集成AI模块到系统中 模型的部署 CMSIS-NN介绍 从穿糖葫芦到织深度神经网络 又和大家见面了,上次本程序猿介绍了CMSIS- ...

  4. 关于计算机素养论文,浅谈计算机专业教学中如何提高学生计算机素养

    [摘 要] 计算机素养在培养学生核心素养方面具有重要意义,因此在计算机教学中,教师应结合计算机专业教学习现状,结合学生的全面发展需求和未来的职业规划,转变自身传统的教学观念,运用现代化的教学思维,将新 ...

  5. 浅谈初中英语教学中如何激发学生的学习兴趣

    浅谈初中英语教学中如何激发学生的学习兴趣 汪东峰 甘肃省天水市麦积区花牛中心学校 [摘 要]兴趣是促使教学活动初见成效的关键,也是一切教学活动开展的先决条件,培养兴趣对于任何学科而言都有一定的基础意义 ...

  6. 浅谈工作/学习中找bug的思路_0_调试、try-catch以及打印报错信息和百度的方法、No default constructor for entity: com.gyf.bos.mod

    浅谈工作/学习中找bug的思路_0 文章目录 浅谈工作/学习中找bug的思路_0 调试.try-catch-以及打印报错信息和百度的方法 前言 描述 解决思路1 -- 检查移植的代码,细枝末节也不要忽 ...

  7. 浅谈数字媒体艺术中的技术应用-4-技术路线和学习地图

    我们先来看下制作一个互动展示装置的设计思路和技术实现. 当我们大脑里面有一个点子之后,怎么最终输出成一个互动展示装置呢?首先我们需要设计一个外观造型,其次我们需要评估一下这个装置的互动方式,是用VR眼 ...

  8. ai在计算机教学中的应用,浅谈人工智能在教育中的应用

    浅谈人工智能在教育中的应用 孙立友 摘要:随着人工智能技术的进步,以及研究的深入和在教育领域的逐步推广,对教育领域产生了深远的影响.人工智能对于弥补当前教育存在的种种缺陷和不足,推动教育发展改革和教学 ...

  9. 计算机教学在教学方面的作用,浅谈信息技术在教学中的重要作用

    浅谈信息技术在教学中的重要作用 时间:2018-06-06 来源:未知 作者:admin 点击:次 核心提示:浅谈信息技术在小学语文教学中的重要作用 摘要:小学生的年龄特点,决定了他们对客观事物的认识 ...

最新文章

  1. laravel 重写以及500错误
  2. 【转】C++11 并发指南五(std::condition_variable 详解)
  3. python 文件操作的模块_Python之文件操作修改模块
  4. 【转】文本格式导入物料凭证模板
  5. 2016年华为校招上机考试试题答案
  6. qt在窗口的子部件中绘制矩形
  7. MethodInvokingJobDetailFactoryBean的并发问题
  8. 95-190-448-源码-window-Trigger-CountTrigger
  9. SpringBoot : 注解@Resource
  10. 赛锐信息:SAP系统用户账号类型介绍
  11. 数字化工厂的五大系统_工厂通过MES系统对车间设备数字化管理
  12. linux hasp的加密狗驱动程序,hasp加密狗驱动下载-hasp加密狗驱动(圣天诺加密狗驱动) win7/8/10 官方通用版 - 河东下载站...
  13. matlab 画图 浓淡有别,matlab画图命令汇总
  14. ManualResetEvent实现线程的暂停与恢复
  15. linux 字幕制作工具,字幕制作工具
  16. 欧姆龙nb触摸屏通信_313C和欧姆龙NB触摸屏怎么通讯
  17. PHP - 使用file_get_contents下载远程文件到本地
  18. 技术在游戏研发中的重要性
  19. Laravel Excel(maatwebsite/excel )导入
  20. 社工利器--setoolkit之钓鱼攻击

热门文章

  1. 简单的css条型动画
  2. 小波包分解-MATLAB
  3. 如何使用文献管理软件EndNote x9 x9.1高效管理科研相关参考文献 相关论文
  4. 帆软报表动态数据源插件2.0使用教程
  5. 物理量子计算机论文,冷槽离子量子计算机中的温度效应-理论物理专业毕业论文.docx...
  6. vbs脚本连续发送信息简易版本
  7. 【技术解析】数通是什么?
  8. Android CPU Profile/TraceView
  9. 良心整理!500G Java学习资料免费分享!
  10. 关于mongoVue添加、导入数据