1. 程式人生 > >機器學習簡易入門-附推薦學習資料

機器學習簡易入門-附推薦學習資料

感謝黃海廣博士的分享

原創: 機器學習初學者 機器學習初學者 今天

機器學習如何入門?目前沒有明確的答案。本站面向廣大初學者,推薦下機器學習(含深度學習)簡易入門的路線及學習資料,入門了以後,就會知道自己需要增強哪部分知識了,也會知道找什麼資料來學習。

(1)機器學習正規學習路線

如何學好機器學習?正規路線大概是這樣的:

1.學好數學基礎

數學分析(微積分),線性代數,概率論,統計,應用統計,數值分析,常微分方程,偏微分方程,數值偏微分方程,運籌學,離散數學,隨機過程,隨機偏微分方程,抽象代數,實變函式,泛函分析,複變函式,數學建模,拓撲,微分幾何,漸近分析......

2.學習經典機器學習書和教程

經典書籍:Duda的《模式分類》、Mitchell的《機器學習》、李航的《統計學習方法》、周志華的《機器學習》......

吳恩達:《機器學習》公開課、《深度學習》公開課。

李巨集毅:《機器學習基石》、《機器學習技法》。

3.學好程式語言

精通Python、Java、R、MATLAB、C++等程式語言。

4.閱讀論文

學好英語,熟讀經典論文,並且讀最新的機器學習論文,如頂級會議論文等,掌握最新的技術方向。

5.參加實際專案

如大廠實習、參加Kaggle、天池等資料競賽......

按照以上路線學完以後,雖然不一定能成為業界大牛,博士畢業完全沒有問題了。

以上方法存在的問題:

  • 大部分學習者的學習目的不是為了科研,而是希望把機器學習作為工具來使用。

  • 大部分學習者時間有限,學不完這麼多資料,不知道如何取捨。

  • 有些資料太難,作者假設學習者有一定的基礎,對一些步驟進行了省略,好多初學者看了的感覺是這樣的:

其實大部分人學習機器學習的目的,只要會用機器學習演算法及工具,解決一些問題,瞭解演算法的基本原理即可,並不需要學得那麼深入。上面的學習路線,第一條就勸退了好多人了。沒有幾個人能像博士一樣紮實地學好數學基礎,也沒有幾個人能讀完經典著作和熱門教程,只是希望快速入門機器學習。

在這種情況下,本站推薦下快速的機器學習入門路線。

(2)機器學習快速入門

1.基礎知識

熟悉基本的數學知識,最主要是高等數學線性代數概率論與數理統計三門課程,這三門課程應該是本科必修的,如果真的忘了,那就看下這篇文章:《機器學習的數學基礎》,可以把這篇文章提供下載數學資料看一遍,不需要全看懂,但是基礎的公式要大致明白,能從資料中查詢公式,裡面有兩個公式總結材料:

1) 機器學習的數學基礎.docx

(中文版,對高等數學、線性代數、概率論與數理統計三門課的公式做了總結)

2) 斯坦福大學機器學習的數學基礎.pdf

(原版英文材料,非常全面,建議英語好的同學直接學習這個材料)。

本人非常建議打好數學基礎,數學基礎決定了機器學習從業人員的高度

但是,如果學習時間太少,又想入門機器學習,就學習上面兩個公式總結材料其中的一個。

2.機器學習的教程

1) 機器學習入門的最佳教程

應該是吳恩達老師的《機器學習》公開課,這門課面向初學者,注重實際應用,並不側重數學推導。這門課開課較早,但到現在仍然是最火的機器學習公開課,評分非常高,課程配套作業(octave版本)。

學習這個課程注意事項:

  • 第五章Octave教程、第十八章應用例項,這兩章可以不用學,有點過時了。

  • 原版的octave作業可以不用做,可以做修改過的python版本作業。

  • 如果和吳恩達老師的《深度學習》公開課一起看,第四、五、六週的內容可以直接學習《深度學習》的相關內容。

  • 這個教程建議在三個月內看完,如果有些地方看不懂,沒關係,以後用到的時候再回頭看看。

  • 這個課程建議配合課程筆記一起看。本站已經提供了筆記下載

課程的視訊、筆記、python程式碼作業,請在這篇文章下載。

2) 機器學習小抄

把機器學習的概念做成背託福單詞的隨身小抄一樣方便!分分鐘搞定機器學習各種記不住的概念!這篇建議用一週時間看完,注意是略讀,有些地方不懂沒關係,做下記錄,以後用到的時候再查。

3) 李航《統計學習方法》

詳細介紹支援向量機、Boosting、最大熵、條件隨機場等十個統計學習方法。對數學基礎有一定要求,這是經典中的經典,很多國內的網課,網際網路企業的面試、筆試題目,或多或少,參考了這本書的內容,對初學者來說,有點難度,但是,如果想通過面試筆試,這本書應該要看懂,試著推導下演算法

4) 深度學習最佳入門教程

吳恩達《深度學習》公開課

這個視訊教程用最簡單的方式,把深度學習的主要演算法和框架講得非常清楚,課程附帶程式碼作業和測試題作業,學完以後,深度學習就算入門了。每章的學習建議:

  • 第一章:神經網路與深度學習

部分內容是《機器學習》公開課的第四、第五週的升級版

  • 第二章:改善深層神經網路 

這部分內容基本沒有和《機器學習》公開課有重合部分。

  • 第三章:結構化機器學習專案

部分內容是機器學習的第六週的升級版。

  • 第四章:卷積神經網路 

這部分主要用於影象、目標檢測方面的,相當於斯坦福CS231n深度學習與計算機視覺-李飛飛主講的課程的簡化。

  • 第五章:序列模型 

這部分主要用於自然語言處理,注意一點:RNN/LSTM結構裡的符號,和原始論文有點不一樣,我們平時的部落格、論文的符號,跟吳恩達老師的課程的符號略有區別。

課程的視訊、筆記、python程式碼作業,請在這篇文章下載。

臺大李巨集毅教授的深度學習講義,這是我見過最容易懂的深度學習入門資料,300多頁的講義能系統、通俗易懂地講清楚深度學習的基本原理,如同機器學習小抄一樣生動形象。

建議用幾天時間把這個講義瀏覽一次,可以基本瞭解什麼是深度學習,深度學習有什麼用。

3.學好程式語言

由於只是入門,僅推薦python這門程式語言。

機器學習主要的程式碼工具為python,python學習到底要學到什麼程度?個人感覺:入門最重要,至少要學到碰到問題能查百度的程度。

1) python安裝:

關於python安裝包,我推薦下載Anaconda,Anaconda是一個用於科學計算的Python發行版,支援 Linux, Mac, Windows系統,提供了包管理與環境管理的功能,可以很方便地解決多版本python並存、切換以及各種第三方包安裝問題。下載地址:https://www.anaconda.com/download/ 推薦選Anaconda (python 3.6版本)

IDE:推薦使用pycharm,社群版免費,下載地址:https://www.jetbrains.com/

2) python入門的資料推薦

a.《利用python進行資料分析》

這本書含有大量的實踐案例,你將學會如何利用各種Python庫(包括NumPy、pandas、matplotlib以及IPython等)高效地解決各式各樣的資料分析問題。

這個是我看的第一本python入門資料,如果把程式碼都執行一次,基本上就能解決資料分析的大部分問題了。

下載地址:建議購買書,原始碼可以上百度搜索。

注意:第二版中文翻譯已經有人寫了,建議搜尋下載。

b.python入門筆記

作者李金,這個是jupyter notebook檔案,把python的主要語法演示了一次,值得推薦。

下載地址:https://pan.baidu.com/s/1snmeqlR 密碼:hkv8

c.南京大學python視訊教程

這個教程非常值得推薦,python主要語法和常用的庫基本涵蓋了。

視訊下載地址:https://yun.baidu.com/s/1cCbERs 密碼:7thx

看完這三個資料,python基本入門了,同時可以使用scikit-learn等機器學習庫來解決機器學習的問題了。

4) 深度學習主要框架的學習

深度學習的主要框架,最基礎的,應該是TensorflowKeras。教程很多,可以選擇性地學一下,本站推薦簡便的入門方法:

a.Tensorflow入門

吳恩達《深度學習》公開課第二門課3.11介紹了Tensorflow的基本用法(對應筆記p251),這些用法會了以後,基本上能看懂大部分程式碼了,結合該課程的程式碼作業,不懂的地方搜百度都能搜到了。

b.Keras入門

《python深度學習》書和配套程式碼,《python深度學習》由Keras之父、現任Google人工智慧研究員的弗朗索瓦•肖萊(François Chollet)執筆,詳盡介紹了用Python和Keras進行深度學習的探索實踐,包括計算機視覺、自然語言處理、產生式模型等應用。書中包含30多個程式碼示例,步驟講解詳細透徹。

作者在github公佈了程式碼,程式碼幾乎囊括了本書所有知識點。在學習完本書後,讀者將具備搭建自己的深度學習環境、建立影象識別模型、生成影象和文字等能力。但是有一個小小的遺憾:程式碼的解釋和註釋是全英文的,即使英文水平較好的朋友看起來也很吃力。

本站對全部程式碼做了中文解釋和註釋,並下載了程式碼所需要的一些資料集(尤其是“貓狗大戰”資料集),並對其中一些影象進行了本地化,程式碼全部測試通過。(請按照檔案順序執行,程式碼前後有部分關聯)。

本站認為,這本書和程式碼是初學者入門深度學習及Keras最好的工具。

電子書及中文註釋程式碼請點選下載

4.閱讀論文

1) 學好英語,讀一些優秀論文

選擇性地讀一些經典論文,英語真的不好,就輸入論文題目搜下百度,很多部落格會對經典論文有詳細的解釋。

看論文的關鍵:復現作者的演算法

根據論文,復現成功演算法後,通常就能對論文有深刻的理解了。經典論文都是可以復現的,github都有,最新的優秀論文,通常也能搜到程式碼。

2) 學會整理論文

讀過的論文分類整理下,推薦下論文管理神器zotero,功能強大,可以在論文上記筆記,並支援不同電腦之間的同步。

5.參加實際專案

如果有大廠的實習機會,儘量去,能學到不少東西。

沒有實習機會,可以嘗試參加下kaggle比賽,不一定要取得多少名次,可以搜搜歷次比賽,下載資料,下載別人的公開程式碼,復現下。

國內也有類似的比賽,如天池,DF等。

通常,在2-3個比賽能達到top1%的成績,程式碼能力基本沒有問題了。

但是,不建議在比賽中花太多時間,比賽大部分時間是用於特徵工程,在實際工作中並不一定能用上,只要能解決問題就行了,其他時間用於學習吧。

6.多和學習者交流

交流的方式有很多種,如參加學術活動、實驗室討論等,但我認為最有效的交流方式還是加入一些學術討論組織,如微信群,qq群等。“聞道有先後術業有專攻”,不懂很正常,不懂就要問,“三人行,必有我師。”

(3)總結

學習機器學習,儘可能打好數學基礎,機器學習從業者數學基礎不紮實,只會用一些工具和框架,相當於某些武術家只會耍套路,外行人覺得很厲害,但實戰起來一定是鼻青臉腫。可以說,數學基礎是機器學習從業人員的天花板。為什麼機器學習從業人員學歷越高,往往工資越高,通常和掌握的基礎知識正相關。

本文的方法,只適合快速入門,入門了以後,你就會知道哪方面的不足,自己也會找資料學習了。

本文的方法僅供參考。