1. 程式人生 > >吳恩達斯坦福大學機器學習 CS229 課程學習筆記(一)

吳恩達斯坦福大學機器學習 CS229 課程學習筆記(一)

說到機器學習總繞不過幾個鼎鼎大名的人物,他們都創造了不少的機器學習資料,斯坦福吳恩達Andrew Ng的公開課CS229;Google李飛飛的CS231、周志華的、李航的《統計學習方法》、林軒田的《機器學習基石》、Peter Harringtond 的《機器學習實戰》、周志華的《機器學習》(西瓜書,書中都是拿西瓜舉例子)。

CS229的官方網站是http://cs229.stanford.edu/,網易公開課視訊地址是http://open.163.com/special/opencourse/machinelearning.html,可以同時下載打包的課件,b站也可以看https://www.bilibili.com/video/av9909092/index_25.html。知乎大神CycleUser翻譯了筆記,託管在github上https://github.com/Kivy-CN/Stanford-CS-229-CN/,還上傳了百度雲:https://pan.baidu.com/s/1kV4vDEv#list/path=%2F。百度文庫也有一份個人筆記:https://wenku.baidu.com/view/99b86f70650e52ea54189862.html。知乎上面有人對機器學習的資源進行了整理<em>機器學習</em>該怎麼入門? - 張松陽的回答 - 知乎https://www.zhihu.com/question/20691338/answer/53910077

,但我覺得還是不要圖多,好好鑽研才重要。

本課程主要介紹機器學習和統計模式識別。主題包括:監督學習(生成/鑑別學習、引數/非引數學習、神經網路、支援向量機support vector machines);無監督學習(聚類clustering、降維、核方法);學習理論(偏差/方差權衡;風險投資理論VC theory;大的利潤);強化學習和自適應控制。該課程還將討論機器學習的最新應用,如機器人控制、資料探勘data mining、自主導航、生物資訊學、語音識別、文字和web資料處理。

第一課中,前半部分Ng主要照著handout簡單說了一些課程的設定,需要掌握基礎的統計知識,說明會有project,專案要求掌握matlab或者Octave。現在看來Python應該會是更好的選擇,不僅可以呼叫matlab模組,還可以呼叫現成的機器學習演算法包scikit-learn:http://scikit-learn.org/stable/。然後,Ng講了什麼是機器學習。1959年Arthur samuel定義機器學習是在不直接針對特定問題程式設計的情況下讓機器具有特定學習能力的的領域。他寫了一個下棋的程式,在程式自己和自己下了很多遍之後,程式可以知道說明會導致輸贏。這也反駁了程式只會做明確指定的功能的言論。在1998年Tom Mitchell做了一個更加現代的定義:

對一個計算機來說,在擁有經驗E和評價標準P,可以自己提升對任務T的效能,就可以稱作機器學習。在表述中不僅做出了定義,還很押韻。

接下來對課程做一個整體的把握。分成四個部分

第一部分是有監督的學習supervised Learning。Ng舉了一個房屋價格的例子。有一些是統計出來的,房屋面積和價格一一對應。當我們想要知道一個新的房屋價格,卻只知道它的面積時,就可以根據之前採集的資料畫出的曲線來預測。之前的幾組資料看作是標準答案,所以叫監督,我們希望機器學習輸入和標準答案之間的對應關係。這種問題就是迴歸問題,Regression Problem,Regression這個詞也反映了我們預測的資料是連續的。另一個監督學習類的問題是分類問題。在分類問題中是離散的。Ng舉了腫瘤的例子。為了簡單起見,只考慮腫瘤的大小,和對應是否是良性腫瘤。而實際中輸入的特徵往往是多維的,比如腫瘤的大小,患者的年齡,腫塊厚度等。通過學習現有的資料,判斷新來的病人的腫瘤是否是良性。多維輸入的情況下,我們不能將點畫在平面中,可以用支援向量機SVM對映到計算機記憶體中

第二部分,Learning Theory。Ng的一般數學家朋友致力於揭示宇宙中的真美,但是Ng希望用機器學習解決實際的問題。什麼樣的演算法可以近似不同的函式,需要多少訓練資料。它只是一種工具,和木匠的錘子一樣,真正的木匠能用工具解決其他人無法解決的問題。

第三部分是Unsupervised Learning,非監督學習。這中無監督的學習中我們事先不知道輸入資料的標準答案,只能自己找到一些有趣的資料結構。有一個學生用聚類技術對影象的畫素進行分類。進階地,利用聚類的結果,實現了通過單幅影象建立了3D模型。還有社交網路分析,市場分析,宇宙星系分析。還有一個例子是雞尾酒會,很多人在談話,希望把感興趣的人的聲音單獨分離出來。用matlab的一行程式碼就可以解決,實現了ICA演算法。

第四部分是Reinforcement Learning,預測腫瘤屬性的例子中,錯判的代價是很大的。Ng展示了他做的無人直升機的例子。直升機可以實現四腳朝天飛的特技。這很難由人工之間直接寫程式來實現。背後的一個基本概念是reward function彙報函式,就像像訓練狗一樣,做對事情的時候,就給以獎勵。這時候我們只需要定義什麼是好的積極的行為,機器會學習如何獲得最大的回報。

還有很多人對機器學習不以為然,其實機器學習確實只是一種工具,還是需要建立在專業知識之上。好的木匠在動手之前在腦海中已經有一件偉大的作品了。