梯度下降法

2022-03-12 13:19:06 字數 1867 閱讀 4730

上一次說到代價函式,代價函式的作用就是找到最優的引數使假設函式與實際值相差最小。而梯度下降法(gradient descent)就是找到最優引數的方法之一。

過程如圖,就像下山一樣,從一點開始,找到最快的方法下山到最低點,在你不會摔倒的情況下,你會怎麼選擇下山路徑呢,肯定是選擇梯度最大(也就是坡度最大)的路徑。這就是梯度下降法的精髓。 

而梯度下降法還有乙個特點就是可能因為起點不同而找到完全不同的最低點。 

事實證明,用於線性回歸的代價函式都是凸函式,就像圖中一樣: 

所以不會出現這樣不同的區域性最低點,都會收斂於乙個最低點。

在梯度下降法中,為了使代價函式更加容易找到最小值,我們使用以下更新規則: 

α為學習速率,學習速率需要控制,不能過大也不能過小。太小了很好理解,這就會使得更新次數過大,找到最低點時間過長;而太大了就會在接近最低點的時候跨過最低點,下次迭代又會越過最低點,導致無法收斂,甚至發散,就像圖中這樣: 

從公式中就能看出這是借助偏導數,使得越接近最低點的時候收斂速度越慢,就像打高爾夫球,越接近洞口用的力度就會越小,才能精確地到達我們的目標,這裡目標指的就是全域性最低點。當收斂於最低點時,偏導數為0,那麼θ0和θ1就會停止更新,也就是知道了代價函式的最低點,並解出θ0和θ1的最優解。

同步更新: 

同步更新重點在於更新θ1時j(θ0,θ1)中θ0取的是沒有更新之前的θ0。

如果還不清楚,對比一下非同步更新應該就明白了: 

對於上次說到的代價函式: 

對於下面的線性回歸方程 

使用梯度下降法,經過計算後,得到的偏導數為: 

所以,更新規則為: 

我們就可以通過這個更新規則找到代價函式的最小值,從而解出θ0和θ1的最優解,並藉此找到最佳擬合直線。

從上面就能看出,這是對許多樣本批量處理的一種演算法,這種演算法就稱為批量梯度下降法。

三中提到的是批量梯度下降法,也就是可以對多條記錄梯度下降,相當於進行批量操作但這只是乙個影響因數(特徵向量),如果對於多特徵應該如何處理呢?

如對於下面的方程 

其實,跟單特徵線性回歸是一樣的,就是用批量梯度下降演算法分別對每個影響因數進行求偏導數。兩者對比如下: 

新的公式就相當於是乙個通式,對於多特徵以及單特徵都適用。只是在單特徵中x0^(i)為1,也就是前面說的梯度下降法是多特徵梯度下降法的特殊情況。

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

批量梯度下降法 batch gradient descent 在更新引數時使用所有的樣本來進行更新 隨機梯度下降法 stochastic gradient descent 求梯度時沒有用所有的m個樣本的資料,而是僅僅選取乙個樣本j來求梯度。小批量梯度下降法 mini batch gradient d...

梯度下降法

梯度下降法 是乙個一階 最優化演算法 通常也稱為 最速下降法 我之前也沒有關注過這類演算法。最近,聽史丹福大學的機器學習課程時,碰到了用梯度下降演算法求解線性回歸問題,於是看了看這類演算法的思想。今天只寫了一些入門級的知識。我們知道,函式的曲線如下 程式設計實現 c code cpp view pl...

梯度下降法

回歸 regression 梯度下降 gradient descent 發表於332 天前 技術,科研 被圍觀 1152 次 前言 這個系列主要想能夠用數學去描述機器學習,想要學好機器學習,首先得去理解其中的數學意義,不一定要到能夠輕鬆自如的推導中間的公式,不過至少得認識這些 式子吧,不然看一些相關...