写点什么

ASGD

  • 2019-11-29
  • 本文字数:1833 字

    阅读完需:约 6 分钟

ASGD

简介

Asynchronous Stochastic Gradient Descent (ASGD)异步的随机梯度下降在深度学习模型的训练中经常被用到,但是会存在 delayed gradients 的问题,就是当一个 worker 向参数 server 端提交它算出的梯度时,server 端其实已经被其它 worker 更新好多次了。因此该工作提出了梯度补偿的概念,主要方法是利用梯度函数的泰勒展开去有效逼近 loss 函数的 Hessian 矩阵。通过在 cifar 和 imagenet 数据集上验证,实验结果显示,新的方法 DC-ASGD 性能优于同步 SGD 和异步 SGD,几乎接近序列 SGD 的性能。

ASGD 介绍

传统的 SGD,更新公式为:



其中,wt 为当前模型,(xt, yt)为随机抽取的数据,g(wt; xt, yt)为(xt, yt)所对应的经验损失函数关于当前模型 wt 的梯度,η为步长/学习率。


同步随机梯度下降法(Synchronous SGD)在优化的每轮迭代中,会等待所有的计算节点完成梯度计算,然后将每个工作节点上计算的随机梯度进行汇总、平均并上面的公式更新模型。之后,工作节点接收更新之后的模型,并进入下一轮迭代。由于 Sync SGD 要等待所有的计算节点完成梯度计算,因此好比木桶效应,Sync SGD 的计算速度会被运算效率最低的工作节点所拖累。


异步随机梯度下降法(Asynchronous SGD)在每轮迭代中,每个工作节点在计算出随机梯度后直接更新到模型上,不再等待所有的计算节点完成梯度计算。因此,异步随机梯度下降法的迭代速度较快,也被广泛应用到深度神经网络的训练中。然而,Async SGD 虽然快,但是用以更新模型的梯度是有延迟的,会对算法的精度带来影响。如下图:



在 Async SGD 运行过程中,某个工作节点 Worker(m)在第 t 次迭代开始时获取到模型的最新参数 [公式] 和数据(xt, yt),计算出相应的随机梯度 [公式] ,并将其返回并更新到全局模型 w 上。由于计算梯度需要一定的时间,当这个工作节点传回随机梯度[公式]时,模型[公式]已经被其他工作节点更新了τ轮,变为了 [公式] 。也就是说,Async SGD 的更新公式为:



可以看到,对参数[公式]更新时所使用的随机梯度是 g(wt),相比 SGD 中应该使用的随机梯度 g(wt+τ)产生了τ步的延迟。因而,我们称 Async SGD 中随机梯度为“延迟梯度”。


延迟梯度所带来的最大问题是,由于每次用以更新模型的梯度并非是正确的梯度,因为 g(wt) ≠ g(wt+τ),所以导致 Async SGD 会损伤模型的准确率,并且这种现象随着机器数量的增加会越来越严重。


因此 DC-ASGD 算法设计了一种可以补偿梯度延迟的方法,他们首先研究了正确梯度 g(wt+τ)和延迟梯度 g(wt)之间的关系,我们将 g(wt+τ)在 wt 处进行泰勒展开得到:



其中,∇g(wt)为梯度的梯度(loss fuction 的 Hessian 矩阵,因此梯度 g(wt)是 loss 函数关于参数 wt 的导数)。H(g(wt))为梯度的 Hessian 矩阵。那么如果将所有的高阶项都计算出来,就可以修正延迟梯度为准确梯度了。然而,由于余项拥有无穷项,并且计算量十分复杂,所以无法被准确计算。因此,可用上述公式中的一阶项进行延迟补偿:



但是上面的公式还是要计算∇g(wt)(参数的 Hessian 矩阵),但是在 DNN 中有上百万甚至更多的参数,计算和存储 Hessian 矩阵∇g(wt)很困难。因此,寻找 Hessian 矩阵的一个良好近似是能否补偿梯度延迟的关键。根据费舍尔信息矩阵的定义,梯度的外积矩阵是 Hessian 矩阵的一个渐近无偏估计:



其实,进一步可以写成:[公式] 。


又可知,在 DNN 中用 Hessian 矩阵的对角元素来近似表示 Hessian 矩阵,可在显著降低运算和存储复杂度的同时还可以保持算法精度,于是我们采用外积矩阵的 diag(G(wt))作为 Hessian 矩阵的近似。为了进一步降低近似的方差,我们使用一个(0,1]之间参数λ来对偏差和方差进行调节。另外由于:



综上,带有延迟补偿的异步随机梯度下降法(DC-ASGD):

具体算法

算法 1 中,worker m 从参数服务器中 pull 最新的模型参数 w,然后计算得到梯度 [公式] 后 push 到参数服务器中。


算法 2 中,当参数服务器接收到 worker m 算出来的梯度 [公式]后,利用梯度补偿公式算出下一个时间刻参数服务器正确的参数。如果参数服务器接受到 worker m 的 pull 参数请求时,将当前参数服务器的参数 wt 备份成 w_bak,并将 wt 发送给 worker m。


实验

在 CIFAR10 数据集和 ImageNet 数据集上对 DC-ASGD 算法进行了评估,实验结果显示:DC-ASGD 算法与 Async SGD 算法相比,在相同的时间内获得的模型准确率有显著的提升,并且也高于 Sync SGD,基本可以达到 SGD 相同的模型准确率。


本文转载自 Alex-zhai 知乎账号。


原文链接:https://zhuanlan.zhihu.com/p/80978479


2019-11-29 08:001881

评论

发布
暂无评论
发现更多内容

SpringCloud 微信小程序 获取用户信息一键登录

Java你猿哥

Java 小程序 spring ssm spring chloud

阿里资深架构师整理出来的一份Java核心知识点分享给大家.pdf

Java你猿哥

Java 面试 面经 八股文 java八股文呢

迄今为止把Mybatis讲解的最详细的PDF,图文并茂,通俗易懂

Java你猿哥

Java 面试 mybatis ssm Mybatis框架

龙蜥白皮书精选:CentOS 迁移场景的平滑迁移方案

OpenAnolis小助手

Linux 开源 操作系统 CentOS迁移 龙蜥白皮书

“阿里爸爸”最新产出:Java面试突击核心讲(1658页),转载40W+

Java你猿哥

Java 面试 面经 八股文 Java八股文

拓展测试领域,不要不断重复相同的测试

测吧(北京)科技有限公司

测试

Redis事务

京茶吉鹿

nosql redis

编解码持续升级,「硬」实力铸就视频云最优解

阿里云CloudImagine

云计算 芯片 视频云

NFTScan 与 Adot 达成合作伙伴,双方在多链 NFT 数据方面展开合作

NFT Research

NFT NFTScan

Github最新霸榜!“精华版”Java八股文10天帮你彻底解决大厂难题

Java你猿哥

Java 面试 面经 Java工程师 八股文

和ChatGPT pair整理的测试类型清单

BY林子

软件测试 测试类型 ChatGPT

架构师日记-为什么数据一致性那么难

京东科技开发者

数据库 MQ 分布式系统 数据一致性 企业号 4 月 PK 榜

使用NSIS打包超大型软件的几个注意事项

大伟

GitHub置顶半个月!78w字百亿级并发设计(全彩PDF)

做梦都在改BUG

Java 架构 系统设计 高并发

Alibaba最新“618,双十一”亿级并发系统设计(2023版小册开源)

架构师之道

Java 编程 高并发

借降本增效之名,探索开闭原则架构设计

京东科技开发者

低代码 软件架构 开闭原则 企业号 4 月 PK 榜

浅谈 Spring Bean 的生命周期

做梦都在改BUG

Java spring 生命周期 bean

GitHub爆火疯传“Java面试手册2023”还原面试现场,通过率90%

三十而立

Java 程序员 IT java面试 大厂面试

基于Label studio实现UIE信息抽取智能标注方案,提升标注效率!

汀丶人工智能

人工智能 自然语言处理 信息抽取 labelstudio 智能标注

关注测试原因(针对风险测试)的基于问题的测试手段

测吧(北京)科技有限公司

测试

集成技术,大山里的金子

阿呆

IotLink版本更新V1.10.0

山东云则信息科技

Flutter 异步编程指南

京东科技开发者

flutter dart 异步任务编程 APP开发 企业号 4 月 PK 榜

想成为 Spring 大牛?先了解这 6 种添加 Bean 的方式

Java你猿哥

spring ssm Spring Bean

C# 世界的《Effective C++》,来自.Net之父的核心揭秘

博文视点Broadview

JAVA多线程并发编程-避坑指南

京东科技开发者

并发编程 线程 多线程并发 编码规范 企业号 4 月 PK 榜

阿里为双十一整理的JVM性能优化文档,竟被GitHub“抢开”

做梦都在改BUG

Java 性能优化 JVM 性能调优

多层嵌套 if-else 代码优化重构的几种方案

Java你猿哥

Java ssm Java工程师 if-else

真香!阿里最新出品Java面试核心讲(终极版),Github已星标50K

三十而立

Java IT java面试 面试资料

iOS代码覆盖率(一)-全量覆盖率自动化实践

京东科技开发者

swift pod 脚本自动化 企业号 4 月 PK 榜 全量覆盖率

浅谈 Spring Bean 的生命周期

Java你猿哥

Java spring ssm Spring Bean

ASGD_文化 & 方法_Alex-zhai_InfoQ精选文章