優化演算法介紹2

2021-08-31 11:42:40 字數 1730 閱讀 3767

優化演算法介紹2

牛頓法、擬牛頓法介紹及其實現

上篇部落格介紹了利用梯度方法進行優化的幾個演算法,簡單來說就是通過計算損失函式的在當前點的梯度,衡量向哪個方向移動會獲得最快的降速,本篇所講的幾個演算法是它們的延伸。他們不僅計算出當前點的下降速度,而且還計算出當前下降速度的加速度,即這個下降速度會變大還是變小。

牛頓法主要用在兩個地方

1、求解線性方程的解。

2、作為一種優化方法。

牛頓法求解線性方程的原理是將函式的泰勒展開式近似為所求函式,然後通過求泰勒展開式的前面幾項來方程的根。具體步驟如下:

首先、選擇乙個接近函式f(x)零點的x0,計算相應的f(x0)和切線斜率g(x0)(即函式在該點的一階導數)。然後我們計算經過該點的切線與x軸的交點x1,即求如下方程的解:

已經證明,如果f(x)的導數是連續的,並且待求的方程的解是孤立的,那麼解周圍存在乙個區域,只要初始值x0在這個區域內,那麼牛頓法必定收斂。由於牛頓法是給予當前位置 的切線來確定下一次的位置,所以牛頓法稱為切線法。牛頓法的搜尋路徑如下圖所示

牛頓法是二階收斂,梯度下降是一階收斂,所以牛頓法就更快。如果更通俗地說的話,比如你想找一條最短的路徑走到乙個盆地的最底部,梯度下降法每次只從你當期所處位置選乙個坡度最大的方向走乙個,牛頓法選擇方法是,不僅會考慮坡度是否下降,還會考慮你走了一步之後,坡度是否會變得更大。所以可以說牛頓法比梯度下降法看的更遠一步,能更快地走到最底部。

在作為一種優化方法時,需要設計到一點數學知識。

黑森矩陣

當變數不是乙個,問題擴充套件到多元函式的時候,迭代公式變成如下形式:

此時牛頓法求解需要求出黑森矩陣的逆矩陣,計算量變得很大。

由於對於多階問題,黑森矩陣的計算難度較大,所以人們想出一種黑森矩陣的近似方法,使用另乙個矩陣來代替原理很難求的黑森矩陣。代表演算法是dfp演算法。

我們先給出原始牛頓飯的步驟和演算法描述。

1、給定住址x0和精度閾值,並令k=0

2、計算gk 和hk,其中gk為變數的即梯度向量,hk為變數的黑森矩陣。

3、若gk小於閾值,則停止迭代。否則,確定搜尋方向

4、計算新的迭代點

5、令k := k+1 轉到步驟2

其中第三步後人又進行了優化,第三步我們只確定了變數變化的方向,但是沒有確定變數的變化幅度,此時可以利用一維搜尋方法尋找最佳的步長。常用的方法有進退法、二分法、**分割法等等。

從以上可以看出,對於多元函式來說,黑森矩陣的計算確實比較麻煩。對於多元函式來說,比較容易計算的是一階導數,我們可以用一階導數來模擬黑森矩陣。

dfp演算法是擬牛頓法的代表,它使用的模擬矩陣如下所示

其中如此看了,我們已經用簡單的一階導數通過矩陣運算模擬出本來比較難計算的黑森矩陣。

總結下,dfp演算法步驟如下

1、給定住址x0和精度閾值,並令d0 = i, k=0

2、 確定搜尋方向

3、利用一維搜尋確定不長

4、若gk小於閾值,則停止迭代。

5、計算yk = g(k+1)- g(k)

4、計算

5、令k := k+1 轉到步驟2

參考**位址

優化演算法2 牛頓法

牛頓法,全稱newton s method。當n 1時,牛頓法的基本思想是 在現有極小點估計值的附近對f x 做二階泰勒展開,進而找到極小點的下乙個估計值。設 為當前的極小值點的估計值,那麼通過二階泰勒 由於求的是最值,應滿足即求得令 則當n 1時,超過二維。二階泰勒展開式可以做推廣。為f的梯度向量...

數值優化介紹

一 模型與演算法 模型是將抽象的實際問題轉化成數學問題,用便於理解和計算的數學模型表示,通俗的說可以把模型理解為 計算公式,常見數學定義定理等,演算法即計算方法,是求解數學模型用的,就是 將模型解出的方法。總之,模型是將實際問題數學化,演算法是將其中所蘊含的數學問題進行求解。數學模型,是 對某乙個具...

KNN的優化演算法2 KD tree

傳統knn缺點 資料量特別大時,需要計算參考點和每個樣本點的距離,計算量非常大,所以提出一種優化演算法 kd tree.為了提高knn搜尋的效率,可以考慮使用特殊的結構儲存訓練資料,以減小計算距離的次數。kd樹 k dimension tree 是一種對k維空間中的例項點進行儲存以便對其進行快速檢索...