【机器学习】Bregman分离算法推导

Bregman分离算法比Bregman迭代算法更简单、更有效。接上篇博客,我们可以构造优化模型 argminH(u)+J(u) 来还原真实目标数据,一般理解为 H(u) 是我们的目标最小化模型,常用的有 H(u)=1/2(AuY)2 ,其中u是目标,Y是观测结果,A是导致观测结果与真实结果不一致的原因;J(u)一般是一个约束项,自从压缩感知火了之后,一般J(u)是一个L1模型,即一个绝对值函数,等价于要找一组u,使得u的表示最简单。整体表示为

argmin|Φ(u)|+H(u)


Φ(u) 是表达式,其L1模型略难求解。一种技巧是建立约束优化模型:

argmin|d|+H(u),s.t.d=Φ(u)argmin|d|+H(u)λ/2(dΦ(u))2

这里将约束变为L2项。是一个为了松弛变量做出的折中。原先复杂的

Φ(u) 被放入二次函数——一个简单的凸函数中,很好计算梯度了;而复杂的L1约束项约束了d。令

J(u,d)=|d|+H(u) ,约束问题变为

argminu,dJ(u,d)+H(u) 我们引入二元Bregman散度,这样就可以使用Bregman迭代算法了。


(uk+1,dk+1)=argminu,dDp(u,uk,d,dk)+λ/2(dΦ(u))2(1)

pk+1u=pkuJ(u,d)u=pkuλΦ(uk+1)T(Φ(uk+1)dk+1)=λiΦ(Φ(ui)di)(2)

pk+1d=pkdJ(u,d)d=pkuλ(dk+1Φ(uk+1))=λi(diΦ(ui)(3)



bk=i(Φ(uidi) ,如果把

Φ 视作线性映射,那么有

pku=λΦTbk,pkd=λbk

现在来看u的优化公式,d固定当做常量,

uk 也是常量。由(1)得到

uk+1=argminJ(u,dk)<pku,uuk>+λ/2(dkΦ(u))2=argminJ(u,dk)<λΦTbk,uuk>+λ/2(dkΦ(u))2=argminH(u)+λΦT(uuk)bk+λ/2(dkΦ(u))2+C

很多文献在这一步后面直接给出了结果,

Φ 莫名其妙就消了,也没有推导,非常晦涩。这里我推测右边是用了泰勒展开式,其中

Ruk 是余项:


ΦT(uuk)bk+1/2(dkΦ(u))2=bk[Φ(uk)+ΦT(uuk)+Ruk]+1/2(dkΦ(u))2+C1=bkΦ(u)+bkdk+1/2(dkΦ(u))2+C2=1/2[(dkΦ(u))22bk(dkΦ(u))+(bk)2]+C3=1/2(dkΦ(u)bk)2+C3

所以得到:

uk+1=argminH(u)+λ/2[dkΦ(u)bk]2

同理得到:

dk+1=argmin|d|+λ/2[dΦ(uk+1)bk]2

bk+1=bk+[Φ(uk+1)dk+1]

如此迭代直到u收敛。

其中d的优化,由于表达式d只是一个变量,所以它的L1优化模型类比

argmin1/2(Axb)2+|x| ,这个已经有非常成熟的优化解法。

点赞