機器學習筆記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:機器學習 |