1. 交叉方向乘子法(ADMM)
在本节中,我们将介绍一种用交叉方向乘子法(ADMM)解决带约束的最小化问题的框架。该方法非常通用,可用于解决一大类有约束的最小化问题。
1.1 对偶交替上升(Dual Ascent)
【回顾】:考虑一个目标函数为凸,约束条件为等式约束的原问题(即满足slater条件),是如何通过对偶问题求得最优解的?
设原问题为: min x ∈ Ω f ( x ) s.t. A x = b \min\limits_{\mathbf{x}\in\Omega}f(\mathbf{x})\quad\text{s.t. }A\mathbf{x}=b x∈Ωminf(x)s.t. Ax=b,
拉格朗日函数为: L ( x , λ ) = f ( x ) + λ T ( A x − b ) L(\mathbf{x},\lambda)=f(\mathbf{x})+\lambda^T(A\mathbf{x}-b) L(x,λ)=f(x)+λT(Ax−b),对偶函数: q ( λ ) = min x ∈ R n L ( x , λ ) q(\lambda)=\min\limits_{\mathbf{x}\in\R^n}L(\mathbf{x},\lambda) q(λ)=x∈RnminL(x,λ),
设 λ ∗ \lambda^* λ∗ 是对偶问题的最优解,根据强对偶定理: λ ∗ = arg max λ q ( λ ) ⇒ x ∗ = arg min x ∈ R n L ( x , λ ∗ ) \lambda^*=\arg\max\limits_{\lambda}q(\lambda)\Rightarrow\mathbf{x}^*=\arg\min\limits_{\mathbf{x}\in\R^n}L(\mathbf{x},\lambda^*) λ∗=argλmaxq(λ)⇒x∗=argx∈RnminL(x,λ∗),
所以如何求解 arg max λ q ( λ ) \arg\max\limits_{\lambda}q(\lambda) argλmaxq(λ) 成为关键。一个自然的想法是采用梯度上升法,为了达到这个目的,我们需要找到一个方法去计算对偶函数的梯度。而 q ( λ ) = min x ∈ R n L ( x , λ ) q(\lambda)=\min\limits_{\mathbf{x}\in\R^n}L(\mathbf{x},\lambda) q(λ)=x∈RnminL(x,λ),如果我们找到一个 x ~ = arg min x ∈ R n L ( x , λ ) \tilde{\mathbf{x}}= \arg\min\limits_{\mathbf{x}\in\R^n}L(\mathbf{x},\lambda) x~=argx∈RnminL(x,λ),那么
q ( λ ) = L ( x ~ , λ ) = f ( x ~ ) + λ T ( A x ~ − b ) q(\lambda)=L(\tilde{\mathbf{x}},\lambda)=f(\tilde{\mathbf{x}})+\lambda^T(A\tilde{\mathbf{x}}-b) q(λ)=L(x~,λ)=f(x~)+λT(Ax~−b)
显然,这是一个关于 λ \lambda λ 的线性函数,它的梯度为非常好算: ∇ q ( λ ) = A x ~ − b \nabla q(\lambda)=A\tilde{\mathbf{x}}-b ∇