等式约束优化问题:
f f f是凸函数,2.1的拉格朗日项为:
其对偶函数为:
inf代表下确界,之所以用下确界而不是用min,可能是因为有些函数没有极值(定义域取不到),但有一个下确界。
y是拉格朗日乘子项的对偶变量
则原问题的对偶问题变为:
在强凸性质下,原问题和对偶问题的最优解是一样的。
我们可以从对偶的最优点 y ∗ y^* y∗恢复出原优化问题的最优点 x ∗ x^* x∗:
利用梯度上升法:
上述条件很严苛,
尽管对偶上升的条件很严苛,但是它有时写成并行算法,当目标函数 f f f是可分离的时候:
x = ( x 1 , x 2 , . . . . , x N ) x=(x_1,x_2,....,x_N) x=(x1,x2,....,xN)并且矩阵A可以分解为 A = [ A 1 , . . . A N ] A=[A_1,...A_N] A=[A1,...AN] ,
A x = ∑ i = 1 N A i x i Ax=\sum_{i=1}^{N}A_ix_i Ax=∑i=1NAixi
故拉格朗日项可以写成:
因此迭代优化的时候, m i n x min_x minx可以拆成多个问题的并行优化,对偶变量更新不变这对于参数特别多的特别有用。
增广拉格朗日方法 是在罚函数的基础上增加了拉格朗日乘子项,故称为增广拉格朗日函数。
其放松了 f ( x ) f(x) f(x)严格凸的假设和一些其它条件,同时使得算法更加稳健。2.1的问题变为:
等价于
惩罚项的好处是使得对偶函数
在更一般的条件下可导:
增广拉格朗日相比于对偶上升多了一个平方项,但这个平方项无法分离,使得不能利用对偶上升的分块思想并行优化。所以针对此的改进,ADMM算法诞生了。
为了整合对偶上升的可分解性和增广拉格朗日法(也叫乘子罚函数法)优秀的收敛性质,ADMM(Alternating Direction of Method of Multipliers)结合了两者的优点,
最开始(2.1)的优化问题可以写为:
于是:
对偶分解的时候 x = ( x 1 , x 2 , . . . . , x N ) x=(x_1,x_2,....,x_N) x=(x1,x2,....,xN),在二次项里面不能被写成分块的形式,但在这里x被分成了x和z,天生分块,并且z作为一个独立变量不需要融合进x,保证了过程的可分解性。
于是:
ADMM算法包括了除x以外的 ( z k + 1 , y k + 1 ) (z^{k+1},y^{k+1}) (zk+1,yk+1),它是 ( z k , y k ) (z^{k},y^{k}) (zk,yk)的函数,x并不在其中。
令残差 r = A x + B z − c , u = ( 1 / ρ ) ∗ y r=Ax+Bz-c,u=(1/\rho) *y r=Ax+Bz−c,u=(1/ρ)∗y,增广拉格朗日项的线性项和二次项可以写成:
于是简化后的ADMM:常数项可以忽略
每次迭代时残差 r k = A x k + B z k − c r^{k}=Ax^{k}+Bz^{k}-c rk=Axk+Bzk−c,故
一般受约束的凸优化问题可以写成如下形式:
f f f为凸函数, C C C为凸集
增加分离变量,写成ADMM形式:
g g g是z的指示函数,即在 x ∈ C x\in C x∈C时有值;
其增广拉格朗日为:
ADMM的缩放形式:
这里的z的形式可以通过求导取极值点得到。
更为一般的优化模型:
l l l为凸损失函数
写成ADMM可以使用的形式:
其中, g ( z ) = λ ∣ ∣ z ∣ ∣ 1 g(z)=\lambda ||z||_1 g(z)=λ∣∣z∣∣1
x − u p d a t e x-update x−update是proximal operator evaluation,如果 l l l是平滑的,则可以用牛顿法、拟牛顿法(quasi Newton method)、共轭梯度法来解决,如果 l l l是二次项,x-min 能够直接解线性方程组。
L1正则线性回归也叫Lasso, l ( x ) = ( 1 / 2 ) ∣ ∣ A x − b ∣ ∣ 2 2 l(x)=(1/2)||Ax-b||_2^2 l(x)=(1/2)∣∣Ax−b∣∣22,
这里的l就是二次项,我们尝试着解解方程
ADMM形式:
f ( x ) = ( 1 / 2 ) ∣ ∣ A x − b ∣ ∣ 2 2 f(x)=(1/2)||Ax-b||_2^2 f(x)=(1/2)∣∣Ax−b∣∣22, g ( z ) = λ ∣ ∣ z ∣ ∣ 1 g(z)=\lambda ||z||_1 g(z)=λ∣∣z∣∣1
根据上面的scaled-form形式,可以推出:
x k + 1 = a r g m i n x ( 1 / 2 ) ∣ ∣ A x − b ∣ ∣ 2 2 + ρ 2 ∣ ∣ x − z ( k ) + u ( k ) ∣ ∣ 2 2 z ( k + 1 ) = a r g m i n z λ ∣ ∣ z ∣ ∣ 1 + ρ 2 ∣ ∣ x k − z + u ( k ) ∣ ∣ 2 2 u ( k = 1 ) = u ( k ) + x k − z ( k ) x^{k+1}=argmin_x (1/2)||Ax-b||_2^2+\frac{\rho}{2}||x-z^{(k)}+u^{(k)}||_2^2 \\ z^{(k+1)}=argmin_z\lambda ||z||_1+\frac{\rho}{2}||x^{k}-z+u^{(k)}||_2^2\\ u^{(k=1)}=u^{(k)}+x^{k}-z^{(k)} xk+1=argminx(1/2)∣∣Ax−b∣∣22+2ρ∣∣x−z(k)+u(k)∣∣22z(k+1)=argminzλ∣∣z∣∣1+2ρ∣∣xk−z+u(k)∣∣22u(k=1)=u(k)+xk−z(k)
对x的更新求导取零:
A T ( A x − b ) + ρ ( x − z k + u k ) = 0 ( A T A + ρ I ) x − ( A T b + ρ ( z k − u k ) ) = 0 x k + 1 = ( A T A + ρ I ) − 1 ( A T b + ρ ( z k − u k ) ) A^T(Ax-b)+\rho (x-z^{k}+u^{k})=0 \\ (A^TA+\rho I)x-(A^Tb+\rho (z^{k}-u^{k}))=0\\ x^{k+1} =(A^TA+\rho I)^-1(A^Tb+\rho (z^{k}-u^{k})) AT(Ax−b)+ρ(x−zk+uk)=0(ATA+ρI)x−(ATb+ρ(zk−uk))=0xk+1=(ATA+ρI)−1(ATb+ρ(zk−uk))
z z z的更新用上面的subgradient引入的soft thresholding:
注意 A T A + ρ I A^TA+\rho I ATA+ρI总是可逆的,since ρ > 0 \rho >0 ρ>0.
这里的矩阵可以可以作一些分解使得迭代收敛更快,详情见[4]。
在x变量更新时,里面的 f , g , A , B f,g,A,B f,g,A,B涉及到矩阵的运算,涉及到大量的数据时,迭代的速度会变得缓慢,因此,对x-update的开发求解很重要。
简化x-update的分析:
尽管z是一个变量,但在x迭代中是一个常量,因此 v = − B z + c − u v= -Bz+c-u v=−Bz+c−u当作一个常量即可。
再次简化 A = I A=I A=I,
作为 v v v的函数,右边的项也被定义为 p r o x f , ρ ( v ) prox_{f,\rho}(v) proxf,ρ(v),被称为带惩罚项 ρ \rho ρ的f的近端算子。
在变分分析中,以f的Moreau envelope or Moreau-Yosida regularization的而出名。并且与the proximal point algorithm有关系
近端算子里的x-min也被称为近端优化。
尽管这不会对我们的ADMM加快效率,但是当f足够简单时,我们可以更方便的分析x-update,比如f是一个闭合非空凸集C的指示函数:
f的近端算子就退化为一个C上的欧几里得距离:
因此,近端运算符可以被视为广义投影。f的近端算子也可以被解释为f的一种梯度。
(就像上面的约束凸优化问题一样)
从这个式子可以理解,式在寻找一个距离v点不要太远的x点,然后使得 f ( x ) f(x) f(x)最小。
如果目标函数式处处可微的,那么直接用梯度下降法即可,但更多的情况时f不可微的,通常这种情况下使用次梯度来优化,但是次梯度的缺点时求解慢和通常不会产生稀疏解。
近端算子则是在 f ( x ) f(x) f(x)分解为一个可微分的凸函数和不可微分的凸函数的条件下:
f ( x ) = g ( x ) + h ( x ) f(x) = g(x)+h(x) f(x)=g(x)+h(x)
Proximal Algorithm 自然肩负了要解决这两个问题的使命。
其中函数f可能是非光滑(即不可微)的。临近算子是对梯度的延伸,当函数f为光滑函数时,该临近算子就是梯度。
soft thresholding就是1范数的近端算子;
S就是所谓的软阈值算子:就是上