分布式深度学习之DC-ASGD
本篇笔记是听刘铁岩老师做Distributed Deep Learning:New Driving Force of Artificial Intelligence报告整理而成
深度学习梯度下降公式如下

常用的深度学习训练方法为:
Full batch -> SGD -> min-batch SGD
Stochastic Gradient Descent (SGD)
其中:
- full batch是将所有的样本过一遍再更新参数,更新的效率较低。
- SGD每一个样本更新一次参数,更新频率非常快。但是每一个样本对应的目标函数和整个数据集对应的目标函数是有差别的,因为这是一个随机抽样。可以证明,在随机抽样的时候SGD的目标函数对整个神经网络学习的目标函数来说是一个无偏估计,但这个无偏估计可能会有很大的方差,所以在学习的过程中会引入许多因方差导致的噪声,所以学习的收敛率不是很好。
- mini-batch是在这两者之间达到一个平衡,一方面希望比较频繁地更新参数,另一方面希望mini-batch降低单个样本带来的方差。
以上是标准的神经网络的训练方法。
challenges of training deep networks
- Overfitting: Too many parameters to learn from limited number of training examples 当一个网络变深的时候,该网络作为一个函数的容量程指数级增大,即当网络很深的时候,该网络的表达能力非常强。
- Gradient vanishing or exploding

上图是sigmoid导数的图像,该最大值为0.25,因此当级联导数时就会造成梯度消失。


在每一个隐节点做白化,并且是带参数的白化。做白化,让一批样本的均值为0。

The Deeper, The Better ?

训练数据越大,最优层数越深。
大量数据如何训练?

异步,每个机器算完自己的梯度就扔到服务器上,并不管服务器有没有来得及把大家加在一起更新模型,结果推送上去之后就继续往下走了,不去等别的机器,但过了一段时间觉得希望等别的机器的信息的时候,就把当时那个点上服务器上的模型拽下来,更新一下自己的起点,然后再往下走。每一台机器都这样走。
这个策略更新很快,而且不用担心服务器宕掉。但它的缺点是它的过程有点out of control,已经不是任何一种标准的Gradient Descent操作。一般称这种问题为delayed gradients。
Asynchronous data parallelization is fast due to no waiting time, but will suffer from delayed grandients(even if all machines have the same speed), which usually slows down the convergence.
有人证明过,因为有delayed gradients,虽然每一轮迭代的次数很快,但是整体的收敛的轮数变大了很多。

一台机器算得的g(W_(t))准备更新到服务器上的模型时,由于其他机器更新了模型,此时服务器上的W已经是W_(t+tao)。因为有delayed gradients,W_(t+tao)本来需要更新g(W_(t+tao)),而现在更新了g(W_(t))。
于是想到了泰勒展开。用g(W_(t))去表示g(W_(t+tao))。

一次项已经有了。二次项需要去计算。g(W_(t))是梯度,二次项就是梯度的梯度……这样就需要计算hessian matrix,而这个矩阵的计算复杂度远大于一次项梯度的计算。

Is there any efficient way of computing the hissian matrix?
这样就可以把异步的梯度下降做一个改进。
有了这样的思路后就可以做实验对比,通常单机版是收敛到最好的精度,一旦做多机并行,精度总会有所损失。如果做同步的多机并行,因为增大了batchsize所以会有精度损失,如果做异步的多机并行,因为其过程中会有gradient delay所以也会有精度损失。
实验效果:


类似的一些研究

后面总结一下


分布式深度学习之DC-ASGD的更多相关文章
- 使用horovod构建分布式深度学习框架
最近两周一直在尝试着分布式深度学习的架构,主要的原因一方面是几台机子全是1060卡,利用深度网络在较大数据样本上训练的效率极其低下,所以尝试着将几台机子做成分布式,看看能否提高训练效率:第二方面是有人 ...
- 分布式深度学习DDL解析
分布式深度学习DDL解析 一.概述 给一个庞大的GPU集群,在实际的应用中,现有的大数据调度器会导致长队列延迟和低的性能,该文章提出了Tiresias,即一个GPU集群的调度器,专门适应分布式深度学习 ...
- Horovod 分布式深度学习框架相关
最近需要 Horovod 相关的知识,在这里记录一下,进行备忘: 分布式训练,分为数据并行和模型并行两种: 模型并行:分布式系统中的不同GPU负责网络模型的不同部分.神经网络模型的不同网络层被分配到不 ...
- (转)分布式深度学习系统构建 简介 Distributed Deep Learning
HOME ABOUT CONTACT SUBSCRIBE VIA RSS DEEP LEARNING FOR ENTERPRISE Distributed Deep Learning, Part ...
- [源码解析] 深度学习分布式训练框架 Horovod (1) --- 基础知识
[源码解析] 深度学习分布式训练框架 Horovod --- (1) 基础知识 目录 [源码解析] 深度学习分布式训练框架 Horovod --- (1) 基础知识 0x00 摘要 0x01 分布式并 ...
- [源码解析] 深度学习分布式训练框架 horovod (2) --- 从使用者角度切入
[源码解析] 深度学习分布式训练框架 horovod (2) --- 从使用者角度切入 目录 [源码解析] 深度学习分布式训练框架 horovod (2) --- 从使用者角度切入 0x00 摘要 0 ...
- [源码解析] 深度学习分布式训练框架 horovod (3) --- Horovodrun背后做了什么
[源码解析] 深度学习分布式训练框架 horovod (3) --- Horovodrun背后做了什么 目录 [源码解析] 深度学习分布式训练框架 horovod (3) --- Horovodrun ...
- [源码解析] 深度学习分布式训练框架 horovod (5) --- 融合框架
[源码解析] 深度学习分布式训练框架 horovod (5) --- 融合框架 目录 [源码解析] 深度学习分布式训练框架 horovod (5) --- 融合框架 0x00 摘要 0x01 架构图 ...
- [源码解析] 深度学习分布式训练框架 horovod (6) --- 后台线程架构
[源码解析] 深度学习分布式训练框架 horovod (6) --- 后台线程架构 目录 [源码解析] 深度学习分布式训练框架 horovod (6) --- 后台线程架构 0x00 摘要 0x01 ...
随机推荐
- SPOJ 10628 Count on a tree (lca+主席树)
题意:给定一棵有n个结点的树,每一个点有一个权值.共同拥有m个询问.对于每一个询问(u,v,k),回答结点u至v之间第k小的点的权值. 思路:主席树+lca.首先指定一个根结点dfs一次并在此过程中建 ...
- jmeter函数和变量
函数和变量广泛的应用在JMeter的传参过程,其中函数可以被认为是某种特殊的变量,它们可以被采样器或者其他测试元件所引用. 常用函数 1.__RamdomString() / __Ramdom() 获 ...
- C++一些知识难点
什么是"引用"?申明和使用"引用"要注意哪些问题? 答:引用就是某个目标变量的"别名"(alias).相应用的操作与对变量直接操作效果全然同 ...
- SQL SERVER读书笔记:执行计划
执行计划对性能影响甚大. 系统是怎么得出一个号的执行计划的?主要是依赖于准确的统计信息.统计信息准确的前提下,执行语句重用性高,可避免频繁编译,这也有助于提高性能. 但如果怀疑统计信息不够准确,可以强 ...
- 自定义控件三部曲之动画篇(四)——ValueAnimator基本使用
前言:不要让别人的无知断送了你的梦想,永远坚信你所坚信的. 相关文章: <Android自定义控件三部曲文章索引>:http://blog.csdn.net/harvic880925/ar ...
- w3school
http://www.runoob.com/w3cnote_genre/android https://www.tutorialspoint.com/android/android_sqlite_da ...
- linux中udev简单的用法-->【转】
本文转载自:http://blog.csdn.net/qq_29729577/article/details/50825134 udev是Linux提供的一种在用户态管理设备的一种机制,udev的详细 ...
- k8s traefik ingress tls
使用下面的 openssl 命令生成 CA 证书: $ openssl req -newkey rsa:2048 -nodes -keyout tls.key -x509 -days 365 -out ...
- docker(三):Harbor 1.8.0 仓库的安装和使用
回顾: docker(一):docker是什么? docker(二):CentOS安装docker docker(部署常见应用):docker部署mysql 安装的先决条件 硬件环境 1.CPU ...
- WPF 资源管理器 WPF Explorer
最近项目中有个功能是读取外部设备的中的文件,同时由于项目样式限制,因此需要需要简单实现一个Window资源管理器功能. 由于为了接下来工作更好地完善功能,因此先一步做了一个DEMO用于参照和不断的修正 ...