ADMM算法求解二次项目标函数+l1正则项问题
ADMM算法求解二次项目标函数+l1正则项问题
问题描述
minxf(x)+λ∣∣x∣∣1⋅⋅⋅⋅⋅⋅(1)\min_x f(x)+\lambda||x||_1······(1) xminf(x)+λ∣∣x∣∣1⋅⋅⋅⋅⋅⋅(1)
其中,f(x)为二次项函数,λ>0,x是RnR^nRn上的列向量。
分析
由于(1)带l1范数不可导,考虑将(1)转化为以下问题(2):
minf(x)+g(z)x−z=0\min f(x)+g(z)\\ x-z=0 minf(x)+g(z)x−z=0
其中,
g(z)=λ∣∣z∣∣1g(z)=\lambda||z||_1 g(z)=λ∣∣z∣∣1
则增广拉格朗日函数为
L(x,z,y)=f(x)+g(z)+yT(x−z)+n2∣∣x−z∣∣22L(x,z,y)=f(x)+g(z)+y^{T}(x-z)+\frac{n}{2}||x-z||_{2}^{2} L(x,z,y)=f(x)+g(z)+yT(x−z)+2n∣∣x−z∣∣22
迭代算法为
xk+1:=arg minxL(x,zk,yk)zk+1:=arg minzL(xk+1,z,yk)yk+1:=yk+n(xk+1−zk+1)x^{k+1}:=\argmin_xL(x,z^k,y^k)\\z^{k+1}:=\argmin_zL(x^{k+1},z,y^k)\\y^{k+1}:=y^k+n(x^{k+1}-z^{k+1}) xk+1:=xargminL(x,zk,yk)zk+1:=zargminL(xk+1,z,yk)yk+1:=yk+n(xk+1−zk+1)
简化
令r=x−zr=x-zr=x−z,则
yT(x−z)+n2∣∣x−z∣∣22=yTr+n2∣∣r∣∣22=n2∣∣r+1ny∣∣22−n2∣∣1ny∣∣22=n2∣∣x−z+u∣∣22−n2∣∣u∣∣22(u=1ny)y^T(x-z)+\frac{n}{2}||x-z||_2^2=y^Tr+\frac{n}{2}||r||_2^2\\=\frac{n}{2}||r+\frac{1}{n}y||_2^2-\frac{n}{2}||\frac{1}{n}y||_2^2\\=\frac{n}{2}||x-z+u||_2^2-\frac{n}{2}||u||^2_2\\(u=\frac{1}{n}y) yT(x−z)+2n∣∣x−z∣∣22=yTr+2n∣∣r∣∣22=2n∣∣r+n1y∣∣22−2n∣∣n1y∣∣22=2n∣∣x−z+u∣∣22−2n∣∣u∣∣22(u=n1y)
迭代算法可转化为
xk+1:=arg minxf(x)+n2∣∣x−zk+uk∣∣22zk+1:=arg minzg(z)+n2∣∣xk+1−z+uk∣∣22uk+1:=uk+xk+1−zk+1x^{k+1}:=\argmin_xf(x)+\frac{n}{2}||x-z^k+u^k||^2_2\\z^{k+1}:=\argmin_zg(z)+\frac{n}{2}||x^{k+1}-z+u^k||^2_2\\u^{k+1}:=u^k+x^{k+1}-z^{k+1} xk+1:=xargminf(x)+2n∣∣x−zk+uk∣∣22zk+1:=zargming(z)+2n∣∣xk+1−z+uk∣∣22uk+1:=uk+xk+1−zk+1
问题的求解
1.x-update的求取
对于x-update,由于f(x)是二次项目标函数,不妨假设
f(x)=n2∣∣Ax−b∣∣22f(x)=\frac{n}{2}||Ax-b||^2_2f(x)=2n∣∣Ax−b∣∣22A为n阶方阵,b是与x同规模的矩阵。
那么x-update的求解即寻求超定线性方程组
Ax−b=0x−zk+uk=0Ax-b=0\\x-z^k+u^k=0 Ax−b=0x−zk+uk=0的最小二乘解。此外,还可以通过以下方法求取x-update
f(x)+n2∣∣x−zk+uk∣∣22=n2(∣∣Ax−b∣∣22+∣∣x−zk+uk∣∣22)f(x)+\frac{n}{2}||x-z^k+u^k||^2_2=\frac{n}{2}(||Ax-b||^2_2+||x-z^k+u^k||^2_2) f(x)+2n∣∣x−zk+uk∣∣22=2n(∣∣Ax−b∣∣22+∣∣x−zk+uk∣∣22)
对x求导,并令导数为0,有
ATAx−ATb+x−zk+uk=(ATA+I)x−(ATb+zk−uk)=0A^TAx-A^Tb+x-z^k+u^k=(A^TA+I)x-(A^Tb+z^k-u^k)=0 ATAx−ATb+x−zk+uk=(ATA+I)x−(ATb+zk−uk)=0
即(ATA+I)x=ATb+zk−uk(A^TA+I)x=A^Tb+z^k-u^k(ATA+I)x=ATb+zk−uk
2.z-update的求取
对于z-update的求取,
g(z)+n2∣∣xk+1−z+uk∣∣22=Σi=1n(λ∣zi∣+n2(xk+1−z+uk)2)g(z)+\frac{n}{2}||x^{k+1}-z+u^k||_2^2=\Sigma_{i=1}^{n}(\lambda|z_i|+\frac{n}{2}(x^{k+1}-z+u^k)^2)g(z)+2n∣∣xk+1−z+uk∣∣22=Σi=1n(λ∣zi∣+2n(xk+1−z+uk)2)
对于第i个分量
当xik+1+uik>λnx^{k+1}_i+u^k_i>\frac{\lambda}{n}xik+1+uik>nλ时,zik+1=xik+1+uik−λnz^{k+1}_i=x^{k+1}_i+u^k_i-\frac{\lambda}{n}zik+1=xik+1+uik−nλ;
当xik+1+uik<−λnx^{k+1}_i+u^k_i<-\frac{\lambda}{n}xik+1+uik<−nλ时,zik+1=xik+1+uik+λnz^{k+1}_i=x^{k+1}_i+u^k_i+\frac{\lambda}{n}zik+1=xik+1+uik+nλ;
其他,zik+1=0.z^{k+1}_i=0.zik+1=0.
3.u-update的求取
uk+1=uk+xk+1−zk+1u^{k+1}=u^k+x^{k+1}-z^{k+1}uk+1=uk+xk+1−zk+1
总结
以上是生活随笔为你收集整理的ADMM算法求解二次项目标函数+l1正则项问题的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 计算机网络应用答题卡,2013-2014
- 下一篇: 分类和聚类有什么区别?