在机器学习中, 通常需要求某个函数的最值(比如最大似然中需要求的似然的最大值). 线搜索(line search)是求得一个函数f(x)在这个方向上下降的步长. 求下降方向的方法有很多, 比如梯度下降, 牛顿方法和Quasi-Newton方法, 而步长可以是固定值, 也可以通过诸如Armijo算法来求得.
1. 线搜索(line search)
线搜索是一种迭代的求得某个函数的最值的方法. 对于每次迭代, 线搜索会计算得到搜索的方向αk.
大多数的线搜索方法都会要求pk=−Bk−1∇fk
其中∇2f(xk), 在Quasi-Newton方法中通过迭代求得Hessian矩阵的近似矩阵.
当Bk是正定矩阵时:
2. 步长
步长α应该最小化下面的函数:
但是求得使上式最小的α, 直至达到某个停止条件. 一般的线搜索方法都包含以下两个步骤:
- bracketing: 求得一个包含理想的步长的区间
- 二分法或者插值法: 在这个区间内使用二分法或者插值法来求得步长
2.1 对于凸函数的二分搜索算法
如果α, 使得
令α的凸函数, 所以问题转化为求:
因为ϕ′(0)<0.
假设我们知道一个ϕ′(α)≈0
- 令k=0, ϕ′(α~):
- 如果k←k+1
- 如果k←k+1
- 如果ϕ′(α~)=0, 停止迭代
2.2 Armijo算法
使用二分查找法来求步长的计算复杂度很高, 因为在最小化f(x)的每次迭代中我们都需要执行一次线搜索, 而每次线搜索都要用上述的二分查找算法. 我们可以在牺牲一定的精度的条件下来加快计算速度, Armijo算法是一种近似线搜索算法.
首先, 我们要求每次的步长f(x)充分的降低:
上述条件称作 充分下降条件 , 其中l(α).
充分下降条件规定只有使得α才满足条件. 其区间如上图所示.
单独只有充分下降条件是不够的, 因为如上图, 所有充分小的α, 我们引入了第二个要求, 亦即 曲率条件(curvature condition) :
上述两个条件合起来称作 Wolfe条件 :
其中0<c1<c2<1
我们可以使用以下算法来求得满足Wolfe条件的步长α变得太小:
- 选择一个α←α¯
- 重复以下步骤直到f(xk+αpk)≤f(xk)+c1α∇fkTpk:
- α←ρα
3. 返回αk=α
[1]. Numerical Optimization, Chapter 3, p35-p42. J. Nocedal, S.Wright.
[2]. Continuous Optimization Methods: Line search methods: one-dimensional optimization .
[3]. Wikipedia: Line Search .
--------------------- 本文来自 Tsroad 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/tsroad/article/details/50249393?utm_source=copy