最优化理论与算法-ADMM的先导知识

ADMM结合了对偶更新和拉格朗日乘子的优缺点。

对偶问题

以凸等式约束优化问题为例:
目标函数: min ⁡ f ( x ) \min{f(x)} minf(x) s u b j e c t subject subject t o to to A x = b Ax=b Ax=b
那么它的拉格朗日函数为: L ( x , λ ) = f ( x ) + λ ( A x − b ) L(x, \lambda)=f(x)+\lambda(Ax-b) L(x,λ)=f(x)+λ(Axb)

其对偶式为: g ( λ ) = i n f x L ( x , λ ) g(\lambda) = inf_x{L(x, \lambda)} g(λ)=infxL(x,λ) ,其中 i n f x inf_x infx指的是给定一个 x x x,求 g ( λ ) g(\lambda) g(λ)函数的上界。既然给定了 x x x,就不再是 x x x的函数了,相对于 λ \lambda λ就是常数,这就是为什么是求 g ( λ ) g(\lambda) g(λ)的函数。所以对偶问题为:
max ⁡ g ( λ ) \max{g(\lambda)} maxg(λ)

对偶上升

在前面我们讲的最速梯度下降和牛顿法都是通过梯度下降来求最优解。为什么?因为那是求解凸函数。看到这里的“上升”,你能想到什么?对!解决的是凹函数。上面的对偶问题 max ⁡ g ( λ ) \max{g(\lambda)} maxg(λ)是一个凹函数。
因此,迭代更新的过程为:
λ k + 1 = λ k + α k Δ g ( λ k ) \lambda^{k+1}=\lambda^{k}+\alpha^{k}\Delta{g(\lambda^k)} λk+1=λk+αkΔg(λk),其中 Δ g ( y k ) = A x ~ − b \Delta{g(y^k)}=A\tilde{x}-b Δg(yk)=Ax~b where x ~ = arg min ⁡ x L ( x , λ k ) \tilde{x}=\underset{x}{\argmin}{L(x, \lambda^{k})} x~=xargminL(x,λk)

首先,优化主问题: x k + 1 = arg min ⁡ x L ( x , λ k ) x^{k+1}=\underset{x}{\argmin}{L(x, \lambda^{k})} xk+1=xargminL(x,λk)
然后对偶更新: λ k + 1 = λ k + α k ( A x k + 1 − b ) \lambda^{k+1}=\lambda^{k}+\alpha^{k}({Ax^{k+1}-b}) λk+1=λk+αk(Axk+1b)

对偶分解

再依次把目标函数拿出来:
min ⁡ f ( x ) \min{f(x)} minf(x) s u b j e c t subject subject t o to to A x = b Ax=b Ax=b
实际上, x x x很有可能是多变量,因此我们做一次推广,即 x = ( x 1 , x 2 , . . . . . . x n ) x=(x_1,x_2,......x_n) x=(x1,x2,......xn)。当然 x i x_i xi也可以是向量或矩阵。

对于这么一个求多变量的函数极值问题,我们希望可以将其分解不同单变量的函数叠加,就像谐波分解一样。因此,假设 f ( x ) f(x) f(x)可分解: f ( x ) = f 1 ( x 1 ) + f 2 ( x 2 ) + . . . . . . + f n ( x n ) f(x)=f_1(x_1)+f_2(x_2)+......+f_n(x_n) f(x)=f1(x1)+f2(x2)+......+fn(xn)

那么,我们将式子重新带入拉格朗日函数:
L ( x , λ ) = f 1 ( x 1 ) + λ 1 ( A 1 x 1 − b ) + f 2 ( x 2 ) + λ 2 ( A 2 x 2 − b ) + . . . . . . + f n ( x n ) + λ n ( A n x n − b ) L(x, \lambda)=f_1(x_1)+\lambda_1(A_1x_1-b)+f_2(x_2)+\lambda_2(A_2x_2-b)+......+f_n(x_n)+\lambda_n(A_nx_n-b) L(x,λ)=f1(x1)+λ1(A1x1b)+f2(x2)+λ2(A2x2b)+......+fn(xn)+λn(Anxnb)

因此, L ( x i , λ i ) = f i ( x i ) + λ T A i x i L(x_i, \lambda_i)=f_i(x_i)+\lambda^{T}A_ix_i L(xi,λi)=fi(xi)+λTAixi
从而,求主问题,从上面的单变量变成了:
x i k + 1 = arg min ⁡ x i L ( x i , λ k ) x^{k+1}_i=\underset{x_i}{\argmin}{L(x_i, \lambda^{k})} xik+1=xiargminL(xi,λk), 这不就是上面单变量的对偶上升法的主问题嘛!由于x是相互独立的,因此就可以并行计算。

那么,函数可分解可以将原问题分成许多子问题。那么能够这样做有什么限制吗?那就是约束条件一定要是线性的(这里可以联想信号与系统中判断系统是否是线性)。我们知道增广拉格朗日函数是在拉格朗日函数基础上加了一个二次项,二次项是增加凸性,但破坏了拉格朗日函数的可分解特性,原因就在于此,对两者的对比可以查看此文章

那么,优化步骤变成了(对比对偶上升):
原问题(子问题): x i k + 1 = arg min ⁡ x i L i ( x i , λ k ) x^{k+1}_i=\underset{x_i}{\argmin}{L_i(x_i, \lambda^{k})} xik+1=xiargminLi(xi,λk) i = 1 , . . . . . . . n i = 1,.......n i=1,.......n
对偶更新: λ k + 1 = λ k + α k ( ∑ i = 1 n A i x i k + 1 − b ) \lambda^{k+1}=\lambda^{k}+\alpha^{k}({\sum_{i=1}^{n}A_ix^{k+1}_i-b}) λk+1=λk+αk(i=1nAixik+1b)

总而言之,对偶分解是在对耦上升基础上更进一步,将主问题分解成子问题求解。对于每个子问题,其实就是对偶上升求解的。

这种分解方式可以使得并行计算,从而加速收敛,但是对偶上升的缺点并没有得到解决:对偶更新的时候只是用了一阶信息,而一阶鲁棒性很差,从最速梯度下降法我们知道,这种最速梯度上升法同样很依赖学习率 α k \alpha^k αk,而且越到收敛点梯度 ∑ i = 1 n A i x i k + 1 − b {\sum_{i=1}^{n}A_ix^{k+1}_i-b} i=1nAixik+1b越接近0,因此更新得越来越慢(可参见这篇文章

怎么解决?就是在原来的拉格朗日函数的基础上加上一个二次约束项: L p ( x , λ ) = f ( x ) + λ T ( A x − b ) + ρ 2 ∥ A x − b ∥ 2 2 L_p(x, \lambda)=f(x)+\lambda^{T}(Ax-b)+\frac{\rho}{2}\left \| Ax-b\right \|^2_2 Lp(x,λ)=f(x)+λT(Axb)+2ρAxb22,这可以提高收敛的鲁棒性。

引入二次项破坏了拉格朗日乘子可分解性,无法使用对偶分解。而要使用对偶分解又只能是线性约束,而这个问题就可以使用ADMM来解决。我在另一篇博文已经有过分享!

这篇博文就当一个先导内容的介绍吧!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值