標籤:

機器學習筆記003 | 梯度下降演算法

為了達到最佳的預測效果,我們需要找到使得代價函數最小的參數。

還記得上一篇文章提到的代價函數么:

我們通過不斷去調整參數θ0和θ1,最終找到讓J(θ0 ,θ1)最小的參數。

如果直觀來看,我們就像這樣,一步一步地走下山:

走下山

具體是怎麼實現的呢?

這裡要提到一個演算法:梯度下降(Gradient Descent)演算法

為了使得代價函數的結果越來越小,我們需要不斷重複以下步驟:

來改變參數,以尋找使得代價函數最小的最優解。

需要注意的是,所有的參數θj必須同時更新,如:

同時更新

而下面這樣的方式,是不正確的:

不同時更新

或者說已經不屬於梯度下降演算法的範疇,而是其他的演算法了。

在這裡,「:=」是賦值的含義,就是把等式右邊的值賦予左邊;α是學習的速率,代表著下山的腳步大小;後面這個是對代價函數的求導:

為什麼通過這樣的重複,可以找到最佳的參數呢?

為了方便理解,這裡還是將θ0設置為0,也就是說,我們的預測函數為:

hθ(x1) = θ0 + θ1 xi = θ1 xi

那麼對於θ1,我們需要重複的調整的步驟就是:

J(θ1)的代價函數大概是這樣的:

代價函數曲線

對這樣的代價函數求導,其實得到的,就是在某一個點的切線,也就是在該點的斜率。

斜率為正數

斜率為正,說明需要減去的是一個正數,θ1的值變小。

斜率為負數

斜率為負,說明需要減去了一個負數,也就是加上一個正數,θ1的值變大。

可以看到,兩個圖的綠點就是最低點。

因為斜率的原因,不管紅點在綠點的左邊還是右邊,最終都會往綠點靠攏。

當到達最低點的時候,斜率為0,所以在這個位置,參數保持很定不變。

所以不管初始點設置在最低點的哪一邊,在設置了合理的學習速率α的情況下,重複了這些步驟之後,最終都會往最低點匯聚。

為什麼說是合理學習速率α呢?

因為如果學習速率α太大,那麼有可能一直偏離,永遠的去不到最低點。

如圖,隨著斜率的絕對值變大,腳步還越來越大,從距離低點最近的參數偏離得越來越遠:

學習速率α太大

如果學習速率α太小,那麼就需要很多的步驟,才能夠找到最優解:

學習速率α太小

那麼是否需要隨著參數逐漸接近最優解的時候,降低學習速率α呢?

其實沒有必要,你看一個在學習速率α固定的情況下,邁出的步子大概是這樣的:

學習速率α固定

由於越接近最低點,斜率的絕對值就越小。

那麼也就意味著即使學習速率恆定不變,由於斜率絕對值的不斷變小,機器學習所走的腳步也會變得越來越小。

相信看到這裡,你也對演算法的原理有了個基本的理解。

下面是J(θ0 ,θ1)代入之後,得到的等式

為什麼兩個等式會不同呢?

其中對於θ1求導數的過程如下:

求導過程

看完這個,你應該就能明白,之前代價函數為什麼要乘以 1/2 了吧。

如果看不懂也沒有關係,直接記住前面的等式就行了。

由於這樣的梯度下降演算法在整個訓練過程中,每一步都去計算所有的訓練樣本,被命名為「批量梯度下降(batch gradient descent)」。

文章提前發布在公眾號:止一之路

推薦閱讀:

人工智慧是怎樣的一門學科?
為什麼要對特徵進行縮放(歸一化)
Tensorflow VS PMML
機器學習筆記031 | 無監督學習演算法——K均值(K-means)

TAG:機器學習 |