吳恩達《Machine Learning Yearning》完整中文版開源啦!
《Machine Learning Yearning》是吳恩達歷時兩年,根據自己多年實踐經驗整理出來的一本機器學習、深度學習實踐經驗寶典。作為一本 AI 實戰聖經,本書主要教你如何在實踐中使機器學習演算法的實戰經驗。
吳恩達稱:這本書的主題是“如何構建機器學習專案”。“這本書的重點不在於教授具體的機器學習演算法,而在於如何使機器學習演算法真正發揮作用。有一些技術類的人工智慧課程會給你一個錘子;而這本書會教你如何使用這個錘子。如果你渴望成為人工智慧領域的技術領導者,並想了解如何為你的團隊設定方向,那麼這本書將會有所幫助。”
1、機器學習為什麼需要策略
機器學習(machine learning)已然成為無數重要應用的基石——如今,在網路搜尋、垃圾郵件檢測、語音識別以及產品推薦等領域,你都能夠發現它的身影。如果你或你的團隊正在研發一款機器學習相關應用,並期待取得較快進展,那麼這本書將會是你的得力助手。
案例:建立貓咪圖片初創公司
想象一下,你正在建立一家初創公司,這家公司的產品目標是為貓咪愛好者們提供數不盡的貓咪圖片,你打算應用神經網路(neural network)技術來構建一套計算機視覺系統,通過該系統來識別圖片中的貓。
但悲劇的是,目前你的學習演算法準確度還不夠好。為了改進這個貓咪檢測器,你正面臨著巨大的壓力。可你該怎麼做呢?
你的團隊給出了許多建議,例如:
- 獲取更多的資料,即收集更多的貓咪圖片
- 收集更加多樣化的訓練資料集,圖片中貓的位置可能不常見,也有可能顏色奇異,或者拍攝時使用不同的相機引數
- 通過增加梯度下降的迭代次數,使演算法訓練得久一些
- 嘗試一個擁有更多層/更多隱藏元/更多引數的,規模更大的神經網路
- 嘗試一個更小的神經網路
- 嘗試加入正則化(例如 L2 正則化)
- 改變神經網路的架構(啟用函式,隱藏元數量等等)
- …
在上面眾多的方向中,如果你做出了正確的選擇,就將建立起一個效果領先的貓咪圖片識別平臺,並帶領你的公司取得成功。但如果你選擇了一個糟糕的方向,則可能因此浪費掉幾個月的時間。那麼你該如何做出決定呢?
這本書將告訴你應該怎麼做。眾多的機器學習問題會留下一些線索,告訴你什麼樣的嘗試有用,什麼樣的沒用。而學會解讀這些線索將會節省你幾個月甚至幾年的開發時間。
2、如何使用此書來幫助你的團隊
完成本書的閱讀後,你將進一步理解如何為一個機器學習專案設定技術方向,但團隊成員可能不理解你為何要推薦某個特定的方向。有時你希望你的團隊定義一個單值評估指標,但他們並不認可你的想法,此時你將如何說服他們?
這正是我決定縮短章節篇幅的原因——這樣你就能夠將它們列印出來,並且讓你的成員僅閱讀其中他們需要了解的那幾頁。
優先順序的稍加改變會對團隊的生產力產生巨大的影響,我希望你能幫助團隊做出一些這樣的改變,從而成為團隊裡的超級英雄!
3、先修知識與符號說明
如果你有學習過機器學習相關課程(例如我在 Coursera 開設的機器學習 MOOC),或者有過監督學習的應用經驗,這本書的內容對你而言則不難理解。
本書假設你熟悉監督學習(supervised learning)概念,即使用標註(labeled)的訓練樣本(x,y)來學習一個從 x 對映到 y 的函式。監督學習演算法主要包括線性迴歸(linear regression)、對數機率迴歸(logistic regression,又譯作邏輯迴歸、邏輯斯蒂迴歸)和神經網路(neural network)。雖然機器學習的形式有許多種,但當前具備實用價值的大部分機器學習演算法都來自於監督學習。
我將經常提及神經網路(也被人們稱為“深度學習” ),但你只需對這個概念有基礎的瞭解便可以閱讀本書後面的內容。
如果對上文提到的一些概念你還不是很熟悉,可以在 Coursera 觀看《機器學習》前三週的課程內容。(課程地址:http://ml-class.org)
4、規模驅動機器學習發展
關於深度學習(神經網路)的一些想法在幾十年前就有了,那為什麼它們到現在才流行起來了呢?
推動其近期發展的主要因素有兩個:
- 資料可用性(data availability):如今人們在數字裝置(膝上型電腦、移動裝置等)上花費的時間越來越多,對應的數字化行為與活動產生了海量的資料,而這些資料都可以提供給我們的學習演算法用來訓練。
- 計算規模(computational scale):在近幾年前,我們才開始有能力訓練出規模足夠大的神經網路來使用現有的海量資料集。
具體來說,即使你積累了更多的資料,但應用在類似於對數機率迴歸(logistic regression)這樣較傳統的學習演算法上,其效能表現(performance)也將趨於 “平穩” 。這意味著演算法的學習曲線將 “變得平緩” ,就算提供更多的資料,演算法的效能也將不再提升。
傳統學習演算法似乎並不知道要如何來處理現今這般規模量級的資料。
在同樣的監督學習任務下,選擇訓練一個小型的神經網路(neutral network, NN),你可能會獲得較好的效能表現:
該圖顯示了在小資料集上應用神經網路的效果會更好,但這種效果與將神經網路應用在大資料集時不太一致。在小資料集情況下,傳統演算法是否會表現得更好,取決於人們如何進行特徵選擇工程。例如,假設你只有 20 個訓練樣本,那麼使用對數機率迴歸還是神經網路可能無關緊要;此時人為的特徵選擇工程比起選擇哪種演算法將產生更大的影響。但如果你有 100 萬個樣本資料,我會贊成你使用神經網路。
這裡的 “小型神經網路” 指的是隻含有少量的隱藏元/層/引數的神經網路。但如果你訓練的神經網路規模越來越大,最終很有可能會獲得更好的表現:
因此,為了獲得最佳的效能表現,你可以這樣做:
- 訓練大型的神經網路,效果如同上圖的綠色曲線;
- 擁有海量的資料。
在演算法訓練時,許多其它的細節也同等重要,例如神經網路的架構。但目前來說,提升演算法效能的更加可靠的方法仍然是訓練更大的網路以及獲取更多的資料。完成 1 和 2 的過程異常複雜,本書將對其中的細節作進一步的討論。我們將從傳統學習演算法與神經網路中都起作用的通用策略入手,循序漸進地講解至最前沿的構建深度學習系統的策略。
以上內容節選自《Machine Learning Yearning》,完整內容請點選下方連結閱讀。
Github:https://github.com/deeplearni...