1. 程式人生 > >吳恩達(Andrew Ng)《機器學習》課程筆記(1)第1周——機器學習簡介,單變數線性迴歸

吳恩達(Andrew Ng)《機器學習》課程筆記(1)第1周——機器學習簡介,單變數線性迴歸

吳恩達(Andrew Ng)在 Coursera 上開設的機器學習入門課《Machine Learning》:

目錄

一、引言

一、引言

1.1、機器學習(Machine Learning)

目前,機器學習沒有準確的定義,用Tom Mitchell 提出機器學習定義:一個程式被認為能從經驗E中學習,解決任務T,達到效能度量值P,當且僅當,有了經驗E後,經過P判斷,程式在處理T是時的效能有所提升。

通俗理解機器學習:機器從資料中學習,進而得到一個更加符合現實規律的模型,通過對模型的使用使得機器比以往表現的更好。

舉個例子:

中學階段,學生通過做大量的練習題,為的就是在高考解決問題。高考的題目一般來說是之前肯定沒有遇到過的(無原題),但是這並不意味著這些題目我們無法解決。通過對之前所做過的練習題的分析,找到解題方法,同樣可以解決陌生的題目,這就是人類的學習。機器學習就是模擬人類學習的過程。

機器學習其實就是將這一套方式運用到機器上,利用一些已知的資料(平時的練習題)來訓練機器(做,讓機器自己分析這些資料,並找到內在聯絡(學習解題方法),構建模型,從而對未知的資料(高考題)進行預測判定等。

2.1、監督學習(Supervised Learning)

 (1) 什麼是監督學習?

監督學習(Supervised Learning),用上述例子(做練習題和高考題)來解釋,就是高考前所做的練習題是有標準答案(即標籤)的。在學習的過程中,我們可以通過對照答案(標籤),來分析問題找出方法,下一次在面對沒有答案的問題時,往往也可以正確地解決。 

對於機器學習來說,監督學習就是訓練資料既有特徵(feature)又有標籤(label),通過訓練,讓機器可以自己找到特徵和標籤之間的聯絡,訓練好後,在面對只有特徵沒有標籤的資料時,可以判斷出“標籤”。

 (2)監督學習分類:

迴歸(Regression ):

例如:通過做大量的練習題(分數即為標籤),在高考時,預測你高考時的成績。

分析:平時做題有分值,通過大量的練習題,在高考時,預測的值,也是一個連續的值。

分類(Classification):

例如:通過做大量的練習題(標籤為1表示會做,標籤為0表示不會做),在高考時,預測你高考時,某道題會不會做(即1或0)。

分析:因為預測的值,1表示會做,0表示不會做。因為只有少數的離散值,所以把他稱為分類問題。

迴歸分析與分類區別其實就是資料的區別:迴歸是針對連續資料,分類是針對離散資料。

3.1、無監督學習(Unsupervised Learning)

例如:高中做練習題的例子,就是所做的練習題沒有標準答案,換句話說,你也不知道自己做的是否正確,沒有參照,想想就覺得是一件很難的事情。

但是就算不知道答案,我們還是可以大致的將語文,數學,英語這些題目分開,因為這些問題內在還是具有一定的聯絡。

這種問題在機器學習領域中就被稱作聚類(Clustering),相對於監督學習,無監督學習顯然難度要更大,在只有特徵沒有標籤的訓練資料集中,通過資料之間的內在聯絡和相似性將他們分成若干類。

谷歌新聞按照內容結構的不同分成軍事、娛樂、體育等不同的標籤,這就是一種聚類。

4.1、有監督學習和無監督學習的區別

簡單的說:

有監督學習在訓練的時候有標籤

無監督學習在訓練的時候無標籤

二、單變數線性迴歸

2.1、模型表示

對於迴歸問題,一般流程為:

其中,h代表擬合的曲線,也稱為學習演算法的解決方案或函式或假設。 單變數的線性迴歸是迴歸問題的一種,它的表示式為:

     

由於它只有一個特徵/輸入變數x,同時它擬合的曲線是一條直線,所以該問題叫做單變數線性迴歸問題

2.2、代價函式

以房屋價格為例,我們要選擇合適的引數,在房價問題上,這個問題就是選擇直線中合適的斜率和截距。

選擇的引數直接決定了模型相對於訓練集之間的準確程度。在模型預測得到的資料與真實值之間的距離(差距),就是建模誤差(modeling error)。

我們的目的就是找到建模誤差的平方和最小的引數,即代價函式最小

代價函式(cost function):

目標:

,得到引數

2.3、代價函式直觀理解

舉一個簡單的例子,

         那麼不同的就是過原點的直線,對於不同的引數,得到不同斜率的直線,這些直線總有一條直線的似的代價函式值最小。那麼不同引數得到不同的直線,不同直線得到代價函式的值,代價函式的曲線如下圖所示,是一個二次函式,這下,要求出代價函式的最小值(即曲線最低點),即為最佳值。由圖可知,當時,誤差最小。

            上面是一個簡單的例子,引數只有一個,是的變化曲線。那麼引數都變化,如下圖所示:

同樣的方法,找到最低點,即為最佳值。但是,這需要程式設計將這西點繪製出來,然後人工找出最低點,這樣比較複雜,只適合在低維資料的情況下,在高維資料情況下,上面的方法不可行,於是可以用梯度下降法來實現。

2.4、梯度下降法

           開始隨機選擇一個引數的組合,計算代價函式,然後我們尋找下一個能讓代價函式下降最多的引數組合。我們持續這樣做,直到到達一個區域性最小值。由於我們沒有嘗試所有的引數組合,所以不能確定得到的結果是區域性最小值還是全域性最小值。 

            梯度下降法的定義:

            其中,α代表學習率(learning rate),它決定了沿著能讓代價函式下降程度最大方向的步長。

值得注意的是,是同時更新,也就是說:

            如上圖左圖所示,為正確的更新過程,二者不同的地方在於,上圖右圖中在求的更新時,代價函式中的是已經更新過的了,而左圖中的為將都求過偏導之後再進行更新,代價函式中的都是上一代中的值,與本次迭代更新無關。下面舉例說明梯度下降的過程:

例如上圖代表兩座山,你現在所處的位置為最上面的那一點,你想以最快的速度達到山下,你環顧360度尋找能快速下山的方向,這個過程對應於求偏導的過程,你每次移動一步,移動的步長對應於α,當你走完這一步,然後接著環顧360度,尋求最快下山的方法,然後在走出一步,重複這個過程,直到走到山下,走到山下對應於找到了區域性最小值

當然,引數不同,其有多種方法,找到不同的區域性最小值。

2.5、梯度下降法直觀理解

           注意:下圖中討論,都是在的簡單形式下討論的。

   (1)步長α(學習率)對梯度下降法的影響:

     a. 當步長太小時,每次走的步子很小,導致到達最小值的速度會很慢,也就是收斂速度慢,但是能保證收斂到最小值點。

    b. 當步長太大時,梯度下降法可能會越過最小值點,甚至可能無法收斂。

兩種情況的示意圖如下:

     (2)梯度對梯度下降法的影響:

             粉紅色的點為初始點,在此點求出導數,然後乘以學習率,更新引數,到達第二個點,然後再在第二個點求導數,從斜率上明顯可以看出,第二個點的斜率明顯比第一個點的斜率低,也就是說雖然學習率固定,但是這一次更新的步長比上一次要小,以此類推,我們能夠得出一個結論,當接近區域性最低時,導數值會自動變得越來越小,所以梯度下降法會自動採用較小的幅度,這就是梯度下降的做法。所以實際上沒有必要再另外減小α

2.6、梯度下降的線性迴歸

梯度下降演算法和線性迴歸演算法如下圖所示:

我們想用梯度下降演算法來最小化代價函式,關鍵問題在於求導,即:

所以梯度下降演算法修改為:

以上就是線性迴歸的梯度下降法。有時候也稱為批量梯度下降法(batch gradient descent),因為在梯度下降的每一步中,我們都用到了所有的訓練樣本。

三、線性代數回顧

線性代數為基礎知識,在我的部落格有講解關於: Matlab 基礎知識——矩陣操作及運算, 有興趣的可以參見我的部落格:

3.1、矩陣和向量

3.2、加法和標量乘法

3.3、矩陣向量乘法

3.4、矩陣乘法

3.5、矩陣乘法性質

3.6、逆、轉置

參考資料

[4] Andrew Ng Coursera 機器學習 第一週 PPT