【论文考古】分布式优化 Communication Complexity of Convex Optimization
J. N. Tsitsiklis and Z.-Q. Luo, “Communication complexity of convex optimization,” Journal of Complexity, vol. 3, no. 3, pp. 231–243, Sep. 1987, doi: 10.1016/0885-064x(87)90013-6.
问题描述
两个用户各自有一个凸函数\(f_i\),相互交互最少的二进制消息,从而找到\(f_i+f_2\)的最优点
基本定义
\(\mathscr{F}\):定义域\([0,1]^n\)上凸函数的一个集合
\(I(f;\epsilon)\in[0,1]^n\):定义域上,给定误差\(\epsilon\)后\(f\)最小值对应的自变量集合(\(f(x) \leq f(y)+\varepsilon, \forall y \in[0,1]^{n}\))
\(C(f_1,f_2;\epsilon,\pi)\):在协议\(\pi\)和精度\(\epsilon\)下,两个函数通过交换信息找到集合\(I\left(f_{1}+f_{2} ; \varepsilon\right)\)中元素所需的消息数目
\(C(\mathscr{F} ; \varepsilon, \pi)\):该协议在最坏情况下找到目标所需交换的消息数量
\[C(\mathscr{F} ; \varepsilon, \pi)=\sup _{f_{1}, f_{2} \in \mathscr{F}} C\left(f_{1}, f_{2} ; \varepsilon, \pi\right)
\]\(C(\mathscr{F} ; \varepsilon)\):最优协议下所需的交换消息的数量,又称为\(\epsilon\)-communication complexity
\[C(\mathscr{F} ; \varepsilon)=\inf _{\pi \in \mathrm{I}(\varepsilon)} C(\mathscr{F} ; \varepsilon, \pi)
\]消息传输的模式,通信\(T\)次
每次传播信息的计算
\[m_{i}(t)=M_{i, t}\left(f_{i}, m_{j}(0), \ldots, m_{j}(t-1)\right)
\]最终最优点的确定
\[x=Q\left(f_{1}, m_{2}(0), \ldots ., m_{2}(T-1)\right)
\]
Straightforward Lower Bound
Lemma 1:\(\text { If } \mathscr{F} \subset \mathscr{G} \mathscr{\text { then }} C(\mathscr{F} ; \varepsilon) \leq C(\mathscr{G}; \varepsilon)\)
简单函数所需传输的消息数量更少
Proposition:\(C\left(\mathcal{F}_{Q} ; \varepsilon\right) \geq O(n(\log n+\log (1 / \varepsilon)))\)
其中\(\mathcal{F}_{Q}\)表示带有\(f(x)=\|x-x^\star\|^2\)形式的二次函数的集合,其中\(x^\star\in [0,1]^n\)。根据Lemma知道,选择最简单的函数能找到下界。考虑\(f_1=0\),所以\(f_2\)的最小值需要控制在\(\epsilon^{1/2}\)的精度内,因此至少需要\(\left(A n / \varepsilon^{1 / 2}\right)^{B n}\)个半径为\(\epsilon^{1/2}\)Euclidean ball来覆盖中\([0,1]^n\)。因此最终\(Q\)的解集的势至少就是\(\left(A n / \varepsilon^{1 / 2}\right)^{B n}\)。由于函数的值域的势不会超过定义域的势,所以\(Q\)的解集的势不超过\(2^T\),也就有\(T \geq O(n(\log n+\log (1 / \varepsilon))\)。
Naive Upper Bounds
The method of the centers of gravity (MCG) 在求解凸函数势需要最小次数的梯度计算。将MCG方法扩展到了分布式的场景,得到上界。
一维下的最优算法
算法核心在于用消息指示不同的计算步骤,而不是传递数据。
算法首先定义两个区间,分别表示
- \([a,b]\):\(f_1+f_2\)最优点所在的区间,\(x^\star \in [a,b]\)
- \([c,d]\):\(f'(x^{\star})\),\(f'_1(\frac{a+b}{2})\),\(f'_2(\frac{a+b}{2})\)所在的区间
以区间\([c,d]\)为基准,分别计算消息\(m_1,m_2\)
- \(f'_1(\frac{a+b}{2})\in [c,\frac{c+d}{2}]\)则\(m_1=0\),否则\(m_1=1\)
- \(-f'_2(\frac{a+b}{2})\in[c,\frac{c+d}{2}]\)则\(m_2=0\),否则\(m_2=1\)
根据消息\(m_1,m_2\)的不同组合,分别缩减区间\([a,b]\)或者\([c,d]\)。缩减的设计总从两个原则
- \((f_1+f_2)'=f'_1+f'_2\),导值的正负性来找最小值
- 通过压缩\((f_1+f_2)'(\frac{a+b}{2})\)趋于零,从而确定\(\frac{a+b}{2}\)就是最小值
代码:
import numpy as np
import matplotlib.pyplot as plt
def f1(x):
return (x - 2) ** 2
def df1(x):
return 2 * (x - 2)
def f2(x):
return (x + 1) ** 2
def df2(x):
return 2 * (x + 1)
a, b, c, d = -1, 1, -3, 3
eps = 0.1
while b - a > eps and d - c > eps:
if df1((a + b) / 2) <= (c + d) / 2:
m1 = 0
else:
m1 = 1
if -df2((a + b) / 2) <= (c + d) / 2:
m2 = 0
else:
m2 = 1
if m1 == 0 and m2 == 1:
a = (a + b) / 2
elif m1 == 1 and m2 == 0:
b = (a + b) / 2
elif m1 == 1 and m2 == 1:
c = (c + d) / 2
elif m1 == 0 and m2 == 0:
d = (c + d) / 2
print('传输消息+2')
print(a, b, c, d)
if b - a <= eps:
optimum = a + eps
else:
optimum = f1((a + b) / 2) + f2((a + b) / 2)
print(optimum)
print(f1(0.5) + f2(0.5))
# 直观画图结果
x = np.linspace(-1, 2, 100)
y = f1(x) + f2(x)
plt.plot(x, y)
plt.show()
【论文考古】分布式优化 Communication Complexity of Convex Optimization的更多相关文章
- [论文翻译] 分布式训练 Parameter Sharding 之 Google Weight Sharding
[论文翻译] 分布式训练 Parameter sharding 之 Google Weight Sharding 目录 [论文翻译] 分布式训练 Parameter sharding 之 Google ...
- [源码解析] PyTorch分布式优化器(1)----基石篇
[源码解析] PyTorch分布式优化器(1)----基石篇 目录 [源码解析] PyTorch分布式优化器(1)----基石篇 0x00 摘要 0x01 从问题出发 1.1 示例 1.2 问题点 0 ...
- [源码解析] PyTorch分布式优化器(2)----数据并行优化器
[源码解析] PyTorch分布式优化器(2)----数据并行优化器 目录 [源码解析] PyTorch分布式优化器(2)----数据并行优化器 0x00 摘要 0x01 前文回顾 0x02 DP 之 ...
- [源码解析] PyTorch分布式优化器(3)---- 模型并行
[源码解析] PyTorch分布式优化器(3)---- 模型并行 目录 [源码解析] PyTorch分布式优化器(3)---- 模型并行 0x00 摘要 0x01 前文回顾 0x02 单机模型 2.1 ...
- [论文翻译] 分布式训练 Parameter sharding 之 ZeRO
[论文翻译] 分布式训练 Parameter sharding 之 ZeRO 目录 [论文翻译] 分布式训练 Parameter sharding 之 ZeRO 0x00 摘要 0x01 综述 1.1 ...
- 【论文考古】量化SGD QSGD: Communication-Efficient SGD via Gradient Quantization and Encoding
D. Alistarh, D. Grubic, J. Li, R. Tomioka, and M. Vojnovic, "QSGD: Communication-Efficient SGD ...
- 论文阅读之 A Convex Optimization Framework for Active Learning
A Convex Optimization Framework for Active Learning Active learning is the problem of progressively ...
- Google关于Spanner的论文中分布式事务的实现
Google关于Spanner的论文中分布式事务的实现 Google在Spanner相关的论文中详细的解释了Percolator分布式事务的实现方式, 而且用简洁的伪代码示例怎么实现分布式事务; Pe ...
- 凸优化(Convex Optimization)浅析
本博客已经迁往http://www.kemaswill.com/, 博客园这边也会继续更新, 欢迎关注~ 在机器学习中, 很多情况下我们都需要求得一个 问题的全局最优值(global optimum) ...
随机推荐
- redis 入门使用
一.Redis 数据类型及结构特点 Redis 最常见的5中数据结构有 String(字符串),List(列表),Set(集合),Hash(散列),Sorted Sets (有序集合),下表简单总结 ...
- 《剑指offer》面试题06. 从尾到头打印链表
问题描述 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 <= 10 ...
- Pyomo+GLPK使用
Pyomo下载安装 GLPK的下载和安装参考上一篇博客. mkdir Pyomo cd Pyomo wget https://github.com/Pyomo/pyomo/archive/5.6.6. ...
- [JavaWeb]利用JSP的编码特性制作免杀后门
利用JSP的编码特性制作免杀后门 这里是借鉴了Y4stacker师傅的thinkings 待解决的问题 JSP解析 JSP"乱码"为什么还能被识别 "乱码"的J ...
- 在js中如何区分深拷贝与浅拷贝?
一.自我理解 简单来讲就是:深拷贝层层拷贝,浅拷贝只拷贝第一层. 在深拷贝中,新对象中的更改不会影响原对象,而在浅拷贝中,新对象中的更改,原对象中也会跟着改. 在深拷贝中,原对象与新对象不共享相同的属 ...
- APC 篇—— APC 挂入
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...
- uni微信小程序优化,打包后的import vue路径是可删除的
这次的优化我公司项目主包只减小了32kb,但是减小的不仅仅是主包,所有分包均在没有改动任何业务代码的情况下完成了压缩空间的优化. 主包分包压缩空间的优化都要视项目而定,32kb只是我公司的小程序项目. ...
- ApacheCN 大数据译文集 20211206 更新
PySpark 大数据分析实用指南 零.前言 一.安装 Pyspark 并设置您的开发环境 二.使用 RDD 将您的大数据带入 Spark 环境 三.Spark 笔记本的大数据清理和整理 四.将数据汇 ...
- LCT 入门
这是一份 \(\rm LCT\) 入门总结. 关于 \(\rm LCT\) 的复杂度这里不会提及,只会记录 \(\rm LCT\) 的基本操作和经典例题,但神奇的 \(\rm LCT\) 虽然常数巨大 ...
- HTML页元素自适应+居中总结(不定期补充)
感谢大佬:https://www.cnblogs.com/SallyShan/p/11480685.html 图片自适应 背景图片自适应 /*背景页*/ #page_content{ width: 1 ...