无约束优化算法-第三节:次梯度类算法
Posted 快乐江湖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无约束优化算法-第三节:次梯度类算法相关的知识,希望对你有一定的参考价值。
文章目录
一:次梯度算法
对于梯度下降法,其前提是目标函数 f ( x ) f(x) f(x)是一阶可微的,但是在实际应用中经常会遇到不可微的函数,对于这类函数我们无法在每个点处求出梯度,但往往它们的最优值都是在不可微点处取到的,所以为了能够处理这种情形,本节介绍次梯度算法
(1)次梯度算法结构
假设 f ( x ) f(x) f(x)为凸函数,但不一定可微,考虑如下问题
m i n x f ( x ) \\mathopmin\\limits_x f(x) xminf(x)
- 一阶充要条件: x ∗ x^* x∗是一个全局极小点<=> 0 ∈ ∂ f ( x ∗ ) 0\\in \\partial f(x^*) 0∈∂f(x∗)
- 因此可以通过计算凸函数的次梯度集合中包含 0 0 0的点来求解其对应的全局极小点
为了极小化一个不可微的凸函数 f f f,可类似梯度法构造如下次梯度算法的迭代格式
x k + 1 = x k − α k g k , g k ∈ ∂ f ( x k ) x^k+1=x^k-\\alpha_kg^k, \\quad g^k\\in \\partial f(x^k) xk+1=xk−αkgk,gk∈∂f(xk)
其中 α k > 0 \\alpha_k>0 αk>0,通常有如下4种选择方式
- 固定步长 α k = α \\alpha_k=\\alpha αk=α
- 固定 ∣ ∣ x k + 1 − x k ∣ ∣ ||x^k+1-x^k|| ∣∣xk+1−xk∣∣,即 α k ∣ ∣ g k ∣ ∣ \\alpha_k||g^k|| αk∣∣gk∣∣为常数
- 消失步长 α k → 0 \\alpha_k \\rightarrow 0 αk→0,且 ∑ k = 0 ∞ a k = + ∞ \\sum\\limits_k=0^\\inftya_k=+\\infty k=0∑∞ak=+∞
- 选取 α k \\alpha_k αk使其满足某种线搜索准则
(2)应用举例-LASSO问题求解
考虑LASSO问题:
m i n f ( x ) = 1 2 ∣ ∣ A x − b ∣ ∣ 2 + u ∣ ∣ x ∣ ∣ 1 min \\quad f(x)=\\frac12||Ax-b||^2+u||x||_1 minf(x)=21∣∣Ax−b∣∣2+u∣∣x∣∣1
容易得知 f ( x ) f(x) f(x)的一个次梯度为
g = A T ( A x − b ) + u s i g n ( x ) g=A^T(Ax-b)+usign(x) g=AT(Ax−b)+usign(x)
- s i g n ( x ) sign(x) sign(x)是关于 x x x逐分量的符号函数
因此,LASSO问题的次梯度算法为
x k + 1 = x k − α k ( A T ( A x k − b ) + u s i g n ( x k ) ) x^k+1=x^k-\\alpha_k(A^T(Ax^k-b)+usign(x^k)) xk+1=xk−αk(AT(Axk−b)+usign(xk))
- 步长 a k a_k ak可选为固定步长或消失步长
如下,正则化参数 u = 1 u=1 u=1,分别选取固定步长 a k = 0.0005 a_k=0.0005 ak=0.0005, a k = 0.0002 a_k=0.0002 ak=0.0002, a k = 0.0001 a_k=0.0001 ak=0.0001以及消失步长 a k = 0.002 k a_k=\\frac0.002\\sqrtk ak=k0.002。可以发现,在3000步以内,使用不同的固定步长最终会到达次优解,函数值下降到一定程度便稳定在某个值附近;而使用消失步长算法最终将会收敛;另外次梯度算法本身是非单调方法,因此在求解过程中需要记录历史中最好的一次迭代来作为算法的最终输出
对于 u = 1 0 − 2 , 1 0 − 3 u=10^-2,10^-3 u=10−2,10−3,我们采用连续化次梯度算法进行求解
二:牛顿法
使用梯度下降法,我们给出的迭代格式为
x k + 1 = x k − α k ∇ f ( x k ) x^k+1=x^k-\\alpha_k\\nabla f(x^k) xk+1=xk−αk∇f(xk)
由于梯度下降的基本策略是沿一阶最速下降方向迭代。当 ∇ 2 f ( x ) \\nabla^2f(x) ∇2f(x)的条件数较大时,它的收敛速度比较缓慢(只用到了一阶信息)。因此如果 f ( x ) f(x) f(x)足够光滑,我们可以利用 f ( x ) f(x) f(x)的二阶信息改进下降方向,以加速算法的迭代
(1)经典牛顿法
经典牛顿法:对于可微二次函数 f ( x ) f(x) f(x),对于第 k k k步迭代,我们考虑目标函数 f f f在点 x k x_k xk的二阶泰勒近似
忽略高阶项
o
(
∣
∣
d
k
∣
∣
2
)
o(||d^k||^2)
o(∣∣dk∣∣2),并将等式右边视作
d
k
d^k
dk的函数并极小化,则 以上是关于无约束优化算法-第三节:次梯度类算法的主要内容,如果未能解决你的问题,请参考以下文章
∇
2
f
(
x
k
)
d
k