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