牛頓法
一: 最速下降法
下降法的迭代格式為xk+1=xk–αkd
, 其中d為下降方向, 設g, 則下降方向要滿足d. 當步長確定時, d的值越小, 即−d的值越大, 函數下降得越快. 由Cauchy-Schwartz不等式∣∣d, 當且僅當d時, d的值最小. 從而−g是最速下降方向. 則最速下降法的迭代格式為xk+1=xk−αkg
.
這里要注意的是, 最速下降方向只是算法的局部性質. 對於許多問題, 最速下降法並非”最速下降”, 而是下降非常緩慢. 數值試驗表明, 當目標函數的等值線接近於一個圓(球)時, 最速下降法下降較快, 而當目標函數的等值線是一個扁長的橢圓時, 最速下降法開始幾步下降較快, 后來就出現鋸齒現象, 下降就十分緩慢. 其原因是這樣的, 由於一維搜索滿足g
, 即g
. 表明在相鄰兩個迭代點上函數的兩個梯度方向是互相直交的, 這就產生了鋸齒形狀, 當接近極小點時, 步長越小, 前進越慢.
當目標函數是二次函數時, 最速下降法的收斂速度由對應於某個等值線的橢球的最長軸與最短軸之比決定. 這個比值越大, 最速下降法下降越慢.
二: 牛頓法
牛頓法的基本思想是利用目標函數的二次Taylor展開, 並將其極小化. 也可以想成是一個一點二次插值法進行局部擬合.
帶步長因子的牛頓法, 算法如下:
Step1: 選取初始數據, 取初始化點x0
, 終止誤差ε<0;
Step2: 計算g, 若∥g, 停止迭代, 輸出xk. 否則進入Step3;
Step3: 解方程組構造牛頓方向, 即解Gkd, 求出d.
Step4: 進行一維搜索, 求αk使得f. 令xk+1=xk+αkd, k:=k+1, 轉Step2.
牛頓法面臨的主要困難是Hess矩陣Gk不正定. 這時候二次模型不一定有極小點, 甚至沒有平穩點. 當Gk
不定時, 二次模型函數是無界的. 為了克服這些困難, 人們提出了很多修正措施.
[參考] 1. <最優化理論與方法>袁亞湘院士著.
擬牛頓法
牛頓法成功的關鍵是利用了Hesse矩陣提供的曲率信息, 而計算Hesse矩陣工作量大, 並且有的目標函數的Hesse矩陣很難計算, 甚至不好求出來, 這就導致僅用目標函數的一階導數的方法, 擬牛頓法就是利用目標函數值和一階導數信息, 構造出目標函數的曲率近似, 而不需要明顯形成Hesse矩陣, 同時具有收斂速度快的優點.
一: 擬牛頓法條件
目標函數f
在xk+1附近的二次近似為:
對上面的式子兩邊求導, 有g. 令x=xk,sk=xk+1–xk,y,得G–1k+1y.對於二次函數, 此式精確成立. 現在我們想在牛頓法中構造出的Hesse逆近似H滿足這種關系. 即:
上式是關於Hesse逆近似的擬牛頓條件.類似地, 也可以考慮用Bk來直接逼近Hesse矩陣, 這時, 相應的擬牛頓條件為, Bk+1sk=y.
擬牛頓法(Hesse逆近似)的主要步驟為:
1). 令d;
2). 沿方向d作線性搜索, 得到xk+1=xk+αkd;
3). 校正H產生H.
與牛頓法相比, 擬牛頓法有下列優點:
1). 僅需要一階導數; (牛頓法需要二階導數)
2). H保持正定, 使得方法具有下降性質; (在牛頓法中, Gk可能不定)
3). 每次迭代需O(n2)次乘法. (牛頓法需O(n3)
次乘法)
二: DFP校正(Davidon-Fletcher-Powell)
利用Hesse逆近似方法構造H
進行校正的思路是這樣的, 假設每一步迭代中矩陣H是由H加上兩個附加項構成的, 即H, 其中P是待定矩陣, 這時H. 為使H滿足擬牛頓條件, 得到DFP校正迭代公式為:
DFP方法是一個實際上廣為采用的方法, 它在理論分析和實際應用中都起了很大作用. 但是, 進一步的研究發現, DFP方法具有數值不穩定性, 有時產生數值上奇異的Hesse近似. 而BFGS校正克服了DFP校正的缺陷.
三: BFGS校正(Broyden-Fletcher-Goldfarb-Shanno)
利用Hesse近似方法構造Bk+1
進行校正. 思路和上面類似. 可以得到BFGS校正迭代公式:
BFGS校正是迄今最好的擬牛頓公式. 它具有DFP校正所具有的各種性質. 此外, 當采用不精確線性搜索時, BFGS公式還具有總體收斂性質, 這個性質對於DFP公式還沒有證明. 在數值執行中, BFGS公式也優於DFP公式, 尤其是它常常能與低精度線性搜索方法一起連用.
[參考] 1. <最優化理論與方法>.袁亞湘院士著.
2.<統計學習方法>.李航著
共軛梯度法
一: 共軛方向法
共軛方向法是介於最速下降法與牛頓法之間的一個方法, 它僅需利用一階導數信息, 但克服了最速下降法收斂慢的缺點, 又避免了存儲和計算牛頓法所需要的二階導數信息. 共軛方向法是從研究二次函數的極小化產生的, 但是它可以推廣到處理非二次函數的極小化問題. 最典型的共軛方向法是共軛梯度法. 而擬牛頓法也是共軛方向法的一種.
共軛方向的概念是這么定義的: 設G
是n×n對稱矩陣, d是n維非零向量, 如果d, 則稱向量d是G–共軛的. 類似地, 設d是Rn中的任意一組非零向量. 若有d, 則稱d是G–共軛的.
顯然地, 當G是n階單位矩陣時, d
, 即是正交向量組. 因而共軛概念是正交概念的推廣. 但要注意, 正交的向量不一定共軛, 共軛的向量不一定正交, 有時, 可能既共軛又正交.
為什么要引入共軛向量組呢, 因為它有如下重要的性質:
1). 若d
是一組G–共軛方向, 則它們一定是線性無關的;
2). 對於正定二次函數, 共軛方向之多經過n
步精確線性搜索可達到整體最優解.
通常, 我們把從任意點出發, 依次沿某組共軛方向進行一維搜索求解的方法, 叫做共軛方向法. 由於共軛方向組的取法有很大的隨意性, 用不同方式產生一組共軛方向就得到不同的共軛方向法. 如果利用迭代點處的負梯度向量為基礎產生一組共軛方向, 這樣的方法叫做共軛梯度法.
二: 共軛梯度法
為了滿足共軛方向組的定義, 我們可以推出這樣一組迭代公式:
利用二次凸函數的結構和精確一維搜索的性質可以得到更簡化的迭代形式:
上式是由Fletcher和Reeves於1964年提出來的, 通常稱為Fletcher-Reeves共軛梯度法, 簡稱F-R法.
用F-R法求解二次凸優化問題時, 它具有二次終止性質, 但用F-R法來求解非二次函數, n步以后共軛梯度法產生的搜索方向d不再共軛, 因此n步以后我們需要周期性地采用最速下降方向作為搜索方向, 即令d. 這種方法叫做再開始共軛梯度法. 對於大型問題, 會經常地進行再開始. 再開始共軛梯度法允許采用近似線性搜索過程, 只是在采用近似線性搜索的同時, 要采用一定的檢查措施, 以保證得到的搜索方向是下降方向. 而同樣面臨的問題是, 如果頻繁地利用最速下降方法作為搜索方向, 將大大削弱共軛梯度法的效率, 從而使算法的性態變得更像最速下降法. 需要進一步采取措施克服這個困難. 因而一般來說F-R方法強烈地依賴於一維搜索的精確性, 當一維搜索不能保證有精確性時, 我們可用Polak-Ribiere-Polyak共軛梯度法, 簡稱P-R-P法. P-R-P法與F-R法不同的僅僅是步長的計算公式不同, β. P-R-P有自動再開始的顯著優點. 當算法前進很少時, 會出現g, 這時P-R-P公式產生β. 因此d
, 即算法有自動再開始的趨勢, 這樣有利於克服進展緩慢的缺點. 一些實驗結果表明, 對一些大型問題, P-R-P公式效果較好. 然而1984年Powell M J D提出了反例來說明在存在某些問題, P-R-P法不收斂, 而F-R法具有全局收斂性.
在實踐中證明十分有效的無約束最優化方法, 除了共軛梯度法以外, 還有變尺度算法. 它們的結構原理都是基於二次函數模型產生下降方向, 然后由線性搜索選擇在該方向上的步長. 變尺度算法也是一類方法的總稱, 使用比較普遍的有DFP方法和BFGS方法, 這些方法是相當於迭代的每一輪的度量是變化的最速下降法, 因而得此名. 數值實驗指出, BFGS算法是最好的變尺度算法, 當變量個數不超過100時, 通常BFGS法比共軛梯度法效果好. 但對於變量個數超過100的大規模無約束游湖問題, 共軛梯度法因其不要太大的存儲量而更具優勢.
信賴域法是目前正在發展中的一種無約束最優化方法. 它是針對共軛梯度法和變尺度法的缺點設計的.
[參考] 1. <最優化理論與方法>.袁亞湘院士著.
2.<運籌學>.習在筠等著
from: http://jacoxu.com/?p=240
http://jacoxu.com/?p=245
http://jacoxu.com/?p=242
