无约束优化算法-第一节:线搜索方法
Posted 我擦我擦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无约束优化算法-第一节:线搜索方法相关的知识,希望对你有一定的参考价值。
文章目录
一:无约束优化问题概述
考虑如下无约束优化问题
m i n x ∈ R n f ( x ) \\mathopmin\\limits_x\\in R^nf(x) x∈Rnminf(x)
无约束优化问题是众多优化问题中最基本的一类问题,它对自变量 x x x的取值范围不加限制,所以无需考虑 x x x的可行性
- 对于光滑函数,我们可以较容易地利用梯度和海瑟矩阵的信息来设计算法
- 对于非光滑函数,我们可以利用次梯度来构造迭代格式
无约束优化问题的优化算法主要分为如下两类
-
线搜索类型:根据搜索方向的不同可以分为如下几种,一旦确定了搜索的方向,下一步即沿着该方向寻找下一个迭代点
- 梯度类算法
- 次梯度算法
- 牛顿算法
- 拟牛顿算法
- …
-
信赖域类型:主要针对 f ( x ) f(x) f(x)二阶可微的情形,它是在一个给定的区域内使用二阶模型近似原问题,通过不断直接求解该二阶模型从而找到最优值点
二:线搜索方法
(1)概述
线搜索方法:对于本文最开始的优化问题,采用线搜索方法求解 f ( x ) f(x) f(x)最小值点的过程类似于盲人下山:假设一个人处于某个点 x x x处, f ( x ) f(x) f(x)表示此地的高度,为了寻找最低点,在点 x x x处需要确定如下两件事情
- 下一步应该向哪一个方向行走?
- 沿着该方向行走多远后停下以便选取下一个下山方向
以上这两个因素确定后,便可以一直重复,直到到达 f ( x ) f(x) f(x)的最小值点
线搜索类算法的数学表述为:给定当前迭代点 x k x^k xk,首先通过某种算法选取向量 d k d^k dk,之后确定正数 α k \\alpha_k αk,则下一步迭代点可以写作
x k + 1 = x k + α k d k x^k+1=x^k+\\alpha_kd^k xk+1=xk+αkdk
- d k d^k dk:是迭代点 x k x^k xk处的搜索方向。此处要求 d k d^k dk是一个下降方向,也即 ( d k ) T ∇ f ( x k ) < 0 (d^k)^T\\nabla f(x^k)<0 (dk)T∇f(xk)<0,这个下降性质保证了沿着此方向搜索函数值会减小
- α k \\alpha_k αk:是相应的步长
所以线搜索类算法的关键是如何选取一个好的方向 d k d^k dk和合适的步长 α k \\alpha_k αk
不同的线搜索算法对于 d k d^k dk的选取有着不同的方式,但 α k \\alpha_k αk的选取方法却基本一致。首先构造辅助函数
ϕ ( α ) = f ( x k + α d k ) \\phi(\\alpha)=f(x^k+\\alpha d^k) ϕ(α)=f(xk+αdk)
- d k d^k dk:是给定的下降方向
- α > 0 \\alpha >0 α>0:是该辅助函数的自变量
函数 ϕ ( α ) \\phi(\\alpha) ϕ(α)的几何意义非常直观:它是目标函数 f ( x ) f(x) f(x)在射线 x k + α d k : α > 0 \\x^k+\\alpha d^k:\\alpha>0\\ xk+αdk:α>0上的限制。线搜索的目标时选取合适的 α k \\alpha_k αk使得 ϕ ( α k ) \\phi(\\alpha_k) ϕ(αk)尽可能小,这要求
- α k \\alpha_k αk应该使得 f f f充分下降
- 不应该在寻找 α k \\alpha_k αk上花费过度的计算量
所以一个自然的想法是寻找 α k \\alpha_k αk使得
α k = a r g m i n α > 0 ϕ ( α ) \\alpha_k=\\mathopargmin\\limits_\\alpha>0\\phi(\\alpha) αk=α>0argminϕ(α)
这种线搜索方法称之为精确线搜索算法,虽然精确线搜索算法可以在多数情况下找到问题的解,但这通常需要非常大的计算量,所以实际应用中很少使用。所以另一个想法是不要求 α k \\alpha_k αk是 ϕ ( α ) \\phi(\\alpha) ϕ(α)的最小值点,而仅仅要求 ϕ ( α k ) \\phi(\\alpha_k) ϕ(αk)满足某些不等式性质,因此这类方法称之为非精确线搜索算法,所以我们接下来介绍该类算法的结构
(2)线搜索准则
线搜索准则:在非精确线搜索算法中,选取 α k \\alpha_k αk需要满足一定的要求,这些要求被称为线搜索准则。不合适的线搜索准则会导致算法无法收敛
- 例如下面这个例子,由于迭代过程中函数值
f
(
x
k
)
f(x^k)
f(xk)的下降量不够充分,以至于算法无法收敛至极小值点
所以为了避免这种情况发生,必须要引入一些更合理的线搜索准则来确保迭代的收敛性
A:Armijo准则
①:概述
Armijo准则:设 d k d^k dk是点 x k x^k xk处的下降方向,若
f ( x k + α d k ) ≤ f ( x k ) + c 1 α ∇ f ( x k ) T d k f(x^k+\\alpha d^k)\\leq f(x^k)+c_1\\alpha \\nabla f(x^k)^Td^k f(xk+αdk)≤f(xk)+c1α∇f(xk)Tdk
则称步长 α \\alpha α满足Armijo准则,其中 c 1 ∈ ( 0 , 1 ) c_1\\in(0,1) c1∈(0,1)是一个常数。其几何意义是指点 ( α , ϕ ( α ) ) (\\alpha, \\phi(\\alpha)) (α,ϕ(α))必须在直线
l ( α ) = ϕ ( 0 ) + c 1 α ∇ f ( x k ) T d k l(\\alpha)=\\phi(0)+c_1\\alpha\\nabla f(x^k)^Td^k l(α)=ϕ(0)+c1α∇f(x以上是关于无约束优化算法-第一节:线搜索方法的主要内容,如果未能解决你的问题,请参考以下文章
数值算法:无约束优化之一维搜索方法之多维优化问题中每步迭代的最优学习率设定问题