愛需要勇氣,
但是也許是天意,
讓我愛上你,
也許輪回裏早已注定,
今生就該還給你。
一顆心在風雨裏,
飄來飄去,
一直都在等待你。
——暢寶寶的傻逼哥哥
考慮優化問題
miminize F=f(x)for x∈En
根據泰勒級數
F+ΔF=f(x+δ)≈f(x)+gTδ+12δTHδ
當∥δ∥→0 ,由於δ 引起的F 變化量爲
ΔF≈gTδ
右邊是向量g,δ 的點乘,如果
gδ=[g1 g2 ⋯ gn]T=[δ1 δ2 ⋯ δn]T
那麼
ΔF≈∑i=1ngiδi=∥g∥∥δ∥cosθ
其中θ 是向量g,δ 之間的夾角且
∥g∥=(gTg)1/2=(∑i=1ng2i)1/2
上升與下降方向
考慮圖1的圖像,如果x,x+δ 是輪廓A 上相鄰的兩個點,那麼當∥δ∥→0
ΔF≈∥g∥∥δ∥cosθ=0
這是因爲在該輪廓上F 是常數,由此可得向量g,δ 之間的夾角θ 等於90∘ 。從效果上看,點x 處得梯度與A 正交。對於任意向量δ ,要想ΔF 取得最大正值,那麼θ=0 ,即δ 必須與g 同向。另一方面,要想ΔF 取得最大負值,那麼θ=π ,即δ 必須與−g 同向。梯度g 與它的負−g 分別稱爲梯度上升與梯度下降方向,這些概念如圖1和圖2所示。
圖1
基本方法
假設函數f(x) 在點x 的鄰域內是連續的,如果d 是點x 處的最速下降方向,即
d=−g
那麼x 的變化量δ
δ=αd
會減少f(x) 的值,其中α 是一個很小的正常數。通過求解一維優化問題
minimizeα F=f(x+αd)
我們可以最大化的減少f(x) ,如圖3所示。
如果點x 處的最速下降方向朝向f(x) 的最小值x∗ ,那麼存在α 值,使得f(x+αd) 對α 最小化,f(x) 對x 最小化,因此這時候多維優化問題通過求解一維問題即可。不幸的是,大部分實際問題中,d 沒有指向x∗ ,所以爲了求出解需要進行多次迭代。首先從初始點x0 開始,計算方向d=d0=−g ,確定最小化f(x0+αd0) 的α 值,用α0 表示,那麼可得到新的點x1=x0+α0d0 ,最小化的過程可以用前面介紹的任何一種方法,接下來在點
xk+1=xk+αkdk
處重複執行上面的過程直到收斂爲止,其中k=1,2,… 。這個過程的終止條件可以是∥αkdk∥ 變得足夠小或者αk≤Kα0 ,其中K 是一個很小的正常數。對於最速下降法來說,典型的求解軌跡如圖4所示。
圖2
方向正交
對於最速下降法,解的軌跡服從zig-zag模式,如圖4所示。如果每次迭代所選的α 都使得f(xk+αdk) 最小,那麼相鄰的方向是正交的。爲了證明這個結論,注意到
df(xk+αdk)dα=∑i=1n∂f(xk+αdk)∂xkid(xki+αdki)dα=∑i=1ngi(xk+αdk)dki=g(xk+αdk)Tdk
其中g(xk+αdk) 是點xk+αdk 處的梯度,如果α∗ 是最小化f(xk+αdk) 的α 值,那麼
g(xk+α∗dk)Tdk=0
或者
dTk+1dk=0
其中
dk+1=−g(xk+α∗dk)
是點xk+α∗dk 處的最速下降方向。從效果上看,相鄰方向dk,dk+1 如圖4那樣是正交的。
消除線搜索
如果可以求出f(x) 的海森矩陣,那麼我們可以用解析法求出最小化f(xk+αd) 的α 值,用αk 表示。如果δk=αdk ,那麼根據泰勒級數可知
f(xk+δk)≈f(xk)+δTkgk+12δTkHkδk
如果dk 是最速下降方向,例如
δk=−αgk
那麼我們可以得出
f(xk−αgk)≈f(xk)−αgTkgk+12α2gTkHkgk
對其求導並等於零得
f(xk−αgk)dα≈−gTkgk+αgTkHkgk=0
或者
α=αk≈gTkgkalphagTkHkgk
圖3
圖4
接下來,如果我們假設
α=αk 最小化
f(xk+αdk) ,那麼我們得到
xk+1=xk−gTkgkalphagTkHkgkgk
αk 的精確性依賴於δk 的模長,因爲泰勒級數的二次近似只在xk 的鄰域內有效。剛開始∥δk∥ 相對比較大,所以αk 將不準確,但不管怎樣,因爲在最速下降方向最小化f(xk+αdk) ,所以f(x) 一直在減少,故αk 的精確性在慢慢提高,甚至每次迭代都能實現最大減少f(x) ,因此能實現收斂。對於二次函數來說,上面的近似符號可以改成等號,因此每次迭代α=αk 都能最大程度減少f(x) 。
如果無法得到海森矩陣,那麼我們可以計算點xk,xk−α̂ gk 處的f(x) 值來確定αk ,其中α̂ 是αk 的估計值。如果
fk=f(xk)f̂ =f(xk−α̂ gk)
那麼根據泰勒級數可得
f̂ ≈−α̂ gTkgk+12α̂ 2gTkHkgk
或者
gTkHkgk≈2(f̂ −fk+α̂ gTkgk)α̂ 2
從上式可得
αk≈g)kTgkα̂ 22(f̂ −fk+α̂ gTkgk)
合適的α̂ 爲αk−1 ,即前一個迭代中的最優α 。對於第一次迭代我們用α̂ =1 。
收斂
如果函數f(x)∈C2 有局部最小點x∗ 且x=x∗ 處的海森矩陣是正定的,那麼可以說明如果xk 足夠靠近x∗ ,我們有
f(xk+1)−f(x∗)≤(1−r1+r)2[f(xk)−f(x∗)]
其中
r=Hk的最小特徵值Hk的最大特徵值
更進一步,如果f(x) 是二次函數,那麼上面的不等式對所有k 都成立。從效果上看,如果條件成立,那麼最速下降法線性收斂,其收斂率爲
β=≤(1−r1+r)2
顯然,如果Hk 的特徵值基本都相等,那麼收斂率比較高;如果至少有一個比最大值特徵值小,那麼收斂率就比較低。
H 的特徵值λi,i=1,2,…,n 確定幾何平面
xTHx=常數
這個等式給出了xTHx 的輪廓並且如果H 是正定的,那麼該輪廓是橢球,其軸長爲1/λi‾‾√ 。如果變量個數爲二,那麼輪廓是橢圓,軸長分別爲1/λ1‾‾‾√,1/λ2‾‾‾√ ,因此如果在二維問題上使用最速下降法,當輪廓接近圓時收斂最快,如果就是圓即r=1 ,那麼一次迭代就達到收斂。另一方面,如果輪廓近似橢圓或者說函數存在細長的谷底,那麼收斂就非常慢,尤其是在靠近解的地方。r 對收斂的影響通過比較圖4與圖5就能明顯的看出來。
圖5
從效果上看,最速下降法試着讓梯度減小到零,因爲鞍點處的梯度也是零,所以如果這樣的點是解的話可能存在問題。然而這樣的解基本是不可能,首先,將鞍點作爲下次的迭代點這種概率非常低,其次,鞍點鄰域內始終有下降方向。
尺度
對某個特定的優化問題,H 的特徵值或者說最速下降法的性能很大程度上依賴於所選的變量,例如在一維或二維問題中,輪廓是偏向於圓還是橢圓依賴於單位的選擇,因此通過伸縮變量這種變量變換的方式可以提高收斂速率。
一種可能的伸縮方式是令
x=Ty
其中T 是對角矩陣,然後求解問題
minimizey h(y)=f(x)|x=Ty
新問題的梯度與海森矩陣分別爲
gh=TgxHh=TTHT
因此最速下降方向以及與問題相關的特徵值都發生了變化。但是不幸的是,T 的選擇嚴重依賴具體的問題,對此沒有一般的法則。不過有個小技巧,那就是儘量平衡二階導
∂2f∂x2ifor i=1,2,…,n