近日, 來自SAP(全球第一大商務軟體公司)的梁勁(Jim Liang)公開了自己所寫的一份 520 頁的學習教程(英文版), 詳細、明瞭地介紹了機器學習中的相關概念、數學知識和各種經典演算法。 機器之心看到後, 也迫不及待的推廣給更多的讀者。 完整的 PDF 請從文後作者公開的連結下載。
在介紹中, Jim Liang寫到:
人工智慧是這兩年風頭正勁的領域, 也是未來具有顛覆性可能的新領域。 不少人嘗試去學習機器學習相關的知識。 然而, 一旦越過最初的 overview 階段, 很多人就開始打退堂鼓了, 然後迅速放棄。
為什麼會這樣?
極 高 的 學 習 曲 線
首當其衝就是數學,
其次因為機器學習本身是一個綜合性學科, 而且是一個快速發展的學科, 知識點散亂, 缺乏系統性。
市面上的機器學習/深度學習書籍、文章、教程, 遍地開花, 但能以清晰的方式表達、循序漸進地講解的教程, 其實不多, 大量的教程沒有考慮到學習者的基礎, 使得初學者感到挫敗和困惑。
圖 解 機 器 學 習
正是對機器學習的過程中的痛苦有切身體會, 我希望能做一份教程, 以淺顯易懂的方式去講解它, 降低大家的學習門檻。
從結構來看, 全部教程包含兩部分:
Part 1 介紹了基本概念, 包括:
機器學習的流程
資料處理
建模
評估指標(如 MSE、ROC 曲線)
模型部署
過度擬合
正則化等
在第一部分, 作者先介紹了如今應用普遍的機器學習:從自動駕駛、語音助手到機器人。
除了這些基礎概念, 這份教程也對機器學習模型的開發流程做了圖像化展示(如下圖), 即使對此不太瞭解的讀者, 也能通過這種流程展示有所學習。
建立機器學習解決方案的步驟
在 Part1 的其他小節, 作者以類似的圖像展示, 對資料、建模、模型部署等內容做了詳細介紹, 這裡就不一一列舉,
在 Part2, 作者介紹了 常用的演算法, 包括:
線性回歸
邏輯回歸
神經網路
SVM
Knn
K-Means
決策樹
隨機森林
AdaBoost
樸素貝葉斯
梯度下降
主成分分析
這部分包含了大量的數學公式, 但作者盡力注解了其中的每個公式, 從而充分、清晰地表達了眾多數學概念。
例如在「神經網路」部分, 作者整理了 59 頁的筆記(從 311 頁到 369 頁)。 作者從人腦中的神經元架構說起, 介紹了人工神經網路(ANN)、人工神經元工作的原理。 這份筆記非常注重圖像化的概念解釋, 理解起來非常直觀。
例如, 下圖中的概念解釋很形象地展現了生物神經元和人工神經元工作方式的相似性。
生物神經元的樹突輸入-軸突輸出模式和人工神經元的輸入輸出模式對比。
過擬合的解釋。
人工神經元的基礎結構。
在涉及到數學公式時,作者會在旁邊有詳細的注解,如下圖所示:
對於並列的可選項(如啟動函數、常用神經網路架構等),也會有全面的列表:
常用的啟動函數。
然後會有每個啟動函數的單獨介紹:
Sigmoid 啟動函數。
用神經網路分類手寫數位的前向傳播示例(softmax 啟動函數)。
對於神經網路中較為複雜的概念(如求導、反向傳播),幾張圖就能解釋清楚:
關於神經網路的完整訓練過程,作者用簡略流程圖+計算細節展開的方式呈現:
反向傳播演算法完整流程。
前向傳播部分的計算細節。
就像前面提到的,這部分除了「神經網路」的介紹,還包括隨機森林、梯度下降等概念的介紹,讀者們可查看原教程。
總結
看完這份教程之後,小編覺得這是一份包羅萬象的學習筆記,既適合非專業人士瞭解有關機器學習的基礎概念,又適合有專業背景的學生進一步學習。
寫教程是為了自己持續學習,分享教程是為了幫助更多人學習。就像作者所說,「Learning by doing/teaching, 寫這個教程主要是強迫自己持續學習,另外,也想分享給他人,希望能幫助到更多想學習 Machine Learning 的人,降低大家的學習痛苦。」
教程文檔下載地址(百度雲):https://pan.baidu.com/s/1tNXYQNadAsDGfPvuuj7_Tw
過擬合的解釋。
人工神經元的基礎結構。
在涉及到數學公式時,作者會在旁邊有詳細的注解,如下圖所示:
對於並列的可選項(如啟動函數、常用神經網路架構等),也會有全面的列表:
常用的啟動函數。
然後會有每個啟動函數的單獨介紹:
Sigmoid 啟動函數。
用神經網路分類手寫數位的前向傳播示例(softmax 啟動函數)。
對於神經網路中較為複雜的概念(如求導、反向傳播),幾張圖就能解釋清楚:
關於神經網路的完整訓練過程,作者用簡略流程圖+計算細節展開的方式呈現:
反向傳播演算法完整流程。
前向傳播部分的計算細節。
就像前面提到的,這部分除了「神經網路」的介紹,還包括隨機森林、梯度下降等概念的介紹,讀者們可查看原教程。
總結
看完這份教程之後,小編覺得這是一份包羅萬象的學習筆記,既適合非專業人士瞭解有關機器學習的基礎概念,又適合有專業背景的學生進一步學習。
寫教程是為了自己持續學習,分享教程是為了幫助更多人學習。就像作者所說,「Learning by doing/teaching, 寫這個教程主要是強迫自己持續學習,另外,也想分享給他人,希望能幫助到更多想學習 Machine Learning 的人,降低大家的學習痛苦。」
教程文檔下載地址(百度雲):https://pan.baidu.com/s/1tNXYQNadAsDGfPvuuj7_Tw