近端梯度下降算法(Proximal Gradient Algorithm)
摘要:介绍梯度下降算法,以及在
f(x)
的梯度
▽f(x)
满足L-Lipschitz条件下的梯度下降算法的意义,并由此展开的非光滑约束下的近端梯度下降算法,求解
minxfs(x)+fn(x)
问题.
目录
- 梯度下降算法
- 二阶近似下的梯度下降算法
- 引入非光滑约束后的近端梯度下降
- 三个近端梯度下降计算非光滑约束优化的例子
1. 梯度下降
考虑
minxf(x)
,其中
f(x)
为可微凸函数,且其梯度
▽f(x)
满足L-Lipschitz条件.
最简单的优化方法为梯度下降法(Gradient descent)
x(k+1)=x(k)−η▽f(x(k))
将
f(x)
在
x=x(k+1)
的值,在
x(k)
处做Taylor展开,得到
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
,则每一次迭代总能保证
f(x(k+1))≤f(x(k))
.
2. 梯度
▽f(x)
满足L-Lipschitz条件下的梯度下降
首先给出L-Lipschitz定义:
设函数
f(x)
在有限区间
[a,b]
上满足如下条件:
- 当
x∈[a,b]
时,
f(x)∈[a,b]
,即
a≤f(x)≤b
;
- 对任意的
x1,x2∈[a,b]
,
|f(x1)−f(x2)|≤L|x1−x2|
恒成立;
则称
f(x)
在
[a,b]
上满足L-Lipschitz条件,
L
称为Lipschitz常数.
可以发现,L-Lipschitz连续比一致连续更强,要求函数值在有限区间的变化幅度受到限制.
进一步的,如果函数
f(x)
的梯度
▽f(x)
满足L-Lipschitz连续,则其在给定点
x(k)
可以展开成如下二阶近似形式
f^(x;x(k))≐f(x(k))+<▽f(x(k),x−x(k))>+L2||x−x(k)||2
展开,并将与
x
无关的项记为
ϕ(x(k))
,则可以进一步化简为
f^(x;x(k))=L2∣∣∣∣∣∣x−(x(k)−1L▽f(x(k)))∣∣∣∣∣∣2+ϕ(x(k))
由图可知
f^(x;x(k))≥f(x)
当且仅当
x=x(k)
时,取等号.
f^(x;x(k))
实际上为原目标函数的二次上界.
令
x(k+1)=argminxf^(x;x(k))
,则可以得到
x(k+1)=x(k)−1L▽f(x(k))
因此,在二阶近似的条件下,梯度下降可以理解为:
- 每一次迭代都在最小化目标函数在上一次迭代点处的二次上界.
收敛速度为
O(1k)
.
3. 引入非光滑约束后的近端梯度下降算法
考虑
minxfs(x)+fn(x)
,其中
fs(x)
为可微凸函数,且其梯度
▽fs(x)
满足L-Lipschitz条件,
fn(x)
为非光滑函数.
对光滑部分做如上二阶近似,得到
f^(x;x(k))=L2∣∣∣∣∣∣x−(x(k)−1L▽fs(x(k)))∣∣∣∣∣∣2+ϕ(x(k))+fn(x)
令
x(k+1)=argminxf^(x;x(k))
,则可以得到近端梯度下降的更新公式
x(k+1)=argminxL2∣∣∣∣∣∣x−(x(k)−1L▽fs(x(k)))∣∣∣∣∣∣2+fn(x)
而该更新公式可以通过如下近端问题高效求解:
proxμfn(x)(z)=argminx12||x−z||2+μfn(x)
即最小化
μfn(x)
加上一个独立的二次问题. 此时的收敛速率仍为
O(1k)
.
4. 三个近端梯度下降计算非光滑约束优化的例子
例1:
凸稀疏罚函数
fn(x)=||x||1
,此时得到的近端优化问题为
argminx12||x−z||2+μ||x||1
求解得到
z
的软阈值函数
proxμfn(x)(z)=Sμ(z)=sign(z)max{|z|−μ,0}
此时的该操作符能够将
z
的所有元素向
0
压缩,而且计算仅需线性时间.
例2:
取
fn(x)=||x||0
,则得到
z
的硬阈值函数
proxμfn(x)(z)=Hμ(z)={z|z|≥μ0otherwise
例3:
取
fn(x)=∑iI∞[xi≤0]
,则得到ReLU网的非线性变换
proxμfn(x)(z)=Rec(z)=max{z,0}