摘要:介绍梯度下降算法,以及在 f(x) f ( x ) 的梯度 ▽f(x) ▽ f ( x ) 满足L-Lipschitz条件下的梯度下降算法的意义,并由此展开的非光滑约束下的近端梯度下降算法,求解 minxfs(x)+fn(x) min x f s ( x ) + f n ( x ) 问题.
考虑 minxf(x) min x f ( x ) ,其中 f(x) f ( x ) 为可微凸函数,且其梯度 ▽f(x) ▽ f ( x ) 满足L-Lipschitz条件.
最简单的优化方法为梯度下降法(Gradient descent)
将 f(x) f ( x ) 在 x=x(k+1) x = x ( k + 1 ) 的值,在 x(k) x ( k ) 处做Taylor展开,得到
步长参数 0<η<1 0 < η < 1 ,则每一次迭代总能保证 f(x(k+1))≤f(x(k)) f ( x ( k + 1 ) ) ≤ f ( x ( k ) ) .
首先给出L-Lipschitz定义:
设函数 f(x) f ( x ) 在有限区间 [a,b] [ a , b ] 上满足如下条件:
- 当 x∈[a,b] x ∈ [ a , b ] 时, f(x)∈[a,b] f ( x ) ∈ [ a , b ] ,即 a≤f(x)≤b a ≤ f ( x ) ≤ b ;
- 对任意的 x1,x2∈[a,b] x 1 , x 2 ∈ [ a , b ] , |f(x1)−f(x2)|≤L|x1−x2| | 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 ) 可以展开成如下二阶近似形式
展开,并将与 x x 无关的项记为 ϕ(x(k)) ϕ ( x ( k ) ) ,则可以进一步化简为
由图可知
当且仅当 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 ) ) ,则可以得到
因此,在二阶近似的条件下,梯度下降可以理解为:
收敛速度为 O(1k) O ( 1 k ) .
考虑 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 ) 为非光滑函数.
对光滑部分做如上二阶近似,得到
令 x(k+1)=argminxf^(x;x(k)) x ( k + 1 ) = arg min x f ^ ( x ; x ( k ) ) ,则可以得到近端梯度下降的更新公式
而该更新公式可以通过如下近端问题高效求解:
即最小化 μfn(x) μ f n ( x ) 加上一个独立的二次问题. 此时的收敛速率仍为 O(1k) O ( 1 k ) .
例1:
凸稀疏罚函数 fn(x)=||x||1 f n ( x ) = | | x | | 1 ,此时得到的近端优化问题为
argminx12||x−z||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 压缩,而且计算仅需线性时间.
例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
例3:
取 fn(x)=∑iI∞[xi≤0] 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 }