白話機器學習 最優化方法 牛頓法

2021-08-14 14:12:04 字數 1700 閱讀 5553

演算法

牛頓法,英文名稱bfgs,是求解非線性優化問題的最有效的方法之一。

考慮無約束最優化問題

minx∈

rf(x

) 其中

x∗為目標函式的極小點。

假設f(x)具有二階連續偏導數,若第k次迭代值為 x

(k) ,則可將f(x)在 x

(k) 附近進行二階泰勒展開: f

(x)=

f(xk

)+gt

k(x−

xk)+

1/2(

x−xk

)th(

xk)(

x−xk

) -

gk=g

(xk)

=∇(f

(xk)

) 是f(x)的梯度向量在 x

(k) 的值。 -

h(xk)

是f(x)的海塞矩陣 [

∂f2∂

xi∂y

j]nx

n 在 x

(k) 的值。

這裡詳解下泰勒展開式的裡面的海塞矩陣,暫時講解下二元函式的泰勒展開式

接著我們繼續進行,函式f(x)有極值的必要條件是在極值點處的一階導數為0,即梯度向量為0。特別是當h(

xk) 是正定矩陣的時候,函式f(x)的極值為極小值,所以: ∇(

f(x)

)=0

對f(x)求導,則 ∇(

f(x)

=f(x

k)+g

tk(x

−xk)

+1/2

(x−x

k)th

(xk(

x−xk

))) =g

k+h(

xk)(

x−xk

) 則

gk+h

(xk)

(xk+

1−xk

)=0 xk

+1−x

k=−h

(xk)

−1gk

或者 x

k+1=

xk+p

k

其中 h(

xk)p

k=−g

k

到此公式推導完畢

輸入:目標函式f(x),梯度g(

x)=∇

f(x)

,海塞矩陣h(x),精度要求ε;

輸出:f(x)的極小點x^*;

1. 取初始值點x(

0),k=0;

2. 計算gk

=g(x

(k))

3. 若||

gk||

<

ε ,則停止計算,得到解x∗

=x(k

) 4. 計算hk

=h(x

(k))

,並且求解pk

h(xk)pk

=−gk

5. 進行迭代,xk

+1=x

k+pk

,請求k++,轉到第2步;

最優化演算法 牛頓法

牛頓搜尋演算法,參考edwin 最優化導論 7.5章節,演算法採用go語言實現。filename newton search.go author fredric date 2017.09.01 note 牛頓搜尋演算法 history package search import fmt math 根...

最優化演算法 牛頓法

牛頓搜尋演算法,參考edwin 最優化導論 7.5章節,演算法採用go語言實現。filename newton search.go author fredric date 2017.09.01 note 牛頓搜尋演算法 history package search import fmt math 根...

白話機器學習 感知機

機器學習演算法 感知機1957年由rosenblatt提出,是神經網路與支援向量機的基礎,對神經網路的學習與深度學習有著重要的意義。感知機 perceptron 是二類分類的線性分類模型,其輸入為例項的特徵向量,輸出為例項的類別,取 1和 1值。感知機對應於輸入空間 特徵空間 中將例項劃分為正負兩類...