最佳化演算法-共軛梯度法 (2012-04-20 08:57:05) 轉載▼
最速下降法
1.最速下降方向
函數f(x)在點x處沿方向d的變動率可用方嚮導數來表示。對於可微函數,方嚮導數等於梯度與方向的內積,即:
Df(x;d) = ▽f(x)Td,
因此,求函數f(x)在點x處的下降最快的方向,可歸結為求解下列非線性規劃:
min ▽f(x)Td
s.t. ||d|| ≤ 1
當 d = -▽f(x) / ||▽f(x)||
時等號成立。因此,在點x處沿上式所定義的方向變動率最小,即負梯度方向為最速下降方向。
2.最速下降演算法
最速下降法的迭代公式是
x(k+1) = x(k) + λkd(k) ,
其中d(k)是從x(k)出發的搜尋方向,這裡取在x(k)處的最速下降方向,即
d = -▽f(x(k)).
λk是從x(k)出發沿方向d(k)進行一維搜尋的步長,即λk滿足
f(x(k) + λkd(k)) = min f(x(k)+λd(k)) (λ≥0).
計算步驟如下:
(1)給定初點x(1) ∈ Rn,允許誤差ε> 0, 置k = 1。
(2)計算搜尋方向d = -▽f(x(k))。
(3)若||d(k)|| ≤ ε,則停止計算;否則,從x(k)出發,沿d(k)進行一維搜尋,求λk,使
f(x(k) + λkd(k)) = min f(x(k)+λd(k)) (λ≥0).
(4)令x(k+1) = x(k) + λkd(k) ,置k = k + 1,轉步驟(2)。
共軛梯度法
1.共軛方向
無約束問題最佳化方法的核心問題是選擇搜尋方向。
以正定二次函數為例,來觀察兩個方向關於矩陣A共軛的幾何意義。
設有二次函數:
f(x) = 1/2 (x - x*)TA(x - x*) ,
其中A是n×n對稱正定矩陣,x*是一個定點,函數f(x)的等值面
1/2 (x - x*)TA(x - x*) = c
是以x*為中心的橢球面,由於
▽f(x*) = A(x - x*) = 0,
A正定,因此x*是f(x)的極小點。
設x(1)是在某個等值面上的一點,該等值面在點x(1)處的法向量
▽f(x(1)) = A(x(1) - x*)。
又設d(1)是這個等值面在d(1)處的一個切向量。記作
d(2) = x* - x(1)。
自然,d(1)與▽f(x(1))正交,即d(1)T▽f(x(1)) = 0,因此有
d(1)TAd(2) = 0,