Proximal Algorithms

这一节,介绍并行算法的实现.

问题的结构

令\([n] = \{1, \ldots, n\}\). 给定\(c \subseteq [n]\), 让\(x_c \in \mathbb{R}^{|c|}\)表示向量\(x\in \mathbb{R}^n\)的一个子向量(以\(c\)为指标的对应部分).当\(\mathcal{P}=\{c_1, \ldots, c_N\}\)满足:

\[\cup \mathcal{P} = [n] \\
c_i \cap c_j = \emptyset, i \ne j
\]

时, 称\(\mathcal{P}\)为\([n]\)的一个分割.

函数\(f\)的\(\mathcal{P}-\)分割满足:

\[f(x) = \sum_{i=1}^N f_i (x_{c_i})
\]

其中\(f_i : \mathbb{R}^{|c_i|} \rightarrow \mathbb{R}\).

在这种情况下:

\[(\mathbf{prox}_f(v))_i = \mathbf{prox}_{f_i}(v_i)
\]

所以,可以并行计算.

考虑下面的问题:

\[\mathrm{minimize} \quad f(x) + g(x)
\]

如果假设\(f\)是\(\mathcal{P}-\)分割的, 而\(g\)是\(\mathcal{Q}-\)分割的,那么问题等价于:



于是ADMM可以并行计算:

consensus

考虑下列问题如何进行并行计算:

\[\mathrm{minimize} \quad f(x) = \sum_{i=1}^N f_i (x)
\]

一个非常巧妙的变化:



可以看到,这样子,函数就是可分了, 只是多了一个附加条件.

将上面的问题转化为:

\[\mathrm{minimize} \quad \sum_{i=1}^N f_i(x_i) + I_{\mathcal{C}} (x_1, \ldots, x_N)
\]

其中\(\mathcal{C}\)是consensus set:

\[\mathcal{C} = \{(x_1, \ldots, x_N)| x_1 = \ldots, =x_N\}
\]

这样,问题就变成俩个可分函数了, 不过需要注意的是,二者的分割并不相同:

\[\mathcal{P} = \{[n], n+[n], 2n + [n], \ldots, (N-1)n + [n]\}
\]

而\(\mathcal{Q}\),即\(I_{\mathcal{C}}\)的分割为:

\[\mathcal{Q} = \{\{i, n+i, 2n + i, \ldots, (N-1)n + i\}|i=1, 2, \ldots, n\}
\]

注: 文中是\(i=1, 2, \ldots, N\)(我认为是作者的笔误).

这个时候的ADMM的第二步,即更新\(z\),可以直接为:

\[z_i = \bar{z} = (1/N) \sum_{i=1}^N z_i
\]



作者贴了一个比较形象的图来表示这种分割:

更为一般的情况

考虑下面的问题:

\[\mathrm{minimize} \quad f(x) = \sum_{i=1}^N f_i (x_{c_i})
\]

其中\(c_i \subseteq [n]\), 但是\(c_i \cap c_j, i \ne j\)并不一定为空集.

进行同样的转换:



其中

\[\mathcal{C} = \{(z_1, \ldots, z_N) | (z_i)_k = (z_j)_k \quad if \: k \in c_i \cap c_j\}
\]

同样等价于:

\[\mathrm{minimize} \quad \sum_{i=1}^N f_i(z_i) + I_{\mathcal{C}} (z_1, \ldots, z_N)
\]

相应的有一张比较形象的图:



前一部分的分割是类似的, 后一部分的分割,就是怎么说呢,就像图上的行一样的分.

ADMM为:



其中\(F_i = \{j \in [N] | i \in c_j\}\)

Exchange 问题

Global exchange

交换问题具有如下形式:



可以用一个实际问题来考量,每个\(i\)表示一个客户,\(x_i\)表示每个客户给予或者得到的总量,而\(f_i(x_i)\)表示该客户的效益,\(\sum_{i=1}^Nx_i=0\)这个条件表示,所以客户东西的总量是固定的,即收支平衡.

我们可以将此问题转化为(这个方法太好使了吧):

\[\mathrm{minimize} \quad \sum_{i=1}^N f_i(x_i) + I_{\mathcal{C}}(x_1, \ldots, x_N)
\]

其中

\[\mathcal{C} = \{(x_1, \ldots, x_N)\in \mathbb{R}^{nN} | x_1 + x_2 + \ldots + x_N=0\}
\]

我们知道,指示函数的proximal为投影算子, 于是:

\[(\Pi_{\mathcal{C}}(v_1, \ldots, v_N))_i = v_i - \bar{v}
\]

于是ADMM算法为:

更为一般的情况

有些时候,并不是所有客户都面对同一个市场,所以,每个\(x_i\)的维度什么对的也有区别:

\[\mathcal{C} = \Big \{ (z_1, \ldots, z_N) \Big| \sum_{i : k \in c_i} (z_i)_k =0 \Big \}
\]

有点和consenus的一般情况比较类似.

Allocation

allocation problem:



其中\(x_i \in \mathbb{R}^n\).

这个问题和交换问题也是相似的,区别在于总量\(b\), 而且要求\(x_i \ge 0\).

类似的,我们可以将上面的问题改写为:

\[\mathrm{minimize} \quad \sum_{i=1}^N f_i(x_i) + I_{\mathcal{C}} (x_1, \ldots, x_N)
\]

其中:

\[\mathcal{C} = \{(x_1, \ldots, x_N)| x_i \ge 0, x_1 + \ldots + x_N = b\}
\]

所以相应的算法是:



如何进行投影,会在下一节提到, 还有更加一般的情况,比如\(\sum_{i=1}^N x_i \le b\).

Proximal Algorithms 5 Parallel and Distributed Algorithms的更多相关文章

  1. Serialization and deserialization are bottlenecks in parallel and distributed computing, especially in machine learning applications with large objects and large quantities of data.

    Serialization and deserialization are bottlenecks in parallel and distributed computing, especially ...

  2. ACM会议列表与介绍(2014/05/06)

    Conferences ACM SEACM Southeast Regional Conference ACM Southeast Regional Conference the oldest, co ...

  3. Policy Gradient Algorithms

    Policy Gradient Algorithms 2019-10-02 17:37:47 This blog is from: https://lilianweng.github.io/lil-l ...

  4. (转) An overview of gradient descent optimization algorithms

    An overview of gradient descent optimization algorithms Table of contents: Gradient descent variants ...

  5. Matrix Factorization, Algorithms, Applications, and Avaliable packages

    矩阵分解 来源:http://www.cvchina.info/2011/09/05/matrix-factorization-jungle/ 美帝的有心人士收集了市面上的矩阵分解的差点儿全部算法和应 ...

  6. An overview of gradient descent optimization algorithms

    原文地址:An overview of gradient descent optimization algorithms An overview of gradient descent optimiz ...

  7. 【论文翻译】An overiview of gradient descent optimization algorithms

    这篇论文最早是一篇2016年1月16日发表在Sebastian Ruder的博客.本文主要工作是对这篇论文与李宏毅课程相关的核心部分进行翻译. 论文全文翻译: An overview of gradi ...

  8. [转载]Maximum Flow: Augmenting Path Algorithms Comparison

    https://www.topcoder.com/community/data-science/data-science-tutorials/maximum-flow-augmenting-path- ...

  9. Awesome Algorithms

    Awesome Algorithms A curated list of awesome places to learn and/or practice algorithms. Inspired by ...

随机推荐

  1. STM32 CAN用队列缓冲接收的例子

    [1]CAN接收用队列缓冲的例子: 发单帧没有问题,多帧或者连续发两帧就有问题.

  2. db9串口接头的定义

    这个接头都是以公头为准,所有接头还是以公头去记. RS-232端(DB9公头/针型)引脚定义 2: RXD 3:TXD 5:GND 1/4/6:内部相链接 7/8   :内部相链接 1.RS-232端 ...

  3. [学习总结]1、View的scrollTo 和 scrollBy 方法使用说明和区别

    参考资料:http://blog.csdn.net/vipzjyno1/article/details/24577023 非常感谢这个兄弟! 先查看这2个方法的源码: scrollTo: 1 /** ...

  4. [源码解析] PyTorch分布式优化器(3)---- 模型并行

    [源码解析] PyTorch分布式优化器(3)---- 模型并行 目录 [源码解析] PyTorch分布式优化器(3)---- 模型并行 0x00 摘要 0x01 前文回顾 0x02 单机模型 2.1 ...

  5. Unity——WegGL打包问题

    Rendering设置 Gamma和Linear颜色空间,两者有色差,Gamma有个2.25左右的修正值: WebGL2.0可用的情况,只支持Deferred Render延迟渲染,且只支持Linea ...

  6. Boss直聘App上“天使投资、VC、PE” 与“A轮、B轮、C轮融资”的关系

    我们经常看到朋友圈里某某公司获得了某轮融资,所谓的A轮B轮究竟是个什么概念呢?今天就跟小伙伴们分享一下A.B.C.D轮融资与天使投资.VC.PE的关系. 天使投资(AI):天使投资所投的是一些非常早期 ...

  7. Nginx结构原理全解析

    目录 一.Nginx简单介绍 二.Nginx优势 IO多路复用epoll模型 轻量级 Nginx的基本功能 .Nginx应用场景 Nginx代理 三.Nginx的结构解析 进程操作 事件模型 事件处理 ...

  8. 减轻内存负担,在 pymysql 中使用 SSCursor 查询结果集较大的 SQL

    前言 默认情况下,使用 pymysql 查询数据使用的游标类是 Cursor,比如: import pymysql.cursors # 连接数据库 connection = pymysql.conne ...

  9. java 多线程 Thread.join子线程结束父线程再运行;join(long):等待超时毫秒数

    Join的使用 目的:当子线程运行结束后,父线程才能再继续运行 /** * @ClassName ThreadJoinExample * @projectName: object1 * @author ...

  10. java 数据类型:ArrayList;LinkList性能分析

    各种线性表的性能分析. java提供的List就是一个线性表接口,ArrayList和LinkedList是线性表的两种实现.基于数组的线性表和基于链表的线性表. 一般来说,我们无需理会ArrayLi ...