假設(shè)是
上具有二階連續(xù)偏導(dǎo)數(shù)的函數(shù),要求解的無約束最優(yōu)化問題是
表示目標(biāo)函數(shù)
的極小點(diǎn)挑社。
在牛頓法的迭代中,需要計(jì)算海塞矩陣的逆矩陣巡揍,這一計(jì)算比較復(fù)雜痛阻,考慮用一個(gè)
階矩陣
來近似代替
。這就是擬牛頓法的基本想法腮敌。
假設(shè)在第次迭代時(shí)阱当,找到的點(diǎn)是
,讓
在點(diǎn)
附近進(jìn)行二階泰勒展開:
其中是
在點(diǎn)
的梯度糜工,
是
的海塞矩陣(類似于二階導(dǎo)數(shù))在點(diǎn)
的值:
公式(2)兩邊對(duì)求導(dǎo):
將點(diǎn)代入公式(4)得到:
所以
記弊添,
,則
或者說
公式(7)或公式(8)叫做擬牛頓條件捌木。
如果是正定的(
也是正定的)油坝,那么可以保證牛頓法搜索方向
是下降方向还栓。對(duì)公式(2)只展開到1階:
而的更新公式為:
將(10)中的代入(9)得到:
因?yàn)?img class="math-inline" src="https://math.jianshu.com/math?formula=H_k%5E%7B-1%7D" alt="H_k^{-1}" mathimg="1">正定比肄,所以饺鹃。當(dāng)
為一個(gè)充分小的正數(shù)時(shí)汗侵,總有
,也就是說
是下降方向极舔。
綜上所述凤覆,擬牛頓法使用近似
(DFP算法)或者使用
(BFGS算法)近似
,需要滿足滿足兩個(gè)條件:
-
或
正定
- 滿足擬牛頓條件拆魏,即
或
或
通過迭代的方式進(jìn)行更新盯桦,即
或
。
DFP算法
DFP算法使用近似
渤刃,需要滿足擬牛頓條件
拥峦,
通過
迭代更新。
使
即
公式(13)兩邊乘上
令
則公式(14)為
滿足擬牛頓條件卖子,也不難找出滿足條件(15)和(16)的和
:
于是得到矩陣的迭代公式:
算法
輸入:目標(biāo)函數(shù)略号,梯度
,精度要求
洋闽;
輸出:的極小點(diǎn)
玄柠。
- 選定初始點(diǎn)
,取
為正定對(duì)稱矩陣诫舅,置
- 計(jì)算
羽利。若
,則停止計(jì)算刊懈,得近似解
这弧;否則轉(zhuǎn)(3)
- 置
- 一維搜索,求
使得
- 置
- 計(jì)算
虚汛,若
匾浪,則停止計(jì)算,得近似解
卷哩;否則按公式(20)算出
- 置
户矢,轉(zhuǎn)(3)
BFGS算法
DFP算法使用近似
,需要滿足擬牛頓條件
殉疼,
通過
迭代更新。
使
即
公式(22)兩邊乘上
令
則公式(23)為
滿足擬牛頓條件捌年,也不難找出滿足條件(24)和(25)的和
:
于是得到矩陣的迭代公式:
算法
輸入:目標(biāo)函數(shù)瓢娜,梯度
,精度要求
礼预;
輸出:的極小點(diǎn)
眠砾。
- 選定初始點(diǎn)
,取
為正定對(duì)稱矩陣托酸,置
- 計(jì)算
褒颈。若
柒巫,則停止計(jì)算,得近似解
谷丸;否則轉(zhuǎn)(3)
- 置
- 一維搜索堡掏,求
使得
- 置
- 計(jì)算
,若
刨疼,則停止計(jì)算泉唁,得近似解
;否則按公式(29)算出
- 計(jì)算
- 置
揩慕,轉(zhuǎn)(3)