吳恩達老師課程筆記系列第九節-單變量線性迴歸之梯度下降理解(5)

第九節-單變量線性迴歸之梯度下降理解(5)

在之前,我們給出了一個數學上關於梯度下降的定義,本次視頻我們更深入研究一下,更直觀地感受一下這個算法是做什麼的,以及梯度下降算法的更新過程有什麼意義。梯度下降算法如下:

吳恩達老師課程筆記系列第九節-單變量線性迴歸之梯度下降理解(5)

描述:對θ賦值,使得J(θ)按梯度下降最快方向進行,一直迭代下去,最終得到局部最小值。其中是學習率(learning rate),它決定了我們沿著能讓代價函數下降程度最大的方向向下邁出的步子有多大。

吳恩達老師課程筆記系列第九節-單變量線性迴歸之梯度下降理解(5)

對於這個問題,求導的目的,基本上可以說取這個紅點的切線,就是這樣一條紅色的直線,剛好與函數相切於這一點,讓我們看看這條紅色直線的斜率,就是這條剛好與函數曲線相切的這條直線,這條直線的斜率正好是這個三角形的高度除以這個水平長度,現在,這條線有一個正斜率,也就是說它有正導數,因此,我得到的新的θ1,更新後θ1等於θ1減去一個正數乘以α。

這就是我梯度下降法的更新規則:

吳恩達老師課程筆記系列第九節-單變量線性迴歸之梯度下降理解(5)

讓我們來看看如果α太小或太大會出現什麼情況:

如果α太小了,即我的學習速率太小,結果就是隻能這樣像小寶寶一樣一點點地挪動,去努力接近最低點,這樣就需要很多步才能到達最低點,所以如果太小的話,可能會很慢,因為它會一點點挪動,它會需要很多步才能到達全局最低點。

如果α太大,那麼梯度下降法可能會越過最低點,甚至可能無法收斂,下一次迭代又移動了一大步,越過一次,又越過一次,一次次越過最低點,直到你發現實際上離最低點越來越遠,所以,如果太大,它會導致無法收斂,甚至發散。

現在,我還有一個問題,當我第一次學習這個地方時,我花了很長一段時間才理解這個問題,如果我們預先把θ1放在一個局部的最低點,你認為下一步梯度下降法會怎樣工作?

假設你將θ1初始化在局部最低點,在這兒,它已經在一個局部的最優處或局部最低點。結果是局部最優點的導數將等於零,因為它是那條切線的斜率。這意味著你已經在局部最優點,它使得θ1不再改變,也就是新的θ1等於原來的θ1,因此,如果你的參數已經處於局部最低點,那麼梯度下降法更新其實什麼都沒做,它不會改變參數的值。這也解釋了為什麼即使學習速率α保持不變時,梯度下降也可以收斂到局部最低點。

我們來看一個例子,這是代價函數J(θ)

吳恩達老師課程筆記系列第九節-單變量線性迴歸之梯度下降理解(5)

我想找到它的最小值,首先初始化我的梯度下降算法,在那個品紅色的點初始化,如果我更新一步梯度下降,也許它會帶我到這個點,因為這個點的導數是相當陡的。現在,在這個綠色的點,如果我再更新一步,你會發現我的導數,也即斜率,是沒那麼陡的。隨著我接近最低點,我的導數越來越接近零,所以,梯度下降一步後,新的導數會變小一點點。然後我想再梯度下降一步,在這個綠點,我自然會用一個稍微跟剛才在那個品紅點時比,再小一點的一步,到了新的紅色點,更接近全局最低點了,因此這點的導數會比在綠點時更小。所以,我再進行一步梯度下降時,我的導數項θ1是更小的,更新的幅度就會更小。所以隨著梯度下降法的運行,你移動的幅度會自動變得越來越小,直到最終移動幅度非常小,你會發現,已經收斂到局部極小值。

回顧一下,在梯度下降法中,當我們接近局部最低點時,梯度下降法會自動採取更小的幅度,這是因為當我們接近局部最低點時,很顯然在局部最低時導數等於零,所以當我們接近局部最低時,導數值會自動變得越來越小,所以梯度下降將自動採取較小的幅度,這就是梯度下降的做法。所以實際上沒有必要再另外減小α。這就是梯度下降算法,你可以用它來最小化任何代價函數J(θ),不只是線性迴歸中的代價函數J(θ)。

在接下來的課程中,我們要用代價函數J(θ),回到它的本質,線性迴歸中的代價函數。也就是我們前面得出的平方誤差函數,結合梯度下降法,以及平方代價函數,我們會得出第一個機器學習算法,即線性迴歸算法。


分享到:


相關文章: