欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

ADMM算法求解二次项目标函数+l1正则项问题

发布时间:2023/12/9 编程问答 55 豆豆
生活随笔 收集整理的这篇文章主要介绍了 ADMM算法求解二次项目标函数+l1正则项问题 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

ADMM算法求解二次项目标函数+l1正则项问题

问题描述

min⁡xf(x)+λ∣∣x∣∣1⋅⋅⋅⋅⋅⋅(1)\min_x f(x)+\lambda||x||_1······(1) xminf(x)+λx11
其中,f(x)为二次项函数,λ>0,x是RnR^nRn上的列向量。

分析

由于(1)带l1范数不可导,考虑将(1)转化为以下问题(2):

min⁡f(x)+g(z)x−z=0\min f(x)+g(z)\\ x-z=0 minf(x)+g(z)xz=0
其中,
g(z)=λ∣∣z∣∣1g(z)=\lambda||z||_1 g(z)=λz1
则增广拉格朗日函数为
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(xz)+2nxz22
迭代算法为
xk+1:=arg min⁡xL(x,zk,yk)zk+1:=arg min⁡zL(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+1zk+1)

简化

r=x−zr=x-zr=xz,则
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(xz)+2nxz22=yTr+2nr22=2nr+n1y222nn1y22=2nxz+u222nu22(u=n1y
迭代算法可转化为
xk+1:=arg min⁡xf(x)+n2∣∣x−zk+uk∣∣22zk+1:=arg min⁡zg(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)+2nxzk+uk22zk+1:=zargming(z)+2nxk+1z+uk22uk+1:=uk+xk+1zk+1

问题的求解

1.x-update的求取

对于x-update,由于f(x)是二次项目标函数,不妨假设
f(x)=n2∣∣Ax−b∣∣22f(x)=\frac{n}{2}||Ax-b||^2_2f(x)=2nAxb22A为n阶方阵,b是与x同规模的矩阵。
那么x-update的求解即寻求超定线性方程组
Ax−b=0x−zk+uk=0Ax-b=0\\x-z^k+u^k=0 Axb=0xzk+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)+2nxzk+uk22=2n(Axb22+xzk+uk22)
对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 ATAxATb+xzk+uk=(ATA+I)x(ATb+zkuk)=0
(ATA+I)x=ATb+zk−uk(A^TA+I)x=A^Tb+z^k-u^kATA+I)x=ATb+zkuk

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)+2nxk+1z+uk22=Σi=1nλzi+2n(xk+1z+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+uiknλ
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+1zk+1

总结

以上是生活随笔为你收集整理的ADMM算法求解二次项目标函数+l1正则项问题的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。