nesta算法讲座

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Nesta 算法以及一些推广

各位老师,各位同学,大家好。今天我给大家讲下Nesta 这个算法。这个讲稿我写的比较啰嗦,有大量的重复语言,这样做呢,是刻意为之,因为我想给大家留足思考缓冲时间,所以故意写的比较啰嗦。压缩感知是一种全新的采样方式,当被采样信号很稀疏时,只需要少量的随机采样即可得到信号的全部信息或者近似全部信息。但是,俗话说,上帝为了打开了一扇门的同时也会关上另一扇门,压缩感知存在的一个重要问题就是如何有效地从压缩后的测量值中恢复出原始信号。关于压缩感知的理论和应用,文章很多,这里就不介绍了,我们直奔主题。

压缩感知的信号恢复,本质上就是求下面这个优化问题

1

2min ..x s t b Ax ε

-≤

这个公式的含义,想必大家都比较清楚了,我就不再赘述。需要说的一点是,实际上,一些二阶算法比如内点法,在求解上述问题时很准确,但是二阶算法计算复杂度很高,难以满足大规模问题。所以一般来说,我们在设计求解上述问题的算法时,只考虑一阶算法,就是最多只求一阶导数。目前比较好的一阶算法比较多,例如TWISA[1],FISTA[2],primal-dual[3]算法,增广拉格朗日法[4],approximate message passing[5]算法,贪婪算法,同伦法,很多很多,大家可以在网上搜索文献看。一般来说,这些算法速度是足够的,但是,一般不够精确,因为拉格朗日乘子λ一般无法精确确定。还有一个比较现实的问题,就是这些算法(不是全部)很难处理大动态范围信号,什么叫大动态范围信号?其实很简单,就是有时候信号幅度是10,有时候又是0.0001,变化极大。再有一个问题就是,现实中的信号一般都不是绝对稀疏的,即便通过正交变换,也都不是绝对稀疏,而是近似稀疏,就是少量元素幅值较大,其余的很接近0,但不是0,这也是一个现实的问题。

Nesta 这个算法呢,它的全名叫Nesterov ’s algorithm ,这里的Nesterov 就是大名鼎鼎的Yuri Nesterov ,这个家伙是优化界非常牛的人,他和Arkadi Nemirovski 一起把线性规划推广为锥规划。Nesta 这个算法,本质上是Nesterov 的一些思想的综合,主要是他三篇论文的综合,第一篇是A method for unconstrained convex minimization problem with the rate of convergence O(1/k 2),这个论文催生了非常著名的FISTA 算法;第二篇是Smooth minimization of non-smooth functions ,这个论文同样非常重要,是讲如何平滑一个不光滑的函数。为什么重要呢?很简单,因为我们压缩感知里的l 1范数就是不光滑的凸函数,它在0点是不可导的,所以应用了光滑技术就可以变成光滑函数,就是处处可导函数,这样就很好处理了;第三篇论文是Gradient methods for minimizing composite objective function ,这个论文开发了一种优化方法,收敛速度很快,而且计算很简单。Nesta 是这三篇论文的综合,后面我们会具体讲。

在上述Nesterov 的第三篇论文里,就是Gradient methods for minimizing composite objective function 这篇论文里,他开发了一种算法,用于求解以下问题

()min p

x Q f x ∈

这里呢,要求f (x )是一个处处可导的函数,注意,要求f (x )是可导的,不可导就不行。p Q 是一个凸集。此外,还有一个要求,就是f (x )的梯度是有界的,通俗来说,就是f (x )的梯度要满足下面这个不等式

()()

22

f x f y L x y ∇-∇≤-对任意的x,y 都成立

L 是个常数。当满足这些条件以后,反复迭代下面的算法,就得到优化问题的解。

注意,这个算法我们叫它算法1,这个算法看着很复杂,迭代步骤很多,其实不然,这个算法是比较简单的。因为注意观察,首先,k y 这一步,第一项是个凸函数,后面那一项是个线性函数,可行域是凸集,这可以用传统的拉格朗日乘子法就能解。k z 呢,p(x)这个函数是我们自己选的,后面会说,p(x)一般也是个l 2范数,所以k z 的求解跟k y 其实是一样的,没区别的。所以算法1其实是个看似复杂,实际简单的算法。

如果我们取

()121k k α=

+,()

2

3k k τ=+,那么算法1的收敛速度就是

()()()

()

2

41k Lp x f y f x k **-≤

+,这个收敛速度跟FISTA 基本差不多,都是属于O(1/k 2)级别的

收敛速度,已经逼近了一阶算法的理论极限。

注意,算法1只是一般形式,接下来的问题是如何用它来解压缩感知的恢复问题呢?那么很自然地,我们先看看这二者的联系和区别。首先,压缩感知的恢复问题里可行域是

2b Ax ε-≤,这是一个关于x 的凸集,很好验证,所以2b Ax ε-≤可以对应为算法1

里的p Q 。那么1x 是否可以直接套到f(x)呢,答案是不行,因为1x 在0点处是不可导的,它不是处处可导的函数,而算法1是要求f(x)是处处可导的函数,所以1x 不能直接套到f(x)。

这时候,很自然地,我们需要平滑1x ,给它加个东西,让它变成处处可导的函数,而且还不能影响最小化问题的解。不能说我给1x 加了个东西,然后求解最小化问题,得到的解跟求解l1范数最小化问题的解不一样,那就不行了。这个时候就要用到Nesterov 第二篇论文里的内容了,就是Smooth minimization of non-smooth functions 。Nesterov 在这篇论文里提了一种平滑方法,它说如果你的f(x)可以写成如下形式,那就可以平滑,否则,就不一定了

()max ,d

u Q f x u Wx ∈=

W 是一个矩阵。注意看上面这个式子,当一个人拿到这样一个公式,很自然地就会想,什么样的函数f(x)可以写成这样呢?看起来似乎没有哪种函数是这个样子的。如果你很懂泛函分析的话,就会知道,这种写法,其实指的是范数。比如l1范数,就可以写成

11

max ,u x u x ∞≤=

这里W 就是I 。再比如l2范数,也可以写成 22

1

max ,u x u x ≤=

这里面有啥规律呢?很简单

1

max ,n m

u x

u x ≤=

这里m 和n 是一对共轭数,就是说

11

1m n

+=。那为啥要多个W 呢,这是因为比如我们要处理analysis 模型,analysis 模型一般就是

1

2min ..Wx s t b Ax ε

-≤

这时候11

max ,u

Wx u Wx ∞

≤=。在Nesterov 的文章里,他说如果()max ,d

u Q f x u Wx ∈=,那么

可以这样平滑

()()max ,d

d u Q f x u Wx p u μμ∈=- (1)

这里()d p u 一般选为l2范数就可以,就是()2

2

1=

2d p u u 。注意了,我们接下来要用()f x μ代替()f x ,因为()f x μ是一个处处可导的函数,而且对()f x μ求最小化和对()f x 求最小化得到的结果非常非常接近。Nesterov 给出了()f x μ的梯度为()()f x W u x μμ∇=*,这里

()u x μ是公式(1)的最优值,就是公式(1)关于u 的最大值。而()f x μ∇对应的Lipschitz

常数为2

1

L W μ

=

。注意了,一般呢,我们要把μ取得很小,因为μ越小,()f x μ和()

f x 就越接近。既然我们得到了平滑后的函数,就可以套用算法1了,这个时候压缩感知的修复问题就变成了

相关文档
最新文档