1. 程式人生 > >機器學習之旅(一)

機器學習之旅(一)

吳恩達教授的機器學習課程的第一週相關內容:

1、什麼是機器學習?

答:機器學習的定義:A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.(英文版)。
假設用P來評估計算機程式在某任務類T上的效能,若一個程式通過利用經驗E在T中任務上獲得了效能改善,則我們就說關於T和P,該程式對E進行了學習。(中文版)

維基百科:機器學習是人工智慧的一個分支。
人工智慧的研究歷史有著一條從以“推理”為重點,到以“知識”為重點,再到以“學習”為重點的自然、清晰的脈絡。顯然,機器學習是實現人工智慧的一個途徑,即以機器學習為手段解決人工智慧中的問題。
機器學習在近30多年已發展為一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、計算複雜性理論等多門學科。機器學習理論主要是設計和分析一些讓計算機可以自動“學習”的演算法
機器學習演算法是一類從資料中自動分析獲得規律,並利用規律對未知資料進行預測的演算法。因為學習演算法中涉及了大量的統計學理論,機器學習與推斷統計學聯絡尤為密切,也被稱為統計學習理論。
演算法設計方面,機器學習理論關注可以實現的,行之有效的學習演算法。很多推論問題屬於無程式可循難度,所以部分的機器學習研究是開發容易處理的近似演算法。

2、機器學習的分類?

答:機器學習可以分成下面幾種類別:
監督學習:從給定的訓練資料集中學習出一個函式,當新的資料到來時,可以根據這個函式預測結果。監督學習的訓練集要求是包括輸入和輸出,也可以說是特徵和目標。訓練集中的目標是由人標註的。常見的監督學習演算法包括迴歸分析(連續)和統計分類(離散)。
監督學習和非監督學習的差別就是訓練集目標是否人標註。他們都有訓練集 且都有輸入和輸出。
無監督學習與監督學習相比,訓練集沒有人為標註的結果。常見的無監督學習演算法有生成對抗(GAN)網路、聚類。
半監督學習介於監督學習與無監督學習之間。
增強學習通過觀察來學習做成如何的動作。每個動作都會對環境有所影響,學習物件根據觀察到的周圍環境的反饋來做出判斷。

3、 單變數線性迴歸(Linear Regression with One Variable)

3.1 模型表示

監督學習演算法的工作方式
h 代表 hypothesis(假設), h 是一個從x 到 y 的函式對映。一種可能的表達方式為: h θ ( x ) = θ 0 + θ 1 x h_{\theta }\left ( x \right )=\theta _{0}+\theta _{1}x , 因為只含有一個特徵/輸入變數,因此這樣的問題叫作單變數線性迴歸問題。
小結:h主要是為了讓其與資料集上的資料相擬合,以便於預測其他資料的走向。

3.2 代價函式

我們現在要做的便是為我們的模型選擇合適的引數 θ 0 θ 1 \theta _{0}和\theta _{1} ,我們選擇的引數決定了我們得到的直線相對於我們的訓練集的準確程度,模型所預測的值與訓練集中實際值之間的差距(下圖中藍線所指)就是建模誤差(modeling error)。
在這裡插入圖片描述
我們的目標便是選擇出可以使得建模誤差的平方和能夠最小的模型引數。 即使得代價
J ( θ 0 , θ 1 ) = 1 2 m i = 1 m ( h θ ( x ( i ) ) ( y ( i ) ) 2 J\left ( \theta _{0},\theta _{1} \right )=\frac{1}{2m}\sum_{i=1}^{m}\left (h _{\theta }\left (x ^{\left ( i \right )} \right )- (y ^{\left ( i \right )}\right )^{2} 最小。
代價函式也被稱作平方誤差函式,有時也被稱為平方誤差代價函式。我們之所以要求出誤差的平方和,是因為誤差平方代價函式,對於大多數問題,特別是迴歸問題,都是一個合理的選擇。還有其他的代價函式也能很好地發揮作用,但是平方誤差代價函式可能是解決迴歸問題最常用的手段了。
代價函式的直觀理解如下圖:
在這裡插入圖片描述
小結:代價函式的作用主要是描述資料集和假設函式之間的誤差,通過求其最小值,可以讓假設函式與資料集更好的擬合。

3.3 梯度下降

梯度下降是一個用來求函式最小值的演算法,我們將使用梯度下降演算法來求出代價函式 J ( θ 0 , θ 1 ) J\left ( \theta _{0},\theta _{1} \right ) , 的最小值。
梯度下降背後的思想是:開始時我們隨機選擇一個引數的組合 ( θ 0 , θ 1 , . . . . , θ n ) \left ( \theta _{0},\theta _{1}, ....,\theta _{n}\right ) ,計算代價函式,然後我們尋找下一個能讓代價函式值下降最多的引數組合。我們持續這麼做直到到到一個區域性最小值(local minimum) , 因為我們並沒有嘗試完所有的引數組合,所以不能確定我們得到的區域性最小值是否便是全域性最小值(global minimum),選擇不同的初始引數組合,可能會找到不同的區域性最小值。
批量梯度下降(batch gradient descent)演算法的公式為:
在這裡插入圖片描述
其中 α 是學習率(learning rate),它決定了我們沿著能讓代價函式下降程度最大的方向向下邁出的步子有多大,若 α 過小則需要迭代很多次才能達到最小值,如果 α 過大,則可能越過最小值,一次次越過,會導致無法收斂。梯度在批量梯度下降中,我們每一次都同時讓所有的引數減去學習速率乘以代價函式的導數。 θ j \theta _{j} 必須同時更新。
小結:梯度下降演算法就是改變 θ \theta 的值以逼近代價函式J的最小值,上式中α 後面的偏導是為了求J在 θ j \theta _{j} 的斜率,以更好的改變 θ \theta 。如果梯度下降演算法從J的最小出開始,那麼偏導為0就不會改變 θ \theta 的值了。

3.4 梯度下降的線性迴歸

梯度下降是很常用的演算法,它不僅被用在
線性迴歸上和線性迴歸模型、平方誤差代價函式。我們需要將梯度下降和代價函式結合。我們將用到此演算法,並將其應用於具體的擬合直線的線性迴歸演算法裡。
梯度下降演算法和線性迴歸演算法比較如圖:
在這裡插入圖片描述
對我們之前的線性迴歸問題運用梯度下降法,關鍵在於求出代價函式的導數,即:
在這裡插入圖片描述
在這裡插入圖片描述
小結:這裡將梯度演算法和單變數線性迴歸結合到了一起用以改變 θ \theta 的值和求J的最小值。