1. 程式人生 > >3分鐘瞭解入門「機器學習」該學習什麼?(上)

3分鐘瞭解入門「機器學習」該學習什麼?(上)

640.gif?wxfrom=5&wx_lazy=1

本文來自作者粽子 在 GitChat 上分享「零基礎的新手,如何入門機器學習?」,閱讀原文」檢視交流實錄

文末高能

編輯 | 阪本

一、機器學習入門淺談

機器學習領域,又或者更大而化之的說人工智慧方向,因為“阿爾法狗”等一系列的熱門爆點話題,被推到了人前,受到越來越多人的關注。

無論你是什麼領域的工作者,都一定多多少少聽說過它的名號。

而與此同時,隨著機器學習領域理論的成熟,越來越多的相關技術被應用於生活實踐的方方面面,從事機器學習崗也成了很多計算機行業從業者的重點考慮。

在這個 chat 裡,我想簡單的和大家探討一些新手選擇機器學習方向時總會考慮的問題。

其實,認真的說來,我們很難在網上找到一個教程,完全貼合每個新手入門機器學習時的需求。

原因很簡單,每個人在涉足這個領域的時候,個人的知識積澱和教育背景不一樣,同樣,他們對於未來發展的心理預期不一樣,這也導致了需求的多樣化。

因此,在真正入行之前,我非常建議你們,能夠對自己進行一個深度的剖析,發現自己的優缺點,從而能夠查漏補缺,才能在這個行業走的更遠,同時,也能從心底對自己的選擇更有底氣。

從我個人的角度出發,我選擇機器學習領域,是理智選擇後的結果。

我從高中起就覺得程式設計師這個職業特別 cool,但是陰差陽錯本科選擇了數學,研究生才轉行成為半個“非專業碼農”。

我的教育背景決定了和大部分程式設計師相比,我在數學理論上有比較大的優勢,但同時,我的程式碼能力非常的弱(在本科時,我只簡單接觸過python、matlab和c++)。

我們很容易在學習中發現,機器學習方向對程式碼的要求,要遠遠小於傳統的IT行業,比如前端、後臺,甚至一些更底層層面的業務需求。

綜上所述,我才最終決定選擇了這個方向。

我個人覺得,我的這個考慮,更適用於還在上學的學生,或者剛剛畢業的畢業生們。

這類人的普遍特點是,脫離學校不久,理論知識底子還有,但是實際程式碼能力和專案經驗不足。

但是,相同的問題對很多轉行的程式設計師來說,可能側重點完全相反。

我身邊有很多工作了幾年後,重新選擇方向的程式設計師,他們擁有紮實的程式碼基礎,豐富的業務經驗。

但是對機器學習的很多理論知識非常苦手,甚至連機器學習的入門邏輯迴歸等涉及到的簡單公式都有些吃力。

對於這一類的入門者,我建議他們可以先看一些基礎課程。

作為一個經歷了四年枯燥無味的數學理論知識摧殘的倖存者,我認為,人們在初接觸對自己而言艱澀無味的知識時,一個言之有物,循循善誘的老師,是十分有必要的。

和前面提到的兩類不同,還有一類入門者是純粹的小白,他們之前從未從事過相關職業,也從未學習過相關知識。

我有一個學長大概就是這樣的情形,這類人大多轉行的動力是對現在的工作和薪酬情況不滿意,同時被現在越來越火的機器學習領域所吸引,渴望改變現狀。

他們的工作量是非常巨大的,理論和基本程式碼能力兩手抓,同時還需要補很多計算機的專業課程,屬於三類人中困難度最高的。

在下面一部分中,我會簡單總結一下我手頭使用過或者比較瞭解的機器學習資料,並對他們進行點評和分類,以供不同側重點的大家可以選擇。

二、機器學習資料

寫在前面的話:無論你是我剛才提到的哪一部分入門者,數學基礎都是一定一定必要的!不認真打好基礎的人,永遠也不會爬得太高。

線性代數、高數概率論與數理統計,是三本非常非常非常必要的課,如果忘記了請隨時溫習,直接搜最經典的版本教材就可以。

視訊資料

我個人非常喜歡的方式,現在的網路這麼發達,給我們了一個機會可以接觸到全球各地的名師。

剛入門的時候,名師的講解肯定比自己死啃書要好,所以推薦給所有時間不那麼緊張的小夥伴。

1. Coursera 上 Ng 開設的機器學習

這門課十分經典,基本算是機器學習的入門課了。吳恩達在課堂上使用的是 Octave。

但是用什麼語言實現其實都是可以的,課程的大作業,以及吳恩達寫好的框架都對摸清行業基本工程框架十分有幫助的,基本可以算是理論與工程都兼顧。

相信大家都知道,Ng 現在離開百度自己出來創業,普及深度學習,又推出了更新的深度學習幾門課程,現在國內的一些主流網課 app 都可以找到課程資源。

還是延續了老吳的一貫風格,更側重理論一些,對程式碼的要求沒那麼高,對程式碼小白十分友好。

2. 斯坦福公開課 cs231n

這門課適合計算機視覺方向的剛入門,其他方向的有興趣也可以去聽一聽,如果時間緊張就不是很推薦啦。

3. 斯坦福公開課 cs224d

這門課的方向是自然語言處理,開課老師是 NLP 領域的天才級大牛,講了很多深度學習與自然語言處理的結合相關知識,對於剛入門的初學者,十分建議刷一刷!

文字資料

這部分很多都更側向理論部分,畢竟任何方向要想走得足夠遠,就一定會涉及到晦澀的理論部分,這個時候,一本書和一本筆記,就是非常必要的了。

1. 南大周志華的《機器學習》

非常非常經典的西瓜書,基本上搞機器學習的人手一本。個人感覺屬於典型的科班教科書,如果不是正在上學的學生,不是特別推薦,會有更多更好的替代讀物,雖然名氣大,但是不適合入門讀,比較適合已經有基本概念的人來看。

2. 《deep learning》中文叫做《深度學習》

這本書具有極高的價值性和權威性,非常推薦,借用網上的評價大概是“這本書的價值在於讓你低成本(高效率)的補上最近幾年的主要理論成果”,非常適合面對數百篇論文無從下手的科研人士入門。

當然也有人反應它的核心章節講主流學習模型 CNN 和 RNN 的時候邏輯有點混亂。

但是現在 CNN 和 RNN 發展到現在,不同的方向早就有了差異巨大的變種,所以,指望一本書能夠全部搞明白也是不現實的。

3. 《Hands On MachineLearning with Scikit Learn and Tensorflow》

非常可愛的蜥蜴書,是某段時間相關主題的top1,和我接下來介紹的一本《機器學習實戰》各有優劣,大家可以酌情選擇。

這本書有很多深度學習在工程應用上的小竅門,解決了很多工程開發中的現實問題。

但是同時,它的程式碼量沒有機器學習實戰那麼多,理論講解體系也相對更完善。非常適合剛上完NG課程的新手來銜接使用。

4. Machine Learning in action 中文名為《機器學習實戰》

也是非常經典的一本書了,小夥伴基本人手一本,我從他還沒出版的適合就開始關注。

主要特點就是簡單粗暴,特別適合和我一樣理論還可以但是程式碼能力基本為零的程式設計師小白。

“這本書用盡量少的公式把機器學習的基本演算法都過了一遍,而且還講得很清楚,更為重要的是他將公式和程式碼結合了起來。

因此,你的機器學習並沒有那麼的抽象了,你知道演算法裡的公式如何的轉化為程式碼。”(這段摘自知乎)

如果你的程式碼基礎比較好,可以簡單過一遍,缺乏程式碼量,對 python 等語言不熟悉的小夥伴,可以像我一樣老老實實的全部敲一遍,進步真的是可以明顯看見的。

5. 李航的《統計學習方法》

不是很厚的藍皮書,但是學起來真的很痛苦,如果要認認真真推導一遍公式。建議是有機器學習的基本知識和能力以後再來攻克,否則真的是分分鐘想放棄。

和第一本西瓜書一樣,都算是國內的經典教材,非常值得有時間有精力的學生黨仔細研讀,如果是時間比較緊張的工作黨們,可以酌情看其中的部分章節。

三、總結和寫在後面的話

可能看到中間,就有小夥伴開始疑惑,欸,不是說機器學習嗎?怎麼不知不覺就說到了深度學習?

其實,人工智慧領域發展到現在,機器學習已經遠遠不能滿足我們的日常需求了。

甚至可以這樣說,機器學習的知識只是這個領域的冰山一角,我們僅靠單薄的機器學習的知識,早就不能找到一份理想的工作。

計算機這個行業,從來都是活到老學到老,人們眼中的高薪,也就決定了它殘酷的競爭性和知識迅速的更替性。

機器學習入門以後,就需要你根據自己的需求來制定個性化的路線了。比如大資料分析、圖模型、深度學習、自動駕駛、機器人、自然語言處理、影象識別、語音識別等等,既有應用方向,也有理論方向。

正如我開篇所提到的,早在不知不覺間,機器學習就已經深入到了我們生活的方方面面。

在推薦中,我提到的都是自己親自看過(雖然有一些並沒有看完)的資料,也有很多名氣很大很權威的資料沒有提及。

比如《Elements of Statistical Learning》《機器學習基石》等等等。

畢竟個人能力有限,也歡迎大家一起來討論補充。同時,我也堅信,現在這個時代,好的資料太多,而人的精力有限,與其把時間和精力花在篩篩選選上,不如靜下心把幾本經典的教材吃透。

最後,無論你是從哪裡開始,選擇好方向,堅持走下去,才是唯一走到最後的訣竅,時間才是檢驗奮鬥的唯一標準。

與君共勉。

近期熱文

福利

0?wx_fmt=png

「閱讀原文」看交流實錄,你想知道的都在這裡