Proximal Algorithms
这一节,介绍并行算法的实现.
问题的结构
令[n]={1,…,n}. 给定c⊆[n], 让xc∈R∣c∣表示向量x∈Rn的一个子向量(以c为指标的对应部分).当P={c1,…,cN}满足:
∪P=[n]ci∩cj=∅,i̸=j
时, 称P为[n]的一个分割.
函数f的P−分割满足:
f(x)=i=1∑Nfi(xci)
其中fi:R∣ci∣→R.
在这种情况下:
(proxf(v))i=proxfi(vi)
所以,可以并行计算.
考虑下面的问题:
minimizef(x)+g(x)
如果假设f是P−分割的, 而g是Q−分割的,那么问题等价于:

于是ADMM可以并行计算:

consensus
考虑下列问题如何进行并行计算:
minimizef(x)=i=1∑Nfi(x)
一个非常巧妙的变化:

可以看到,这样子,函数就是可分了, 只是多了一个附加条件.
将上面的问题转化为:
minimizei=1∑Nfi(xi)+IC(x1,…,xN)
其中C是consensus set:
C={(x1,…,xN)∣x1=…,=xN}
这样,问题就变成俩个可分函数了, 不过需要注意的是,二者的分割并不相同:
P={[n],n+[n],2n+[n],…,(N−1)n+[n]}
而Q,即IC的分割为:
Q={{i,n+i,2n+i,…,(N−1)n+i}∣i=1,2,…,n}
注: 文中是i=1,2,…,N(我认为是作者的笔误).
这个时候的ADMM的第二步,即更新z,可以直接为:
zi=zˉ=(1/N)i=1∑Nzi

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

更为一般的情况
考虑下面的问题:
minimizef(x)=i=1∑Nfi(xci)
其中ci⊆[n], 但是ci∩cj,i̸=j并不一定为空集.
进行同样的转换:

其中
C={(z1,…,zN)∣(zi)k=(zj)kifk∈ci∩cj}
同样等价于:
minimizei=1∑Nfi(zi)+IC(z1,…,zN)
相应的有一张比较形象的图:

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

其中Fi={j∈[N]∣i∈cj}
Exchange 问题
Global exchange
交换问题具有如下形式:

可以用一个实际问题来考量,每个i表示一个客户,xi表示每个客户给予或者得到的总量,而fi(xi)表示该客户的效益,∑i=1Nxi=0这个条件表示,所以客户东西的总量是固定的,即收支平衡.
我们可以将此问题转化为(这个方法太好使了吧):
minimizei=1∑Nfi(xi)+IC(x1,…,xN)
其中
C={(x1,…,xN)∈RnN∣x1+x2+…+xN=0}
我们知道,指示函数的proximal为投影算子, 于是:
(ΠC(v1,…,vN))i=vi−vˉ
于是ADMM算法为:

更为一般的情况
有些时候,并不是所有客户都面对同一个市场,所以,每个xi的维度什么对的也有区别:
C={(z1,…,zN)∣∣∣i:k∈ci∑(zi)k=0}
有点和consenus的一般情况比较类似.
Allocation
allocation problem:

其中xi∈Rn.
这个问题和交换问题也是相似的,区别在于总量b, 而且要求xi≥0.
类似的,我们可以将上面的问题改写为:
minimizei=1∑Nfi(xi)+IC(x1,…,xN)
其中:
C={(x1,…,xN)∣xi≥0,x1+…+xN=b}
所以相应的算法是:

如何进行投影,会在下一节提到, 还有更加一般的情况,比如∑i=1Nxi≤b.