之前上了台大的機器學習基石課程,里面用的教材是《Learning from data》,最近看了看覺得不錯,打算深入看下去,內容上和台大的課程差不太多,但是有些點講的更深入,想了解課程里面講什么的童鞋可以看我之前關於課程的第一章總結列表:
我打算邊看書邊復習講義,然后用自己的話把每章能看懂的點總結下,歡迎大家指正。由於用語會盡量口語保證易懂,所以會有失嚴謹性,具體的細節可以看本書。《Learning from data》



第一章主要解決兩個問題:
- 通過一個例子介紹機器學習算法;
- 粗略的證明為什么機器學習是可行的?
關於第一點
雖然舉得例子PLA比較簡單,也基本沒啥可用性,但是確實比較適合做為第一個機器學習算法給初學者基本的印象。這個算法的理解在於迭代不等式,為什么這個等式可以不斷糾錯直到最終的收斂?

Cousera課程的ppt上有個很直觀的解釋:


當y=+1時,表示x與w(也就是直線的法向量,假設w朝向正的這邊)的夾角小於90℃,如果有一個點它與w的夾角大於90℃說明是分錯的點,做一個向量的加法即可讓朝着與x夾角減小的方向前進(問題1,不一定一次就搞定吧?)。
迭代的方向沒問題之后,剩下的就是為什么會收斂?證明思路是構造一個最終的完美的wf(即可以完全平分數據集的直線),然后證明w最終在有限輪之后可以和wf的夾角為0,具體證明可以看這里。
2 前一個PLA的例子是給初學者直觀的映像,什么是機器學習算法,個人覺得第一章最精華的地方是第二點,即粗略證明機器學習是可能的。
首先,什么是機器學習?從這本書的書名我們可以得到簡單的解釋,是指機器從數據中學習,這個非常關鍵,有些時候不是學習而是記憶,例如人們學習數學公式,由於公式已經是確定的理論成果,已經經過實踐檢驗的,那個不是學習而是記憶,然后理解,而學習是它的反向過程,即要求人或機器去推導出這樣一個公式,所以機器學習的先覺條件是數據。之后才是算法之類的。
有了數據以后,我們就要開始學習了。假設全部的數據用D表示,我們拿到的用於訓練的數據用d表示,所謂學習,本質上是得到一個假設函數g,這個g在抽樣數據集d上錯誤率很小,更重要的是,它在全集D的錯誤率也很低,這樣我們就可以用g去預測未來各種情況了,也就是說我們學到了g。嚴格來說,機器學習伴隨着兩個過程,一個是學習即求解g,第二個就是驗證了。
換句話說。這里有兩個問題我們需要解決:
- 這個假設g怎么得到?-- 學習
- 怎么保證我們的g在全集D的錯誤率很低?全集D是無限大的,我們怎么知道?-- 驗證
第一個問題,就是機器學習算法要知道的,就是從一堆假設里面選。怎么選?當然選能夠在我們的d上表現最好的,這樣我們就得到了那個g。其實這個問題沒那么簡單,因為有第二個問題。怎么驗證得到的g在全集的錯誤率低?d上的錯誤率和D上的錯誤率有沒有關系呢?這個叫做g的泛化能力。我們只能求助於概率統計了,那個神奇的公式就是hoffeding inequality。如下所示:


從公式的形式不能看出,它能表示假設h在d和D上的錯誤率之差在一定的范圍內的概率,我們只需要讓這個概率越大越好。從公式,我們就可以發現,只要N越大,這個就能得到保證,看看,數據的多少也很重要。這里有兩個隱形的條件:
- h是固定的,也就是說,這個公式只預先得到的h有作用;
- d的抽取,必須能夠反映D的概率分布,這個很自然,如果d只能表示一部分,那我們學不全嘛,會有很多沒見過的樣子,怎么學。。。,所以一般都是隨機抽取,而不是人工看到哪個數據順眼選哪個,這個和直覺是相符的,我們做抽樣檢查就是基於這個原理;
問題又來了,機器學習的訓練過程就是先確定數據,再從茫茫多(暫且理解為M個)的假設里面選取最佳的假設,這樣的話hoffeding inequality就不能直接用了?當然不會,花了這么大力氣隆重介紹的神奇公式最后不能用豈不很慘。首先明確,問題是什么?我們要證明:


這個東西是有上限的,這樣g才能夠在全集D上錯誤率有所保障。條件呢? 我們有M個假設,這個是預先確定的,因為機器學習算法已經定好了才能學,而我們選的g是從M中來的,所以可以得到:

在概率里面一個事件A可以推導出另一個事件B則其發生的概率是小於等於B的,所以得到了最終M個概率的和:


這個上限是很松的,而且很多機器學習算法的假設貌似是無限啊,像PLA,那可是全體直線。。。這個問題是第二章要證明的,結論肯定是,還有個更緊的上線能夠保證g的錯誤率在d和D上接近。有了這個,我們就能夠放心的選取錯誤率最小的假設作為g了,因為這個錯誤率可以泛化到全集。這里再次說明下,那我們去找錯誤率為0的就行了啊,可是要找到那個假設得要多少備胎啊,備胎越多M越大,泛化能力就下來了,那就有可能選到的最小的不一定在全集D表現好(例子可參見這里提到的硬幣翻轉實驗),可見萬事萬物都是要平衡的。