回溯线搜索 Backtracking line search

回溯线搜索 Backtracking line search


转载自:http://www.cnblogs.com/richqian/p/4534356.html

机器学习中很多数值优化算法都会用到线搜索(line search)。线搜索的目的是在搜索方向上找到是目标函数f(x)最小的点。然而,精确找到最小点比较耗时,由于搜索方向本来就是近似,所以用较小的代价找到最小点的近似就可以了。 Backtracking Line Search(BLS)就是这么一种线搜索算法。


BLS算法的思想是,在搜索方向上,先设置一个初始步长α0,如果步长太大,则缩减步长,知道合适为止。


上面的想法要解决两个问题:

1. 如何判断当前步长是否合适 (Armijo–Goldstein condition)

f(x+αp)f(x)+αcm

m=pTf(x)

其中,p是当前搜寻方向,α是步长,c是控制参数,需要根据情况人工核定。

从上式可以看出,当前点的斜率越小,f(x+αp)f(x)的要求越小,步长就越小。对于一般的凸问题,搜寻点越接近最优点,原函数的斜率越较小,因此步长越小,这也是符合直觉的。

2. 如何则缩减步长

搜索步长的缩减通过τ参数来控制,主要通过人工核定,既αj=ταj1

总结一下BLS算法的流程如下:

1. 设置初始步长α0

2. 判断f(x+αp)f(x)+αcm是否满足,如果满足,停止;否则3:

3. αj=ταj1,重复2


你可能感兴趣的:(机器学习)