梯度下降法和隨機梯度下降法

2022-02-26 06:41:40 字數 3126 閱讀 9225

批量梯度下降法(batch gradient descent):在更新引數時使用所有的樣本來進行更新

隨機梯度下降法(stochastic gradient descent):求梯度時沒有用所有的m個樣本的資料,而是僅僅選取乙個樣本j來求梯度。

小批量梯度下降法(mini-batch gradient descent):小批量梯度下降法是批量梯度下降法和隨機梯度下降法的折衷,也就是對於m個樣本,我們採用x個樣子來迭代,1**或參考:梯度下降法和隨機梯度下降法

在微積分裡面,對多元函式的引數求∂偏導數,把求得的各個引數的偏導數以向量的形式寫出來,就是梯度。比如函式f(x,y), 分別對x,y求偏導數,求得的梯度向量就是(∂f/∂x, ∂f/∂y)t,簡稱grad f(x,y)或者▽f(x,y)。對於在點(x0,y0)的具體梯度向量就是(∂f/∂x0, ∂f/∂y0)t.或者▽f(x0,y0),如果是3個引數的向量梯度,就是(∂f/∂x, ∂f/∂y,∂f/∂z)t,以此類推。

那麼這個梯度向量求出來有什麼意義呢?他的意義從幾何意義上講,就是函式變化增加最快的地方。具體來說,對於函式f(x,y),在點(x0,y0),沿著梯度向量的方向就是(∂f/∂x0, ∂f/∂y0)t的方向是f(x,y)增加最快的地方。或者說,沿著梯度向量的方向,更加容易找到函式的最大值。反過來說,沿著梯度向量相反的方向,也就是 -(∂f/∂x0, ∂f/∂y0)t的方向,梯度減少最快,也就是更加容易找到函式的最小值。

2.梯度下降法

什麼是梯度下降法呢/

舉個例子,我們在下山的時候,如果山中濃霧太大,而且我們有不清楚路線,那我們可以以當前的所處的位置為基準,尋找這個位置最陡峭的地方,然後朝著山的高度下降的地方走,同理,如果我們的目標是上山,也就是爬到山頂,那麼此時應該是朝著最陡峭的方向往上走。然後每走一段距離,都反覆採用同乙個方法,最後就能成功的抵達山谷。

梯度下降法的過程與這個例子很相似,乙個函式可微分。這個函式就代表著一座山。我們的目標就是找到這個函式的最小值,也就是山底。根據之前的場景假設,最快的下山的方式就是找到當前位置最陡峭的方向,然後沿著此方向向下走,對應到函式中,就是找到給定點的梯度 ,然後朝著梯度相反的方向,就能讓函式值下降的最快!因為梯度的方向就是函式之變化最快的方向,所以,我們重複利用這個方法,反覆求取梯度,最後就能到達區域性的最小值,這就類似於我們下山的過程。

什麼是梯度:

乙個多元函式的梯度方向是該函式值增大最陡的方向。具體化到1元函式中時,梯度方向首先是沿著曲線的切線的,然後取切線向上增長的方向為梯度方向,2元或者多元函式中,梯度向量為函式值f對每個變數的導數,該向量的方向就是梯度的方向,當然向量的大小也就是梯度的大小。

梯度下降法詳解:

對於乙個多元函式j(x),在x點處做線性逼近(求一階導數)

j(x+x0)=j(x)+δ'(x)*øj(x0)+o(無窮小),其中øj(x0)為j(x0)的倒數;

對於乙個函式做了線性逼近,可以判斷在x這個點的增加方向和減小方向;雖然做線線逼近不能告訴我們這個函式的極值點在什麼地方,但能告訴我們極值點在什麼方向,因此我們可以根據這個方向(即下山的方向)選取乙個較小的步長(學習率)來沿著這個方向走下去,找到極值點。

j是關於x的乙個函式,我們當前所處的位置為x0點,要從這個點走到j的最小值點,也就是山底。首先我們先確定前進的方向,也就是梯度的反向,然後走一段距離的步長,也就是α,走完這個段步長,就到達了x1這個點!

為什麼要加乙個負號, 

梯度前加乙個負號,就意味著朝著梯度相反的方向前進!我們在前文提到,梯度的方向實際就是函式在此點上公升最快的方向!而我們需要朝著下降最快的方向走,自然就是負的梯度的方向,所以此處需要加上負號

梯度下降法的難點:

(1)梯度的計算

在機器學習中目標函式經常是求和函式的形式,因此求和函式的求導很費時(樣本數量多)

(2)學習率的選擇

學習率過大,會出現**不收斂(找不到極值點),過小,收斂速度較慢。

幾種梯度下降法介紹

批量梯度下降法,是梯度下降法最常用的形式,具體做法也就是在更新引數時使用所有的樣本來進行更新,這個方法對應於前面3.3.1的線性回歸的梯度下降演算法,也就是說3.3.1的梯度下降演算法就是批量梯度下降法。  

由於我們有m個樣本,這裡求梯度的時候就用了所有m個樣本的梯度資料。

隨機梯度下降法,其實和批量梯度下降法原理類似,區別在與求梯度時沒有用所有的m個樣本的資料,而是僅僅選取乙個樣本j來求梯度。對應的更新公式是:

隨機梯度下降法,和4.1的批量梯度下降法是兩個極端,乙個採用所有資料來梯度下降,乙個用乙個樣本來梯度下降。自然各自的優缺點都非常突出。對於訓練速度來說,隨機梯度下降法由於每次僅僅採用乙個樣本來迭代,訓練速度很快,而批量梯度下降法在樣本量很大的時候,訓練速度不能讓人滿意。對於準確度來說,隨機梯度下降法用於僅僅用乙個樣本決定梯度方向,導致解很有可能不是最優。對於收斂速度來說,由於隨機梯度下降法一次迭代乙個樣本,導致迭代方向變化很大,不能很快的收斂到區域性最優解。

那麼,有沒有乙個中庸的辦法能夠結合兩種方法的優點呢?有!這就是4.3的小批量梯度下降法。

小批量梯度下降法是批量梯度下降法和隨機梯度下降法的折衷,也就是對於m個樣本,我們採用x個樣子來迭代,1

下面談談隨機梯度下降法;

這種方法主要是解決梯度計算的問題,上面談到梯度計算很困難就是因為樣本大那隨機梯度下降法只計算乙個樣本;

簡要談一談鞍點,如圖

鞍點(saddle point)這個詞來自 z=x^2-y^2的圖形,在x軸方向向上曲,在y軸方向向下曲,像馬鞍,鞍點為(0,0)。

擁有兩個以上引數的函式。它的曲面在鞍點好像乙個馬鞍,在某些方向往上曲,在其他方向往下曲。在一幅等高線圖裡,一般來說,當兩個等高線圈圈相交叉的地點,就是鞍點。

由於只是初學,簡要了解一下什麼是梯度下降法;以後在有機會再深入**;

本文參考:

1. 鞍點參考原文: 

2.梯度下降參考原文

梯度下降法和隨機梯度下降法的區別

梯度下降和隨機梯度下降之間的關鍵區別 1 標準梯度下降是在權值更新前對所有樣例彙總誤差,而隨機梯度下降的權值是通過考查某個訓練樣例來更新的。2 在標準梯度下降中,權值更新的每一步對多個樣例求和,需要更多的計算。3 標準梯度下降,由於使用真正的梯度,標準梯度下降對於每一次權值更新經常使用比隨機梯度下降...

梯度下降法和隨機梯度下降法的區別

這幾天在看 統計學習方法 這本書,發現 梯度下降法 在 感知機 等機器學習演算法中有很重要的應用,所以就特別查了些資料。一.介紹 梯度下降法 gradient descent 是求解無約束最優化問題的一種常用方法,有實現簡單的優點。梯度下降法是迭代演算法,每一步需要求解目標函式的梯度向量。二.應用場...

降低損失 梯度下降法和隨機梯度下降法

reference 迭代方法圖 包含乙個標題為 計算引數更新 的華而不實的綠框。現在,我們將用更實質的方法代替這種華而不實的演算法。假設我們有時間和計算資源來計算 w1 的所有可能值的損失。對於我們一直在研究的回歸問題,所產生的損失與 w1 的圖形始終是凸形。換言之,圖形始終是碗狀圖,如下所示 凸形...