本帖最后由 宇宙微尘 于 2025-1-23 17:23 编辑

前言
交替方向乘子法(Alternating Direction Method of Multipliers,ADMM)是一种求解具有可分离性的凸优化问题的计算框架, 由于其是对偶分解法和增广拉格朗日乘子法的结合,使该算法有分解性的同时保证了良好的收敛性,处理速度快。ADMM适用于求解分布式凸优化问题,主要应用在解空间规模很大的情况,可以进行分块求解,而且解的绝对精度要求不是太高。
ADMM以先分解再结合的形式求解问题,即先把原问题分解成若干个相对原问题较简单的子问题,再把子问题的解结合起来得到原问题的全局解。
注意:本文适合有一点点凸优化理论基础的读者阅读,一点点就ok。
一、预备知识
1. 对偶上升(Dual Ascent)
考虑等式约束凸优化问题

其中变量x ∈ R n , A ∈ R m × n , 并且函数f : R n → R 是凸的。
那么(1)式的拉格朗日函数( Lagrangian)可以写为:

上式的对偶函数(Dual Function)为

其中y叫做对偶变量(Dual variable)或者拉格朗日乘子(Lagrange multiplier),y ∈ R m,f ∗ 是f的共轭函数(Conjugate function)注 1 。
注1:这里简单介绍一下共轭函数以及上式中对偶函数的推导,如想深入理解对偶函数的意义请参考Boyd 《Convex Optimization》中的3.3节。 函数 f ( x )的共轭函数为:

则公式(3)的推导如下

此时将(1)式的优化问题转化为其对偶问题:

需要注意的是,这里我们假设式(1)和(4)是满足强对偶条件的(如 slater条件,此处不展开介绍),即原问题(1)和对偶问题(4)的解是相等的,即我们可以通过对偶问题的解(最优点)y ∗得到原问题的解(最优点):

由于对偶问题(4)是max,所以要用梯度上升而不是梯度下降来优化,这就是 “对偶上升” 名字的由来。假设对偶函数h 是可导的,即∇ h ( y )存在,那么对偶上升法的迭代更新过程如下:

其中α k > 0表示步长。公式(6)称为x-minimization step,公式(7)被称为 dual variable update。这里特别提一下,这个更新过程能够正常工作的前提是f ( x )需要满足一些强条件,比如f ( x )必须要严格凸的或者有界的;再比如如果f ( x )是线性的即f ( x ) = k x + b 类似的函数,那么(6)式是找不到极小值点的,就无法更新x了。后面会介绍如何解决这个问题(增广拉格朗日)。
2. 对偶分解(Dual Decomposition)
现在我们假设目标函数f 是可分的,即f ( x ) 可以写成

其中x = ( x 1 , . . . , x N ) , x i ∈ R n i 是x 的子向量(subvector)。这样f i 之间相互独立,自变量x i 之间也没有关系,我们就可以并行的去计算每一个f i ( x i ) 的最小值。然后,我们在将A 按列分块,即

所以,很自然地,拉格朗日函数也可进行分解,即

公式(10)意味着我们在做公式(6)x-minimazation的时候,可以并行来做。即

在以上两个公式(11)和(12)的迭代过程中,我们需要“广播”(broadcast)和 “聚合”(gather)操作。通俗的讲,一方面,A i 的值需要聚合在一起得到( A x k + 1 − b ) (这个也被称为残差residual);另一方面,当得到对偶变量y k + 1的值后,它得被广播到每一个x i -minimization step中。
3. 增广拉格朗日乘子法(Augmented Lagrangians and the Method of Multipliers)
我们把公式(2)的拉格朗日函数加上一个二次正则项,便将其升级为增广拉格朗日乘子法

其中ρ > 0称为惩罚系数(penalty parameter)。 现在我们来理解一下这个增广拉格朗日乘子法的作用:
(1)有了后面这个二次项,我们不再需要假设f ( x )是严格凸的或者有界的了,比如此时即使f ( x )是线性的,也可以求导算极值了;
(2)增加这个二次项后会使我们的求解过程更加“光滑”(smooth),使得迭代过程更加稳定(robust)更好收敛;
(3)增加这一项不会改变原问题,因为我们受该问题的约束条件限制,最终得到的最优解是满足A x − b = 0 的,所以和原问题是等价的。
好了,到这里,我们重新书写一下我们的优化问题:

然后,对偶上升法也被重新书写为:

此时这个步长要求是ρ 值注 2 。
注2:这里解释一下为什么步长是ρ。细节可以参考Boyd 《Convex Optimization》中的第5章。 假设我们得到了满足式(1)的最终优化结果( x ∗ , y ∗ ) ,那么将满足可行性(feasibility)条件如下:
Ax∗−b=0,∇f(x∗)+ATy∗=0(这个就是对式(2)求导)
我们令x k + 1 为可以使L ρ ( x , y k ) 最小化的值(公式(15)),则有

注意观察后两个等号后面的第二个式子,有y k + 1 = y k + ρ ( A x k + 1 − b ) ,因此这里只有步长取ρ 才能使( x k + 1 , y k + 1 ) 对偶可行性(dual feasibility)成立。
注意了,我们刚刚提到增广拉格朗日乘子法给优化过程中的收敛性带来了极大的改善,但这是有代价的。当函数f是可分解的(separable)时,增广拉格朗日函数L ρ却不可分解了!原因是二次项展开后有会有一个交叉项。总之,此时我们无法将公式(15)像公式(11)那样分解了,无法将任务拆分成多个子任务并行计算了,导致在数据维度很高的情况下无法运行。为了解决这个问题,ADMM终于出场了。
二、交替方向乘子法(ADMM)
- ADMM将对偶上升法的可分解性与乘子法的收敛性相结合的算法!
ADMM基本算法
为了说明ADMM,我们将原问题即公式(1)的目标函数f ( x )分解成两个f ( x ) 和g ( z ) ,相应的原变量x也分解成两个( x , z ) ,则我们得到优化问题

为了避免混乱,这里不再说明矩阵A,B以及向量x , z , c 的维度。同样,我们假设f和g 是凸的(convex)。 现在我们直接写出公式(17)的增广拉格朗日乘子法的函数

同样,我们直接给出ADMM的迭代优化过程

其中ρ > 0 。可以看到,ADMM和前面提到的对偶上升和乘子法非常相似,ADMM包含一个x -minimization step (19)、一个z -minimization step (20)和一个dual variable update (21)。需要注意的是,x 和z 的更新是交替的(alternating)。到这里,是不是觉得ADMM其实也没啥:)。
典型的例子
Soft Thresholding Quatratic Objective
这是两个比较典型ADMM例子,有需要的可以自己去看看《Distributed_Optimization_and_Statistical_Learning》这本书的4.4.3和5.2。
————————————————
本文转载自CSDN博主:JayShaun
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/m0_37864814/article/details/123199376 |