機器學習中梯度下降法和牛頓法的比較

2022-03-22 06:45:19 字數 2296 閱讀 9884

在機器學習的優化問題中,梯度下降法和牛頓法是常用的兩種凸函式求極值的方法,他們都是為了求得目標函式的近似解。在邏輯斯蒂回歸模型的引數求解中,一般用改良的梯度下降法,也可以用牛頓法。由於兩種方法有些相似,我特地拿來簡單地對比一下。下面的內容需要讀者之前熟悉兩種演算法。

梯度下降法用來求解目標函式的極值。這個極值是給定模型給定資料之後在引數空間中搜尋找到的。迭代過程為:

可以看出,梯度下降法更新引數的方式為目標函式在當前引數取值下的梯度值,前面再加上乙個步長控制引數alpha。梯度下降法通常用乙個三維圖來展示,迭代過程就好像在不斷地下坡,最終到達坡底。為了更形象地理解,也為了和牛頓法比較,這裡我用乙個二維圖來表示:

懶得畫圖了直接用這個展示一下。在二維圖中,梯度就相當於凸函式切線的斜率,橫座標就是每次迭代的引數,縱座標是目標函式的取值。每次迭代的過程是這樣:

首先計算目標函式在當前引數值的斜率(梯度),然後乘以步長因子後帶入更新公式,如圖點所在位置(極值點右邊),此時斜率為正,那麼更新引數後引數減小,更接近極小值對應的引數。

如果更新引數後,當前引數值仍然在極值點右邊,那麼繼續上面更新,效果一樣。

如果更新引數後,當前引數值到了極值點的左邊,然後計算斜率會發現是負的,這樣經過再一次更新後就會又向著極值點的方向更新。

根據這個過程我們發現,每一步走的距離在極值點附近非常重要,如果走的步子過大,容易在極值點附近**而無法收斂。解決辦法:將alpha設定為隨著迭代次數而不斷減小的變數,但是也不能完全減為零。

梯度下降法的缺點:

(1)靠近極小值時收斂速度減慢;

(2)直線搜尋時可能會產生一些問題;

(3)可能會「之字形」地下降。

在使用梯度下降時,需要進行調優。哪些地方需要調優呢?

1. 演算法的步長選擇。在前面的演算法描述中,我提到取步長為1,但是實際上取值取決於資料樣本,可以多取一些值,從大到小,分別執行演算法,看看迭代效果,如果損失函式在變小,說明取值有效,否則要增大步長。前面說了。步長太大,會導致迭代過快,甚至有可能錯過最優解。步長太小,迭代速度太慢,很長時間演算法都不能結束。所以演算法的步長需要多次執行後才能得到乙個較為優的值。

2. 演算法引數的初始值選擇。 初始值不同,獲得的最小值也有可能不同,因此梯度下降求得的只是區域性最小值;當然如果損失函式是凸函式則一定是最優解。由於有區域性最優解的風險,需要多次用不同初始值執行演算法,關鍵損失函式的最小值,選擇損失函式最小化的初值。

3.歸一化。由於樣本不同特徵的取值範圍不一樣,可能導致迭代很慢,為了減少特徵取值的影響,可以對特徵資料歸一化,也就是對於每個特徵x,求出它的期望x

¯'>x¯¯¯

和標準差std(x),然後轉化為:

這樣特徵的新期望為0,新方差為1,迭代次數可以大大加快。

首先得明確,牛頓法是為了求解函式值為零的時候變數的取值問題的,具體地,當要求解 f(θ)=0時,如果 f可導,那麼可以通過迭代公式

來迭代求得最小值。通過一**來說明這個過程。

當應用於求解最大似然估計的值時,變成ℓ′(θ)=0的問題。這個與梯度下降不同,梯度下降的目的是直接求解目標函式極小值,而牛頓法則變相地通過求解目標函式一階導為零的引數值,進而求得目標函式最小值。那麼迭代公式寫作:

當θ是向量時,牛頓法可以使用下面式子表示:

其中h叫做海森矩陣,其實就是目標函式對引數θ的二階導數。

通過比較牛頓法和梯度下降法的迭代公式,可以發現兩者及其相似。海森矩陣的逆就好比梯度下降法的學習率引數alpha。牛頓法收斂速度相比梯度下降法很快,而且由於海森矩陣的的逆在迭代中不斷減小,起到逐漸縮小步長的效果。

牛頓法的優缺點總結:

優點:二階收斂,收斂速度快;

缺點:牛頓法是一種迭代演算法,每一步都需要求解目標函式的hessian矩陣的逆矩陣,計算比較複雜。

機器學習中牛頓法 梯度下降法

機器學習中,很多時候是求最優化問題,優化問題的求解通常有兩種求解方法 牛頓法 梯度下降法。牛頓法 使用迭代的方法,尋找使 theta 0,找到 theta的具體取值。數學表示式如下 簡單理解 先隨機選取一點,求出 在該點的切線即導數 切線等於 的位置,即下一次迭代的值 知道 逼近等於0的點。具體過程...

梯度下降法和牛頓下降法

泰勒公式可以表示為 f boldsymbol boldsymbol f boldsymbol boldsymbol boldsymbol frac boldsymbol boldsymbol boldsymbol o boldsymbol tag 在 2 中 boldsymbol x 1,x n b...

梯度下降法與牛頓法

梯度下降法,是迭代演算法。在求最值時,常常用到。bp網路中,最小化 誤差cost function,求解對應網路中的weights,即可用梯度下降法來更新weights.梯度下降法基本思想 給定乙個函式 f 假設求 f 最大值 最小值 初始化函式上的乙個點,對該點求導,該點往導數的方向 反方向 移動...