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. 数仓day01

    1. 该项目适用哪些行业? 主营业务在线上进行的一些公司,比如外卖公司,各类app(比如:下厨房,头条,安居客,斗鱼,每日优鲜,淘宝网等等) 这类公司通常要针对用户的线上访问行为.消费行为.业务操作行 ...

  2. EBS 抓trace 文件

    如果要对FORM的操作做TRACE操作,可以使用 帮助->诊断->跟踪 中启用跟踪功能来实现. 但是如果要实现对并发请求的trace,需要在 系统管理员->并发->方案-> ...

  3. mysql 将A表的a字段赋值给B表的b字段

    A.B为2个不同的表,将A表的a字段赋值给B表的b字段:update B set b = (select a from A where A.id = B.id) where B.b is null 注 ...

  4. SSO(单点登录)示例

    此文为转载文章,出处:https://www.cnblogs.com/jpfss/p/9273680.html SSO在我们的应用中非常常见,例如我们在OA系统登录了,我们就可以直接进入采购系统,不需 ...

  5. 1.使用Lucene开发自己的搜索引擎--倒排索引基础知识

    1.单词--文档矩阵 单词-文档矩阵是表达两者之间所具有的一种包含关系的概念模型,图3-1展示了其含义.图3-1的每列代表一个文档,每行代表一个单词,打对勾的位置代表包含关系.

  6. 深度学习初探——符号式编程、框架、TensorFlow

    一.命令式编程(imperative)和符号式编程(symblic) 命令式: import numpy as np a = np.ones(10) b = np.ones(10) * 2 c = b ...

  7. Redis哨兵 部署和配置

    目录 一.哨兵简介 哨兵介绍 哨兵原理 二.哨兵部署 环境介绍 哨兵配置 三.使用验证 一.哨兵简介 哨兵介绍 Sentinel(哨兵)是用于监控redis集群中Master状态的工具,其已经被集成在 ...

  8. Redis的一致性哈希算法

    一.节点取余 根据redis的键或者ID,再根据节点数量进行取余. key:value如下 name:1 zhangsna:18:北京 对name:1 进行hash操作,得出来得值是242342345 ...

  9. C# 扫描识别图片中的文字(.NET Framework)

    环境配置 本文以C#及VB.NET代码为例,介绍如何扫描并读取图片中的文字. 本次程序环境如下: Visual Studio版本要求不低于2017 图片扫描工具:Spire.OCR for .NET ...

  10. jarvisoj_tell_me_something

    下载文件,首先checksec检查一下保护,发现只开启了NX 堆栈不可执行. 接下来我们拖进IDA看一下程序的主要流程. 很简洁的程序,可以看到read函数存在栈溢出. 再来看看有什么后门函数可以利用 ...