Proximal Algorithms--proximal gradient algorithm

4.2 近端梯度法

Proximal gradient method
无约束的优化问题,代价函数可以分成两个部分:

minf(x)=g(x)+h(x)

其中
1.g是凸的,可微的,并且domg=Rn,
2.f是闭的,凸的,可能不可微,proxh容易计算。

例如问题:L1 norm regularize least-squares

minimize12||Axb||22+||x||1

近端梯度算法:

x(k)=proxtkh(xk1tkg(x(k1))

其中tk>0是步长,其是常数或者通过线性搜索确定。为了简洁,写成:
x+=proxth(xtkg(x))

由近端操作的定义得到:
x+=argminu(h(u)+12t||ux+tg(x)||22)

=argminu(h(u)+g(x)+g(x)T(ux)+12t||ux||22)

x+最小化h(u)加上g(u)x处展开的简单的二次局部模型。

一些特例:
1.梯度方法(gradient method):h(x)=0,即最小化g(x)

x(k)=x(k1)tkg(x(k1))

2.梯度投影方法(gradient projection method):h(x)=IC(x),也即是在集合C上最小化函数g(x)
x(k)=PC(x(k1)tkg(x(k1)))

3.迭代软阈值(iterative soft-thresholding):h(x)=||x||1,即最小化:g(x)+||x||1
x(k)=proxtkh(xk1tkg(x(k1))

并且:
proxth(u)i=uit,0,ui+t,uittuituituit

推导:
h(x)的近端投影:

proxth(u)=argminx(||x||1+12λ||xu||22)

u看作常数,求函数f(x)=||x||1+12λ||xu||22的最小值,考虑一维的情况,因为函数||x||1并不是处处可微的,因此函数为:
f(x)={x+12λ||xu||22,x+12λ||xu||22,x0x0

则导数:
f(x)={1+1λ(xu),1+1λ(xu),x>0x<0

f(x)=0,{x=uλ,x=u+λ,x>0uλ>0x<0u+λ<0

则数:
argminxf(x)=uλ,u+λ,0,uλ>0u+λ<0λ<u<λ

解释:
情况1,当x>0时,uλ>0和当x<0时,u+λ<0,在这种情况下,两个抛物线的最低点落在了各自的 区间内。
情况2:左边的抛物线的最低点落在了右区间,即x>0的区域,右边的抛物线落在了左区间,这样的情况下,最低点是在x=0的区域。

投影梯度迭代

投影梯度迭代最小化公式:g(x)+h(x)

x(k)=proxtkh(xk1tkg(x(k1))

上式可以写成:
x(k)=x(k1)tkGtk(x(k1))
其中
Gt(x)=1t(xproxth(xtg(x)))

上式的类似于常规的梯度下降法。
从次梯度和近端操作的关系:
u=proxh(x)uxh(u)

得到:
Gt(x)g(x)+h(xtGt(x))(.0)

当前仅当x最小化f(x)=g(x)+h(x)时,Gt(x)=0
很容易理解,我们将Gt(x)=0带入得到上式两边,得到:

0g(x)+h(x)

线性搜索

line search
为了确定下面公式的步长:

x+=xtGt(x)

我们从某个t:=t^开始,重复t:=βt ( 0<β<1,直到:
g(xtGt(x))g(x)tg(x)TGt(x)+t2||Gt(x)||22

1. 每次线性搜索迭代过程,需要计算prox
2. 上面收敛条件不等式的推导参考下面收敛分析。
3. 许多其他类型的搜索工作

近端梯度方法的收敛性分析

假定:
1. g是Lipschitz continuous,

||g(x)g(y)L||xy||2x,y

2.最优值f是有限的,并且在x可达到的(无需唯一)。
结果:我们将给出f(x(k)f的收敛速度至少为1/k

凸函数的仿射下界:
affine lower bound from convexity:

g(y)g(x)+g(x)T(yx)x,y

证明:带有拉格朗日余项的二阶泰勒展开:

g(y)=g(x)+g(x)T(yx)+12(yx)T2g(ξ)(yx)

其中对于凸函数2g(ξ)0,因此证毕。

凸函数的二次上界:

g(y)g(x)+g(x)T(yx)+L2||yx||22x,y

证明:
g(y)=g(x)+g(x)Tv+(g(y)g(x)g(x)Tv)
其中

g(x)Tv=10g(x)Tvdt
,其中t是与v无关的变量。
limv0g(y)g(x)v=limv010g(x+tv)Tdt(.1)

g(y)g(x)=10g(x+tv)Tvdt(.2)

由公式.2可以推出公式.1,但是公式.1推不出公式.2. 不参考文中是如何理解的。
换种方法推导上界1.,(参考:凸优化 中文版 pdf 454页)
因为
g2(x)MI

带入到泰勒展开即可:
g(y)g(x)+g(x)T(yx)+M2||yx||22x,y

注意,参考文中也没有写错,应该采用下面的推导理解方法吧?
换种方法推导上界2.
如何函数g(x)是Lipschitz 连续,其中常数量使用L表示,则:
||g(x)g(y)||2L||xy||2

对于一维的情况:
|g(x)g(y)|L|xy|

则:
|g(x)g(y)||xy|L

两边取极限得到:
2g(x)L或者2g(x)L,因为2g(x)0,所以范围为:
02g(x)L

则将其带入到泰勒展开式得到:
g(y)g(x)+g(x)T(yx)+L2||yx||22x,y

consequences of Lipschiitz assumption

我们知道
x+=xtGt(x),或者y=xtGt(x)
将其带入到凸函数的二次上界不等式中:

g(xtGt(x))g(x)+g(x)T(tGt(x))+L2||tGt(x)||22

g(xtGt(x))g(x)tg(x)TGt(x)+t2L2||Gt(x)||22

那么下面的回溯线性搜索不等式,在0t1/L条件下成立:
g(xtGt(x))g(x)tg(x)TGt(x)+t2||Gt(x)||22(3.2)

这很容易验证,只要在0t1/L区间内,t2t2L2,即函数f(t)=t2t2L20,函数为开口向下的抛物线,与t轴的交点分别为01/L

回溯直线搜索:
给定函数fxdomf处的下降方向Gt(x),参数α(0,0.5),β(0,1)
t:=t^.
如果函数g(xtGt(x))>g(x)tg(x)TGt(x)+t2||Gt(x)||22t=βt

回溯直线搜索(或者回溯线性搜索),从t=t^开始,终止的时候满足:

ttmin=min{t^,β/L}

很容易理解,只要t落在01/L范围内,回溯搜索算法就停止,返回t,那么如果开始的取值t^[0,1/L]算法停止,如果t^>1/L
假设算法迭代过程中达到t=1/L+o处,其中o是很小的正常数。那么需要在迭代一次才能落入到算法停止的范围内:

t:=βt=(β/L+βo)

o0+时,t:=βt=(β/L)+
所以此时算法终止时t(β/L,1/L]

a global ineuqality

如果线性搜索不等式(3.2)满足,那么我们可以推导出下面的全局不等式,其描述的是关于f(xtGt(x))的不等式:

f(xtGt(x))f(z)+Gt(x)T(xz)t2||Gt(x)||22(3.3)

证明:

f(x)=g(x)+h(x)

f(xtGtx(x))=g(xtGtx(x))+h(xtGtx(x))

f(xtGtx(x))h(xtGtx(x))g(x)tg(x)TGt(x)+t2||Gt(x)||22

f(xtGtx(x))g(x)tg(x)TGt(x)+t2||Gt(x)||22+h(xtGtx(x))

f(xtGtx(x))g(x)tg(x)TGt(x)+t2||Gt(x)||22+h(xtGtx(x))

因为:g(z)g(x)+g(x)T(zx),即函数g(z)x处进行展开,则
g(x)g(z)+g(x)T(xz)

函数:h(z)f(xtGt(t))+f(xtGt(t))T(zx+tGt(t))
即:
f(xtGt(t))h(z)+f(xtGt(t))T(xztGt(t))

以及(.0)公式,我们化简得到:
f(xtGtx(x))g(z)+g(x)T(xz)tg(x)TGt(x)+t2||Gt(x)||22+h(z)+(Gt(x)g(x))(xztGt(x))

化简得到:
=g(z)+h(z)+Gt(x)T(xz)t2||Gt(x)||22

一次迭代过程

x+=xtGt(x)

z=x带入到算法3.3,得到:
f(x+)f(x)t2||Gt(x)||22


f(x+)f(x)0

这表明算法是一个下降方法。
z=x。带入到不等式(3.3):
0f(x+)fGt(x)T(xx)t2||Gt(x)||22

=12t(||xx||22||xxtGt(x)||22)

=12t(||xx||22||x+x||)

因此:
||xx||22||x+x||,这说明经过一次迭代,到最优点集的距离缩短了。

Analysis for fixed step size

收敛性分析for固定步长
迭代步长的大小为t=1/L
并且x=x(i1),x+=x(i)
则:

i=1k(f(x(i)f)12ti=1k(||x(i1)x||22||x(i)x||22)

=12t(||x0x||22||x(k)x||22)

12t||x0x||22

因为f(x(i))是非递增的,
f(x(k))f1ki=1k(f(x(i)f)12kt||x0x||22

因此:经过O(1/ϵ)次迭代,算法达到:f(x(k))fϵ.

参考文献:
1、http://people.eecs.berkeley.edu/~elghaoui/Teaching/EE227A/lecture18.pdf 近端梯度法
http://download.csdn.net/detail/xuluhui123/9584831

posted on 2016-07-21 19:22  Raby_Draby  阅读(1007)  评论(0)    收藏  举报

导航