公開課地址:https://class.coursera.org/ml-003/class/index
授課老師:Andrew Ng
1、model representation(建立模型)
考慮一個問題,如果給定一些房屋售價和房屋面積的資料,現在要預測給定其他面積時的房屋售價,那該怎麼辦?其實這是一個線性迴歸問題,給定的資料作為訓練樣本,用其訓練得到一個表示售價和面積關係的模型(其實是一個函數),然後用這個函數進行預測。基本流程如下:
2、cost function(代價函數)
ps:其實這一節中代價函數並未出現代價函數
既然我們已經明確了只需要訓練得到一個函數,那我們首先要做的就是對函數的形式進行假設。這裡我們可以假設是最簡單的線性函數:
下面問題就轉變為如何求出theta值。由於我們已經有一些訓練資料,雖然不知道資料之間是不是像假設那樣成線性關係,但存在一點偏差我們並不介意,只需要讓函數值儘可能接近真實值即可。這裡我們讓x表示面積,y表示售價,在二維平面上描出一系列的點。
3、cost function intuition 1(代價函數初步1)
前面已經說明了需要讓h函數值和真實值之間誤差儘可能小,這裡給出一個更清晰的說明:
代價函數J就代表了上面提到的誤差,這裡為了後面求導方便函數被寫成了這種形式,我們的目標就是讓代價函數J值最小,注意在J中theta變成了變數,m代表訓練樣本的數目(也就是座標系中點的個數)。
4、cost function intuition 2(代價函數初步2)
在給定一個theta0和theta1時,我們能找到相應的h函數(一條線)和代價J(一個值),當把這兩者放在一起對比觀察時,就能清楚的看到代價值在h函數和樣本點擬合的很好時是最小的,而且存在全域唯一的最小值。代價函數J用三維表示大概就如所示:
從可以看出,此時h函數與樣本點擬合的情況最好,而代價函數J也取到了最小值,theta0和theta1此時的取值可以從J的橫縱座標上看出。
5、gradient descent(梯度下降)
為了讓J最小,我們的想法是通過改變theta的取值來改變J的取值。這裡對theta的初始值不做要求,只考慮改變時的變化。梯度下降在這裡的意思也就是沿著J函數的梯度方向改變theta讓J取值減小,形象化的表示如下:
如果懂一點微積分知識,我們就可以把這個下降過程用數學式子像下面這樣表達出來:
其中alpha是學習率(大於0),可以理解為每一次下降的步長,需要人為設定。
6、gradient descent intuition(梯度下降初步)
我們可以對上面梯度下降的公式進行一下簡單的驗證,如,當theta值過大時,梯度為正值,每一次迭代theta減小,J值也減小,同理theta值過小時,迭代讓theta增大,J值也減小。所以梯度下降的思想是正確的。
相比之下,alpha的選擇就不那麼簡單了,alpha選擇要求適中,過大過小都不好:
如所說的,alpha取值太小步長太小,要走很多步才能下降到最小值,處理速度太慢。當alpha取值較大時,步長太大,會在最小值左右發生震蕩,而永遠也達不到最小值。不過,即使alpha取值適中,我們也可能會陷入到局部最小值,達不到全域最小。
補充一點,即使alpha值固定了,在梯度下降的過程中步長也會自動逐漸減小,所以我們不需要在函數逼近最小值的時候減小alpha的取值,以防止步長過大可能會跳過最低點。
7、gradient descent for linear regression(針對線性迴歸的梯度下降)
針對線性迴歸,由於我們已經有了代價函數J的形式,只需要代入即可:
寫的更好看一點就是這樣:
通過迭代,我們就能到達一個J的最小值,這裡並不保證是全域最小。
--------------------------------------------弱弱的分割線--------------------------------------------------------------
以上就是第一講單變數線性迴歸的內容,思想還是很明確的。首先根據訓練資料定義出模型函數形式,通過與真實值求誤差得到代價函數,然後通過對代價函數梯度下降確定出模型函數的參數。確定好參數,下面就可以拿這個模型進行預測了,不過由於這裡是線性,變數只有一個,不是很准。自然下面就該引入多變數,非線性情況了,那個肯定要複雜一些。