一、什麼是一維搜索
在許多迭代下降算法中,具有一個共同點,這就是得到點後,需要按某種規則確定一個方向,再從出發,沿方向在直線(或射線)上求目標函數的極小點,從而得到的後繼點。重複以上做法,直到求得問題的解。這裏所謂目標函數在直線上的極小點,稱爲一維搜索,或稱爲線搜索Line Search。
在機器學習中, 通常需要求某個函數的最值。 線搜索(line search)是求得一個函數f(x)的最值的兩種常用迭代方法之一。 其思想是首先求得一個下降方向,在這個方向上f(x)會下降, 然後是求得f(x)在這個方向上下降的步長。
求下降方向的方法有很多, 比如梯度下降, 牛頓方法和Quasi-Newton方法, 而步長可以是固定值, 也可以通過諸如回溯線搜索來求得。所以Line Search經常被用於一種步長選擇的方式。
一維搜索的方法很多,歸納起來,大體可分成兩大類:
1)一類是試探法。按栽某種方式找試探點,通過一系列試探點來確定極小點。
2)另一類是函數逼近法,或稱爲插值法。用某種較簡單的曲線逼近本來的函數曲線,通過求逼近函數的極小點來估計目標函數的極小點。
二、試探法
試探法常用的包括:黃金分割法、Fibonacci法、進退法、平分法及其改進方法。
2.1 黃金分割法或稱爲0.618法
適用於單峯函數。
詳細計算步驟如下:
實際問題中,目標函數在其定義域內不一定是單峯的,因此需要先確定單峯區間,然後使用黃金分割法計算公式。
2.2 Fibonacci法
與黃金分割法類似,適用於單峯函數。在計算過程中,也是第1次迭代需要計算兩個試探點,以後每次迭代只需新算一點,另一點取自上次迭代。Fibonacci法與0.618法的主要區別之一在於區間長度縮短比率不是常數,而是所謂的Fibonacci數確定。
理論上,0.618法得到的最終區間大約比使用Fibonacci法長17%。
但Fibonncci法的缺點是要事先知道計算函數值的次數。
比較起來,0.618法更簡單,它不需要事先知道計算次數。在實際問題中,一般採用0.618法。
三、函數逼近法
函數逼近法常用的具體方法有:牛頓法、割線法、拋物線法、三次插值法。
牛頓法的基本思想是,在極小點附近用二階Taylor多項式近似目標函數f(x),進而求出極小點的估計值。