近端梯度下降算法(Proximal Gradient Algorithm)

近端梯度下降算法(Proximal Gradient Algorithm)


摘要:介绍梯度下降算法,以及在 f(x) f ( x ) 的梯度 f(x) ▽ f ( x ) 满足L-Lipschitz条件下的梯度下降算法的意义,并由此展开的非光滑约束下的近端梯度下降算法,求解 minxfs(x)+fn(x) min x f s ( x ) + f n ( x ) 问题.

目录

  1. 梯度下降算法
  2. 二阶近似下的梯度下降算法
  3. 引入非光滑约束后的近端梯度下降
  4. 三个近端梯度下降计算非光滑约束优化的例子

1. 梯度下降

考虑 minxf(x) min x f ( x ) ,其中 f(x) f ( x ) 为可微凸函数,且其梯度 f(x) ▽ f ( x ) 满足L-Lipschitz条件.
最简单的优化方法为梯度下降法(Gradient descent)

x(k+1)=x(k)ηf(x(k)) x ( k + 1 ) = x ( k ) − η ▽ f ( x ( k ) )

f(x) f ( x ) x=x(k+1) x = x ( k + 1 ) 的值,在 x(k) x ( k ) 处做Taylor展开,得到

f(x(k+1))=f(x(k))+f(x(k))(x(k+1)x(k))=f(x(k))η(f(x(k)))2f(x(k)) f ( x ( k + 1 ) ) = f ( x ( k ) ) + ▽ f ( x ( k ) ) ( x ( k + 1 ) − x ( k ) ) = f ( x ( k ) ) − η ( ▽ f ( x ( k ) ) ) 2 ≤ f ( x ( k ) )

步长参数 0<η<1 0 < η < 1 ,则每一次迭代总能保证 f(x(k+1))f(x(k)) f ( x ( k + 1 ) ) ≤ f ( x ( k ) ) .


2. 梯度 f(x) ▽ f ( x ) 满足L-Lipschitz条件下的梯度下降

首先给出L-Lipschitz定义:

设函数 f(x) f ( x ) 在有限区间 [a,b] [ a , b ] 上满足如下条件:

  • x[a,b] x ∈ [ a , b ] 时, f(x)[a,b] f ( x ) ∈ [ a , b ] ,即 af(x)b a ≤ f ( x ) ≤ b
  • 对任意的 x1x2[a,b] x 1 , x 2 ∈ [ a , b ] |f(x1)f(x2)|L|x1x2| | f ( x 1 ) − f ( x 2 ) | ≤ L | x 1 − x 2 | 恒成立;

则称 f(x) f ( x ) [a,b] [ a , b ] 上满足L-Lipschitz条件, L L 称为Lipschitz常数.

可以发现,L-Lipschitz连续比一致连续更强,要求函数值在有限区间的变化幅度受到限制.

进一步的,如果函数 f(x) f ( x ) 梯度 f(x) ▽ f ( x ) 满足L-Lipschitz连续,则其在给定点 x(k) x ( k ) 可以展开成如下二阶近似形式

f^(x;x(k))f(x(k))+<f(x(k),xx(k))>+L2||xx(k)||2 f ^ ( x ; x ( k ) ) ≐ f ( x ( k ) ) + < ▽ f ( x ( k ) , x − x ( k ) ) > + L 2 | | x − x ( k ) | | 2

展开,并将与 x x 无关的项记为 ϕ(x(k)) ϕ ( x ( k ) ) ,则可以进一步化简为

f^(x;x(k))=L2x(x(k)1Lf(x(k)))2+ϕ(x(k)) f ^ ( x ; x ( k ) ) = L 2 | | x − ( x ( k ) − 1 L ▽ f ( x ( k ) ) ) | | 2 + ϕ ( x ( k ) )

近端梯度下降算法(Proximal Gradient Algorithm)_第1张图片

由图可知

f^(x;x(k))f(x) f ^ ( x ; x ( k ) ) ≥ f ( x )

当且仅当 x=x(k) x = x ( k ) 时,取等号. f^(x;x(k)) f ^ ( x ; x ( k ) ) 实际上为原目标函数的二次上界.

x(k+1)=argminxf^(x;x(k)) x ( k + 1 ) = arg ⁡ min x f ^ ( x ; x ( k ) ) ,则可以得到

x(k+1)=x(k)1Lf(x(k)) x ( k + 1 ) = x ( k ) − 1 L ▽ f ( x ( k ) )

因此,在二阶近似的条件下,梯度下降可以理解为:

  • 每一次迭代都在最小化目标函数在上一次迭代点处的二次上界.

收敛速度为 O(1k) O ( 1 k ) .


3. 引入非光滑约束后的近端梯度下降算法

考虑 minxfs(x)+fn(x) min x f s ( x ) + f n ( x ) ,其中 fs(x) f s ( x ) 为可微凸函数,且其梯度 fs(x) ▽ f s ( x ) 满足L-Lipschitz条件, fn(x) f n ( x ) 为非光滑函数.
对光滑部分做如上二阶近似,得到

f^(x;x(k))=L2x(x(k)1Lfs(x(k)))2+ϕ(x(k))+fn(x) f ^ ( x ; x ( k ) ) = L 2 | | x − ( x ( k ) − 1 L ▽ f s ( x ( k ) ) ) | | 2 + ϕ ( x ( k ) ) + f n ( x )

x(k+1)=argminxf^(x;x(k)) x ( k + 1 ) = arg ⁡ min x f ^ ( x ; x ( k ) ) ,则可以得到近端梯度下降的更新公式

x(k+1)=argminxL2x(x(k)1Lfs(x(k)))2+fn(x) x ( k + 1 ) = arg ⁡ min x L 2 | | x − ( x ( k ) − 1 L ▽ f s ( x ( k ) ) ) | | 2 + f n ( x )

而该更新公式可以通过如下近端问题高效求解:

proxμfn(x)(z)=argminx12||xz||2+μfn(x) p r o x μ f n ( x ) ( z ) = arg ⁡ min x 1 2 | | x − z | | 2 + μ f n ( x )

最小化 μfn(x) μ f n ( x ) 加上一个独立的二次问题. 此时的收敛速率仍为 O(1k) O ( 1 k ) .


4. 三个近端梯度下降计算非光滑约束优化的例子

例1:

凸稀疏罚函数 fn(x)=||x||1 f n ( x ) = | | x | | 1 ,此时得到的近端优化问题为

argminx12||xz||2+μ||x||1 arg ⁡ min x 1 2 | | x − z | | 2 + μ | | x | | 1

求解得到 z z 的软阈值函数
proxμfn(x)(z)=Sμ(z)=sign(z)max{|z|μ,0} p r o x μ f n ( x ) ( z ) = S μ ( z ) = s i g n ( z ) max { | z | − μ , 0 }

此时的该操作符能够将 z z 的所有元素向 0 0 压缩,而且计算仅需线性时间.

近端梯度下降算法(Proximal Gradient Algorithm)_第2张图片

例2:

fn(x)=||x||0 f n ( x ) = | | x | | 0 ,则得到 z z 的硬阈值函数

proxμfn(x)(z)=Hμ(z)={z|z|μ0otherwise p r o x μ f n ( x ) ( z ) = H μ ( z ) = { z | z | ≥ μ 0 o t h e r w i s e

近端梯度下降算法(Proximal Gradient Algorithm)_第3张图片

例3:

fn(x)=iI[xi0] f n ( x ) = ∑ i I ∞ [ x i ≤ 0 ] ,则得到ReLU网的非线性变换

proxμfn(x)(z)=Rec(z)=max{z,0} p r o x μ f n ( x ) ( z ) = R e c ( z ) = max { z , 0 }

近端梯度下降算法(Proximal Gradient Algorithm)_第4张图片

你可能感兴趣的:(机器学习,优化算法)