【原創】回溯線搜索 Backtracking line search


機器學習中很多數值優化算法都會用到線搜索(line search)。線搜索的目的是在搜索方向上找到是目標函數\(f(x)\)最小的點。然而,精確找到最小點比較耗時,由於搜索方向本來就是近似,所以用較小的代價找到最小點的近似就可以了。 Backtracking Line Search(BLS)就是這么一種線搜索算法。

BLS算法的思想是,在搜索方向上,先設置一個初始步長\({\alpha _0}\),如果步長太大,則縮減步長,知道合適為止。

上面的想法要解決兩個問題:

1. 如何判斷當前步長是否合適 (Armijo–Goldstein condition)

\[f({\bf{x}} + \alpha {\mkern 1mu} {\bf{p}}) \le f({\bf{x}}) + \alpha {\mkern 1mu} c{\mkern 1mu} m{\mkern 1mu} \]

\[m = {{\bf{p}}^{\rm{T}}}{\mkern 1mu} \nabla f({\bf{x}}){\mkern 1mu} \]

其中,\({\bf{p}}\)是當前搜尋方向,\(\alpha \)是步長,\({\mkern 1mu} c{\mkern 1mu} \)是控制參數,需要根據情況人工核定。

從上式可以看出,當前點的斜率越小,\(f({\bf{x}} + \alpha {\mkern 1mu} {\bf{p}}) - f({\bf{x}})\)的要求越小,步長就越小。對於一般的凸問題,搜尋點越接近最優點,原函數的斜率越較小,因此步長越小,這也是符合直覺的。

2. 如何則縮減步長

搜索步長的縮減通過\(\tau {\mkern 1mu} \)參數來控制,主要通過人工核定,既\({\alpha _j} = \tau {\mkern 1mu} {\alpha _{j - 1}}\)

總結一下BLS算法的流程如下:

1. 設置初始步長\({\alpha _0}\)

2. 判斷\(f({\bf{x}} + \alpha {\mkern 1mu} {\bf{p}}) \le f({\bf{x}}) + \alpha {\mkern 1mu} c{\mkern 1mu} m{\mkern 1mu} \)是否滿足,如果滿足,停止;否則3:

3. \({\alpha _j} = \tau {\mkern 1mu} {\alpha _{j - 1}}\),重復2

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM