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

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

对偶问题

以凸等式约束优化问题为例:
目标函数:minf(x)\min{f(x)} subjectsubject toto Ax=bAx=b
那么它的拉格朗日函数为:L(x,λ)=f(x)+λ(Axb)L(x, \lambda)=f(x)+\lambda(Ax-b)

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

对偶上升

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

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

对偶分解

再依次把目标函数拿出来:
minf(x)\min{f(x)} subjectsubject toto Ax=bAx=b
实际上,xx很有可能是多变量,因此我们做一次推广,即x=(x1,x2,......xn)x=(x_1,x_2,......x_n)。当然xix_i也可以是向量或矩阵。

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

那么,我们将式子重新带入拉格朗日函数:
L(x,λ)=f1(x1)+λ1(A1x1b)+f2(x2)+λ2(A2x2b)+......+fn(xn)+λn(Anxnb)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(xi,λi)=fi(xi)+λTAixiL(x_i, \lambda_i)=f_i(x_i)+\lambda^{T}A_ix_i
从而,求主问题,从上面的单变量变成了:
xik+1=arg minxiL(xi,λk)x^{k+1}_i=\underset{x_i}{\argmin}{L(x_i, \lambda^{k})}, 这不就是上面单变量的对偶上升法的主问题嘛!由于x是相互独立的,因此就可以并行计算。

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

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

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

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

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

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章