Consensus-Based Distributed Optimization:

Practical Issues and Applications in Large-Scale Machine Learning

摘要

本文讨论了实际的基于共识的分布式优化算法。在基于共识的优化算法中,节点用共识迭代交织局部梯度下降步骤。梯度步骤将解决方案驱动到最小化器,而共识迭代使值同步,以便当目标是凸的且可分离时,所有节点收敛到网络范围的最优。共识更新需要沟通。如果通信是同步的并且节点在更新之前等待从其每个邻居接收一个消息,则进度受最慢节点的限制。为了对失败或停止节点具有鲁棒性,应使用异步通信。使用双向通信的异步协议会导致死锁,因此单向协议是必需的。然而,使用单向异步协议,不再可能保证共识矩阵是双重随机的。同时,协调方案必须在平均水平上达成共识,以避免偏向优化目标。我们报告了在MPI集群中运行Push-Sum Distributed Dual Averaging进行凸优化的实验。实验说明了当某些节点不可靠并且可能失败或消息遇到时变延迟时,使用异步基于共识的分布式优化的好处。

特点

基于平均的、异步的、单向拓扑

Push-sum Distributed Dual Averaging Method

从鲁棒性和有效性来看,使用单向的(基于推送)通信并且不依赖双随机矩阵的算法是最理想的。

通过分布式优化算法,所有的节点在优化过程中具有相同的作用,从而消除了单点故障并增加鲁棒性。

分布式可以避免其他的开销,比如聚合生成树。

基于共识的分布式优化算法通常将局部梯度下降步骤与分布式平均的迭代交织以协调或同步网络上的值。这些算法的一般主题是将局部优化例程与分布式一致性算法交错以协调节点网络的最佳可分离功能,其组件分布在计算节点上。

DDA算法

$$z_i(t+1)=\sum^n_{j=1}{p_{ij}z_j(t)-g_i(t)}$$

$$x_i(t+1)=\Pi^{\psi}_{\chi}{(z_i(t+1),a(t))}$$

解释:\(g_i(t)\) 是 \(f_i\) 的偏导数,以上第一条算法就是基于普通的Push-sum算法。问题在于,并不能保证 \(z_i(t)\) 是在约束集内的,也就不能使用 \(z\) 来求偏导数。第二个式子就是表示将 \(z_i(t+1)\) 投影成 \(x_i(t+1)\)用以求 \(\partial f_i(\cdot) /\partial x_i(\cdot)\)

TP:投影算法表示:
$$\Pi^\psi_\chi(z,a)= \arg \min_{x\in\chi}{\{<z,x>,\frac{1}{a}\psi(x)\}}$$
\(\psi(x)\)满足大于等于0且在原点等于0.

问题

 --同步算法的实现比较困难。迭代的时间取决于最慢的智能的通信时间。并且,这不能用于time-varying系统。
       本质上,我们是在优化加权的目标函数\(\hat{f}(x)=\sum^n_{i=1}\pi_i f_i(x)\).如果取双随机转移矩阵,那么有\(1^TP=1^T\),这保证了分布是均衡的。

 --双向通信模型的问题:

 --通讯开销大

 --可能产生死锁

PS-DDA算法

基于Push-sum和DDA算法的改进版本,消除了算法对双随机矩阵的要求。
算法描述:
$$w_i(t+1)=\sum^n_{j=1}p_{ij}w_j(t)$$

$$z_i(t+1)=\sum^{n}_{j=1}p_{ij}z_j(t)-g_i(t)$$

$$x_i(t+1)=\Pi^\psi_\chi ( \frac{z_i(t+1)}{w_i(t+1)},a(t))$$

实验步骤的要点

单向性
  PS-DDA要求单向发送信息的性质,接收器生成收到信息\(w\)和\(z\)的信息和。

数值稳定性
  随着迭代次数的增加,权重会逐渐减小。但是,如果有的节点计算特别快,会导致无法更新。可以通过增加条件,当\(w_i(t)\)小于某个阈值的时候就停止更新。

步长去同步化
  随着转移矩阵和通信的异步化,步长也需要作出相应的改变。如果继续使用同步的步长,可能出现迭代次数相差巨大的步长差距也很大,不利于“Averaging”。因此,使用一个接近一样的步长是有必要的,最简单有效的方法就是使用一个同步的时钟来取代迭代次数计算步长的方法,这样可以帮助决策向量更快地收敛。实际过程中采用多少步长合适,需要根据网络情况以及计算能力自行设计。

消息处理机制
  --采用异步的算法,无疑会产生使用消息的策略问题。分析两种极端的策略:
      等待直到收到每一个邻居至少一次消息,再开始计算更新。显然这是违背异步原则的,因为每次都要等待最晚发送的那个邻居。

--每次自动收取缓冲池的数据进行计算并清空缓冲池。这个策略的问题在于我们平均的只是“缓冲池”中的节点数据,而不是所有节点的数据。

--还有一个值得注意的地方,对更旧的数据采用较小的权重来“Averaging”会加快收敛速度。

通信策略
  由于每个节点的CPU的计算能力不同,计算函数的复杂度也可能不同,导致的可能问题是:计算和通讯速度极度不平衡。如果有一个节点计算速度极快,那它频繁收取缓冲信息,那么网络的平均计算可能无法继续。设置最小通信时间来阻止计算速度过快的情况。阈值设置需要根据实际情况,如果节点情况差异很小,甚至不需要设置。

转载于:https://www.cnblogs.com/sybear/p/10850139.html

分布式对偶平均法(DDA)相关推荐

  1. NeurIPS 2019公布获奖论文!新增杰出新方向奖项,微软华裔研究员斩获经典论文...

    来源:大数据文摘 备受瞩目的NeurlPS 2019周日一早在温哥华拉开序幕,今天,组委会通过一篇博客公布了包括杰出论文奖.杰出新方向论文奖等五大类奖项. NeurIPS,全称神经信息处理系统大会(C ...

  2. 淘宝资深算法专家永叔带你入门机器学习

    摘要:本文介绍了机器学习的基础知识以及在企业中的一些应用.通过本文的学习可以快速了解机器学习的基本概念.监督学习以及PAC学习理论,并了解机器学习在实际应用中现状. 数十款阿里云产品限时折扣中, 赶紧 ...

  3. NeurIPS2019获奖论文!7篇论文斩获!微软华裔研究员斩获经典论文

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 编辑:Sophia 计算机视觉联盟  报道  | 公众号 CVLianMeng 转载于 :https://mediu ...

  4. 学习笔记:The Log(我所读过的最好的一篇分布式技术文章

     学习笔记:The Log(我所读过的最好的一篇分布式技术文章)         前言 这是一篇学习笔记. 学习的材料来自Jay Kreps的一篇讲Log的博文. 原文很长,但是我坚持看完了,收获 ...

  5. 对偶算法与ADMM算法

    学习笔记,仅供参考,有错必纠 转载自:机器学习与运筹优化(六)对偶算法与ADMM算法 文章目录 摘要 ADMM算法 参考文献 摘要 上文我们介绍了约束优化问题和拉格朗日对偶思想.对偶算法就像是男生女生 ...

  6. 教你如何使用redis分布式锁

    文章目录 一.redis客户端实现 应用 1.利用set nx命令实现分布式锁 2.利用分布式锁命令 setnx 问题 1.为什么不直接调用jedis.del(key)方法而采用redis+lua实现 ...

  7. NLP论文 -《Distributed Representations of Sentences and Documents》-句子和文档的分布式表示学习(二)

    Distributed Representations of Sentences and Documents(句子和文档的分布式表示学习) 作者:Quoc Le and Tomas Mikolov 单 ...

  8. NLP论文 -《Distributed Representations of Sentences and Documents》-句子和文档的分布式表示学习

    Distributed Representations of Sentences and Documents(句子和文档的分布式表示学习) 作者:Quoc Le and Tomas Mikolov 单 ...

  9. 分布式机器学习系统笔记(一)——模型并行,数据并行,参数平均,ASGD

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 文章索引::"机器学 ...

最新文章

  1. 【python图像处理】彩色映射(续篇)
  2. Spring mvc 3.0 入门及应用
  3. Java中如何执行source命令,在Java中运行UNIX Source命令
  4. java电子通讯录毕业设计_(C)JAVA001电子通讯录(带系统托盘)
  5. Scroll View 使用心得
  6. HTML项目代码编写规范
  7. matlab算法用python做_机器学习笔记—朴素贝叶斯算法实现(matlab/python)
  8. 迅雷 故意限速_故意记录的价值
  9. 日置BT3562无法开机怎么办,日常如何进行保养
  10. xbox手柄测试_【喂你播】苹果官网上架Xbox无线手柄,那么未来会有果牌手柄吗?...
  11. c语言fat文件系统,【操作系统】简单FAT文件系统实现
  12. 各种快递查询--Api接口
  13. 汽车研发企业试验数据管理系统建设研究
  14. 电脑安装哪款linux系统好,四款linux操作系统总有一款适合你
  15. 编写PC操作系统的参考资料(不断更新)
  16. 微信小程序获取当前所在城市(地区定位与切换)
  17. 基于位操作的类CBitBuffer
  18. web前端框架——Vue的特性
  19. xctf攻防世界 MISC高手进阶区 misc1
  20. H5移动端项目实现手写签名功能 vue实现手写签名

热门文章

  1. 用什么软件测试显示器的赫兹,外媒测试90Hz与60Hz屏幕:大家真能看出差异吗?...
  2. 【cocos2d-x制作别踩白块儿】第六期:游戏交互实现
  3. 适用于Java开发人员的微服务:持续集成和持续交付
  4. 大疆 DJI mobile SDK系列详细教程——运行实例代码(跑通大疆官方提供Mobile SDK里的sample code)
  5. Python可视化:中国环保股上市公司市值Top20强
  6. 用jupyter notebook卸载Python第三方库
  7. 开始闭关修炼 冥思微软之大未来
  8. 组态王图素制作_组态王帮助界面的制作
  9. 非等级式随机森林----随机蕨分类器
  10. 纪念一个曾经的软件产品(八)——看图、阅读、音乐、日历