一、什麼是不精確一維搜尋方法
一維搜尋方法是 求函式
二、幾個不精確一維搜尋方法的準則 引用位址
line search(一維搜尋,或線搜尋)是最優化(optimization)演算法中的乙個基礎步驟/演算法。它可以分為精確的一維搜尋以及不精確的一維搜尋兩大類。
在本文中,我想用「人話」解釋一下不精確的一維搜尋的兩大準則:armijo-goldstein準則 & wolfe-powell準則。
之所以這樣說,是因為我讀到的所有最優化的書或資料,從來沒有乙個可以用初學者都能理解的方式來解釋這兩個準則,它們要麼是長篇大論、把一堆數學公式丟給你去琢磨;要麼是簡短省略、直接略過了解釋的步驟就一句話跨越千山萬水得出了結論。
每當看到這些書的時候,我腦子裡就乙個反應:你們就不能寫人話嗎?
我下面就嘗試用通俗的語言來描述一下這兩個準則。
為什麼要遵循這些準則
由於採用了不精確的一維搜尋,所以,為了能讓演算法收斂(即:求得極小值),人們逐漸發現、證明了一些規律,當你遵循這些規律的時候,演算法就很有可能收斂。因此,為了達到讓演算法收斂的目的,我們就要遵循這些準則。如果你不願意遵循這些已經公認有效的準則,而是要按自己的準則來設計演算法,那麼恭喜你,如果你能證明你的做法是有效的,未來若干年後,書本裡可能也會出現你的名字。
armijo-goldstein準則
此準則是在196x年的時候由armijo和goldstein提出的,當然我沒有具體去搜過這倆人是誰。在有的資料裡,你可能會看到「armijo rule」(armijo準則)的說法,可能是同一回事,不過,任何乙個對此作出重要貢獻的人都是不可抹殺的,不是麼?
armijo-goldstein準則的核心思想有兩個:①目標函式值應該有足夠的下降;②一維搜尋的步長α不應該太小。
這兩個思想的意圖非常明顯。由於最優化問題的目的就是尋找極小值,因此,讓目標函式函式值「下降」是我們努力的方向,所以①正是想要保證這一點。
同理,②也類似:如果一維搜尋的步長α太小了,那麼我們的搜尋類似於在原地打轉,可能也是在浪費時間和精力。
有了這兩個指導思想,我們來看看armijo-goldstein準則的數學表示式:
其中, 0
(1)為什麼要規定 ρ∈(0,12) 這個條件?其實可以證明:如果沒有這個條件的話,將影響演算法的超線性收斂性(定義看這個鏈結,第4條)。在這個速度至關重要的時代,沒有超線性收斂怎麼活啊!(開個玩笑)
具體的證明過程,大家可以參考袁亞湘寫的《最優化理論與方法》一書,我沒有仔細看,我覺得對初學者,不用去管它。
(2)第1個不等式的左邊式子的泰勒展開式為:
f(xk+αkdk)=f(xk)+αkgktdk+o(αk)
去掉高階無窮小,剩下的部分為: f(xk)+αkgktdk
而第乙個不等式右邊與之只差乙個係數 ρ
我們已知了 gktdk<0 (這是 dk 為下降方向的充要條件),並且 ρ∈(0,12) ,因此,1式右邊仍然是乙個比 f(xk) 小的數,即:
橫座標是 α ,縱座標是 f ,表示在 xk,dk 均為常量、 α 為自變數變化的情況下,目標函式值隨之變化的情況。
之所以說 xk,dk 均為常量,是因為在一維搜尋中,在某乙個確定的點 xk 上,搜尋方向 dk 確定後,我們只需要找到乙個合適的步長 α 就可以了。
當 x 為常量, α 為自變數時, f(x+αd) 可能是非線性函式(例如目標函式為 y=x2 時)。因此圖中是一條曲線。
右上角的 f(xk+αdk) 並不是表示乙個特定點的值,而是表示這條曲線是以 α 為自變數、 xk,dk 為常量的函式圖形。
當 α=0 時,函式值為 f(xk) ,如圖中左上方所示。水平的那條虛線是函式值為 f(xk) 的基線,用於與其他函式值對比。
f(xk)+αkρgktdk 那條線在 f(xk) 下方(前面已經分析過了,因為 gktdk<0 ), f(xk)+αk(1−ρ)gktdk 又在 f(xk)+αkρgktdk 的下方(前面也已經分析過了),所以armijo-goldstein準則可能會把極小值點(可接受的區間)判斷在區間bc內。顯而易見,區間bc是有可能把極小值排除在外的(極小值在區間ed內)。
所以,為了解決這個問題,wolfe-powell準則應運而生。
wolfe-powell準則
在某些書中,你會看到「wolfe conditions」的說法,應該和wolfe-powell準則是一回事——可憐的powell大神又被無情地忽略了...
wolfe-powell準則也有兩個數學表示式,其中,第乙個表示式與armijo-goldstein準則的第1個式子相同,第二個表示式為:
這個式子已經不是關於函式值的了,而是關於梯度的。
此式的幾何解釋為:可接受點處的切線斜率≥初始斜率的 σ 倍。
上面的圖已經標出了 σgtkdk 那條線(即 e 點處的切線),而初始點( α=0 的點)處的切線是比 e 點處的切線要「斜」的,由於 σ∈(ρ,1) ,使得 e 點處的切線變得「不那麼斜」了——不知道這種極為通俗而不夠嚴謹的說法,是否有助於你理解。
這樣做的結果就是,我們將極小值包含在了可接受的區間內( e 點右邊的區間)。
wolfe-powell準則到這裡還沒有結束!在某些書中,你會看到用另乙個所謂的「更強的條件」來代替(3)式,即:
這個式子和(3)式相比,就是左邊加了乙個絕對值符號,右邊換了一下正負號(因為 gtkdk<0 ,所以 −σgtkdk>0 )。
這樣做的結果就是:可接受的區間被限制在了 [b,d] 內,如圖:
圖中紅線即為極小值被「夾擊」的生動演示。
最優化學習4
根據已學習內容,解決現在遇到的問題 1.這是乙個凸優化問題嗎 經過一輪推導,對於變數為感測器位置,x,y,z。並不是凸函式 2.需要多少個等式對應多少個未知數 至少達到變數數,越多越好 3.如果使用lm方法,怎麼加入約束條件 涉及到的約束 手臂長度約束,不等式,20 感測器位置約束,不等式,4 x,...
最優化學習3
對幾個經典方法的整理和比較 手打一下公式 梯度下降法 面向任何函式,收斂速度一階,有發散可能。梯度下降法考慮函式的一階梯度 一階泰勒展開 找到乙個合理的迭代方向,但是不能確定步長。只利用了當前點的切線 一階梯度 的資訊 x x 0 lambda nabla 牛頓法 面向任何函式,收斂速度二階,有發散...
最優化學習筆記(四) 最速下降法
最速下降法是梯度方法的一種實現,它的理念是在每次的迭代過程中,選取乙個合適的步長 k 使得目標函式的值能夠最大程度的減小。k 可以認為是函式 k f x k f x k 的極小值點 k arg minf x k f x k 0由梯度迭代公式可知 x k 1 x k f x k 上式的解釋是找到最優的...