原創(chuàng)申明:本文為SIGAI原創(chuàng)文章,僅供個人學(xué)習(xí)使用,未經(jīng)準(zhǔn)許,不能用于商業(yè)目的。
其它機(jī)器學(xué)習(xí)、深度學(xué)習(xí)算法的全面系統(tǒng)講解可以閱讀《機(jī)器學(xué)習(xí)-原理、算法與應(yīng)用》,復(fù)旦學(xué)院出版社,雷明著,由SIGAI公眾號作者鼎力構(gòu)筑。
序言
牛頓法是數(shù)值優(yōu)化算法中的你們族,她和她的改進(jìn)型在好多實(shí)際問題中得到了應(yīng)用。在機(jī)器學(xué)習(xí)中,牛頓法是和梯度增長法地位相當(dāng)?shù)牡闹饕獌?yōu)化算法。在本文中,SIGAI將為你們深入淺出的系統(tǒng)述說牛頓法的原理與應(yīng)用。
牛頓法的起源
牛頓法以偉大的德國科學(xué)家牛頓命名,牛頓除了是偉大的化學(xué)學(xué)家,是近代化學(xué)的奠基人,還是偉大的物理家,他和法國物理家萊布尼茲并列發(fā)明了微積分,這是物理歷史上最有劃時代意義的成果之一,奠定了近代和現(xiàn)代物理的基石。在物理中牛頓定律的理解,也有好多以牛頓命名的公式和定律,牛頓法就是其中之一。
牛頓法除了可以拿來求解函數(shù)的極值問題,還可以拿來求解多項(xiàng)式的根,兩者在本質(zhì)上是一個問題,由于求解函數(shù)極值的思路是找尋行列式為0的點(diǎn),這就是求解多項(xiàng)式。在本文中,我們介紹的是求解函數(shù)極值的牛頓法。
在SIGAI之前關(guān)于最優(yōu)方式的系列文章“理解梯度增長法”,“理解凸優(yōu)化”中,我們介紹了最優(yōu)化的基本概念和原理,以及迭代法的思想,假如對這種概念還不清楚,請先閱讀這兩篇文章。和梯度增長法一樣,牛頓法也是找尋行列式為0的點(diǎn),同樣是一種迭代法。核心思想是在某點(diǎn)處用二次函數(shù)來近似目標(biāo)函數(shù),得到行列式為0的多項(xiàng)式,求解該多項(xiàng)式,得到下一個迭代點(diǎn)。由于是用二次函數(shù)近似,因而可能會有偏差,須要反復(fù)這樣迭代,直至抵達(dá)行列式為0的點(diǎn)處。下邊我們開始具體的推論,先考慮一元函數(shù)的情況,之后推廣到多元函數(shù)。
一元函數(shù)的情況
為了能讓你們更好的理解推論過程的原理,首先考慮一元函數(shù)的情況。依據(jù)一元函數(shù)的泰勒展開公式,我們對目標(biāo)函數(shù)在x0點(diǎn)處做泰勒展開,有:
假如忽視2次以上的項(xiàng),則有:
如今我們在x0點(diǎn)處牛頓定律的理解,要以它為基礎(chǔ),找到行列式為0的點(diǎn),即行列式為0。對前面方程兩側(cè)同時導(dǎo)數(shù),并令行列式為0,可以得到下邊的等式:
可以解得:
這樣我們就得到了下一點(diǎn)的位置,因而走到x1。接出來重復(fù)這個過程,直至抵達(dá)行列式為0的點(diǎn),由此得到牛頓法的迭代公式:
給定初始迭代點(diǎn)x0,反復(fù)用前面的公式進(jìn)行迭代,直至達(dá)到行列式為0的點(diǎn)或則達(dá)到最大迭代次數(shù)。
多元函數(shù)的情況
下邊推廣到多元函數(shù)的情況,若果讀者對梯度,的概念還不清楚,請先去看微積分教材,或則閱讀SIGAI之前關(guān)于最優(yōu)化的公眾號文章。按照多元函數(shù)的泰勒展開公式,我們對目標(biāo)函數(shù)在x0點(diǎn)處做泰勒展開,有:
忽視二次及以上的項(xiàng),并對上式兩側(cè)同時求梯度,得到函數(shù)的求導(dǎo)(梯度向量)為:
其中
即為矩陣,在前面我們寫成H。令函數(shù)的梯度為0,則有:
這是一個線性多項(xiàng)式組的解。假如將梯度向量縮寫為g,里面的公式可以縮寫為:
從初始點(diǎn)x0處開始,反復(fù)估算函數(shù)在處的矩陣和梯度向量,之后用下列公式進(jìn)行迭代:
最終會抵達(dá)函數(shù)的駐點(diǎn)處。其中