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 轴的交点分别为0 1/L

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

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

ttmin=min{t^,β/L}

很容易理解,只要 t 落在0 1/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

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值