普通程式設計師如何向人工智慧靠攏?

第四范式發表於2017-04-21

相信看到這篇文章的朋友,幾乎都想成為機器學習科學家。

事實上,絕大多數的付費課程,基本上都有完全免費的課程放在另一個地方。我們只是把這些資訊整理好,告訴你在哪兒可以找到他們,以及通過什麼樣的順序進行學習。

這樣,哪怕你是還沒畢業的大學生,或者是初入職場的工程師,都可以通過自學的方式掌握機器學習科學家的基礎技能,並在論文、工作甚至日常生活中快速應用。

在這裡我們推薦一份使用者友好型的機器學習教程,你可以通過幾個月的學習成為機器學習科學家,完全免費。

一份使用者友好型的機器學習教程

當你學習機器學習課程時,有沒有被資訊過載所淹沒?

大部分的學習者都遇到了這個問題,這不是他們的錯,因為絕大多數的機器學習課程都過於關注個別演算法了。 

沒錯,雖然演算法很重要,但他們還是把太多時間花在了演算法上。 

以至於......你幾乎很難在短時間內走完一遍機器學習的流程,從而感受到通過它解決具體資料問題的巨大興奮。

這些機器學習課程關注於演算法是因為它容易教。相比之下,如果機器學習老師要帶你走一遍機器學習的流程,那麼他需要搭建計算環境,完成資料採集、清洗、拆分,特徵處理,模型調參和模型預測,甚至他還需要一個面向學習者的互動介面。老師哪有這麼多的工具,與其手把手帶著學生走一遭,還不如學習機器學習演算法。 

但這樣的問題是,很難有人能堅持通過自學,成為一個卓越的機器學習科學家。哪怕他是數學博士,或者技術高超的程式設計師,都很容易陷在細節中而難以有具體專案實現的成就感。 

這份教程將會帶來完全不同的思路。它非常適合自學者,即便完全沒有程式設計的基礎,也能通過恰當的工具快速實現機器學習模型,解決工作、生活中遇到的具體問題。

值得注意的是,我們享用了世界頂級的機器學習資源,而不需要花費 1 分錢。 

 自我學習的方法

我們推薦通過 Doing Shit(不是技術術語)完成你的學習。

在這之前你也許已經學習過機器學習了,但從我和朋友們的經驗來看,往往會被各種神祕的符號、公式、大量的教科書和論文整的暈頭轉向,然後再也不想碰這惱人的玩意了。

我們的方法會更加友好,它的學習過程就像小朋友學習一樣,你會了解一些基礎的知識(但不一定要完全弄懂),然後通過好用的工具快速實現出來就好了。而當你被建模出來的結果吸引,那時候我們才談演算法背後的數學邏輯和計算邏輯

所以我們會在學習中做很多機器學習專案,這樣的好處是當你面對一個工作機會時,你就是一個經驗豐富的機器學習科學家了!

當然自學本身是需要自律的,這本教程將一直陪伴著你,以下是 4 個步驟。

普通程式設計師如何向人工智慧靠攏?

步驟一:前提條件

機器學習之所以看起來很嚇人,是因為總伴隨著那些晦澀難懂的術語。實際上,即便你是中文系畢業的,也可以學好機器學習。不過,我們需要你在一些領域有基礎的理解。

好訊息是,一旦你滿足了前提條件,其餘的將會非常容易。事實上,幾乎所有的機器學習都是把統計學和電腦科學的概念應用於資料領域

任務:確保你瞭解基礎的統計學、程式設計和數學 

統計學:理解統計學、特別是貝葉斯概率對許多機器學習演算法來說都是至關重要的。 

免費的指南:How to Learn Statistics for Data Science, The Self-Starter Way 

https://elitedatascience.com/learn-statistics-for-data-science

程式設計:懂得程式設計將會更靈活的應用機器學習。 

免費的指南:How to Learn Python for Data Science, The Self-Starter Way 

https://elitedatascience.com/learn-python-for-data-science

數學:對原始演算法的研究需要線性代數、多變數計算的基礎。 

免費的指南:How to Learn Math for Data Science, The Self-Starter Way 

https://elitedatascience.com/learn-math-for-data-science

你可以先看看這些教程,給你的機器學習道路打下知識基礎。

步驟二:海綿模式

海綿模式是儘可能吸收足夠多的機器學習理論知識。 

現在有些人可能會想:“如果我不打算進行原創性研究,為什麼在可以使用現有機器學習包的時候,還需要學習理論?” 

這是一個合理的問題!

然而,如果你想把機器學習更靈活的應用於日常工作,學習一些基礎理論還是很有好處的,而且你並不需要完全弄懂。下面我們會劇透學習機器學習理論的 5 個理由。

普通程式設計師如何向人工智慧靠攏?

好訊息是,你不需要一開始就知道所有問題的答案。所以我們推薦你從學習足夠的理論開始,然後快速進入到實踐。這樣的話,你比較能夠堅持下來,並在一段時間後真正精通機器學習

以下是一些免費的機器學習資料。

2.1 機器學習視訊課程

這是來自哈佛大學和耶魯大學的世界級課程。

任務:完成至少一門課程 

哈佛大學資料科學課程 

端到端的資料科學課程。相比吳恩達的課程,它對機器學習的重視程度較低,但是從資料收集到分析,你可以在這裡學到整個資料科學的工作流程。 

課程主頁:http://cs109.github.io/2015/

史丹佛大學機器學習課程 

這是吳恩達的著名課程,這些視訊說清楚了機器學習背後的核心理念。如果你的時間只能上一節課,我們建議這個。 

課程主頁:

https://www.youtube.com/watch?v=qeHZOdmJvFU&list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW&index=1

2.2 機器學習參考資料

接下來我們推薦行業中兩本經典的教材。 

任務:看這些 PDF 作為教科書 

An Introduction to Statistical Learning 

Gentler 在書裡介紹了統計學習的基本要素,適合所有機器學習的學習者。 

PDF 地址:http://www-bcf.usc.edu/~gareth/ISL/ISLR%20Sixth%20Printing.pdf

Elements of Statistical Learning 

嚴格的介紹了機器學習理論和數學,推薦給機器學習的研究員。 

PDF 地址:http://statweb.stanford.edu/~tibs/ElemStatLearn/

2.3 成功的關鍵

以下是每個步驟成功的關鍵。 

A:注重大局,總是問為什麼 

每當你被介紹一個新概念時,問一句“為什麼”。為什麼在某些情況下要使用決策樹而不是迴歸?為什麼要規範引數?為什麼要拆分資料集?當你瞭解為什麼使用每個工具時,你將成為真正的機器學習從業者。

B:接受你不會記得所有學過的東西 

不要瘋狂的做筆記,也不要每個課程都複習 3 次。在自己的實際工作中,你會經常需要回過頭檢視。

C:繼續前進,不要氣餒 

儘量避免在一個話題上拖太久的時間。即便是對於機器學習教授來說,有些概念也很不好解釋。但是當你在實踐中開始應用時,你會很快就懂得概念的真實含義。

D:視訊比教科書更有效 

從我們的經驗來看,教科書是很好的參考工具,但它很難堅持。我們強烈推薦視訊講座的形式。 

步驟三:有目的實踐

在海綿模式之後,我們會通過刻意練習的方式磨練技能,把機器學習能力提高到一個新水平。目標包括三個方面:

1.實踐完整的機器學習流程:包括資料收集、清洗、預處理,建立模型,調整引數和模型評估。 

2.在真實的資料集中練習,逐漸建立哪種模型適合哪種挑戰的直覺。

3.深入到一個具體主題中,例如在資料集中應用不同型別的聚類演算法,看哪些效果最好。 

在完成這些步驟後,當你開始解決大型專案時就不會不知所措了。

3.1 機器學習工具

為了快速實現機器學習模型,我們推薦使用現成的建模工具。這樣的話,你會在短時間內練習整個機器學習的工作流程,而無需在任何一個步驟花費太多時間。這會給你非常有價值的“大局直覺”(Big Picture Intuition)。

Python:Scikit-Learn 

Scikit-learn 和 Sklearn 是通用機器學習中 Python 的黃金標準庫,它具有常規演算法的實現。 

R:Caret 

Caret 為 R 語言中的模型包提供一個統一的介面。它還包括了預處理、資料拆分、模型評估的功能,使其成為一個完整的端到端解決方案。

3.2 實踐資料集

學習了工具後,你還需要一些資料集。資料科學和機器學習的藝術,很多都在於解決問題時的幾十個微觀決定。我們會在不同的資料集中看到建模的結果。

任務:從以下選項中選擇 5 到 10 個資料集。我們建議從 UCI 的機器學習庫開始,例如你可以選擇 3 個資料集,分別用於迴歸、分類和聚類。 

在進行機器學習工程的時候,想想以下問題:

  • 你需要為每個資料集執行哪些型別的預處理?

  • 你需要進行降維操作嗎?你可以使用什麼方法? 

  • 你可以如何拆分資料集? 

  • 你怎麼知道模型是否出現“過擬合”? 

  • 你應該使用哪些型別的效能指標? 

  • 不同的引數調整會如何影響模型的結果? 

  • 你能夠進行模型組合以得到更好的結果嗎? 

  • 你的聚類結果和直觀的相符麼?

UCI 機器學習報告 

UCI 機器學習報告採集了超過 350 個不同的資料集,專門為機器學習提供訓練資料。你可以按照任務搜尋(迴歸、分類或聚類),也可以按照行業、資料集大小搜尋。 

http://archive.ics.uci.edu/ml/

Kaggle 

Kaggle.com 以舉辦資料科學比賽聞名,但是該網站還擁有超過 180 個社群資料集,它們包含了有趣的話題,從使用者寵物小精靈到歐洲足球比賽的資料應有盡有。 

https://www.kaggle.com/datasets

Data.gov 

如果你正在尋找社會科學或者與政府有關的資料集,請檢視 Data.gov。這是美國政府開放資料集合,你可以搜尋超過 190,000 個資料集。 

https://www.data.gov/

步驟四:完成機器學習專案

好了,現在到了真正有趣的部分了。到目前為止,我們已經涵蓋了前提條件、基本理論和有目的實踐。現在我們準備好進入更大的專案。 

這一步驟的目標是將機器學習技術整合到完整的、端到端的分析中。

4.1 完成一個機器學習專案

泰坦尼克號倖存者預測挑戰是一個非常受歡迎的機器學習實踐專案,事實上,這是 Kaggle.com 上最受歡迎的比賽。

我們喜歡以這個專案作為起點,因為它有很多偉大的教程。你可以從中瞭解到這些有經驗的資料科學家們是怎麼處理資料探索、特徵工程和模型調參的。 

Python 教程 

我們真的非常喜歡這個教程,因為它教會你如何進行資料預處理和糾正資料。教程由 Pycon UK 提供。 

教程地址:https://github.com/savarin/pyconuk-introtutorial

R 教程

在 R 中使用 Caret 包來處理幾個不同的模型。本教程很好總結了端到端的預測建模過程。 

教程地址:http://amunategui.github.io/binary-outcome-modeling/

這是一個“不負責任”的快速教程:僅僅是個教程,跳過了理論講解。不過這也很有用,而且它顯示瞭如何進行隨機森林操作。 

教程地址:http://will-stanton.com/machine-learning-with-r-an-irresponsibly-fast-tutorial/

4.2 從頭寫個演算法

為了對機器學習有更深的理解,沒有什麼比從頭寫個演算法有幫助了,因為魔鬼總是在細節裡。

我們建議從一些簡單的開始,例如邏輯迴歸、決策樹或者 KNN 演算法。

這個專案也為你提供了一個將資料語言翻譯成程式語言的實踐。當你想把最新的學術界研究應用於工作時,這個技能將會十分方便。 

而如果你卡住了,這裡有一些提示: 

  • 維基百科有很多好資源,它有很多常見演算法的虛擬碼

  • 為了培養你的靈感,請嘗試檢視現有機器學習軟體包的原始碼。

  • 將你的演算法分解,為取樣、梯度下降等編寫單獨的功能 

  • 從簡單開始,在嘗試編寫隨機森林前,先執行一個決策樹。

4.3 選擇一個有趣的專案或領域

如果你沒有好奇心,你是很難學好的。但目前為止,也許你已經找到了想堅持下去的領域,那麼開始建模吧!

老實說這是機器學習最好的部分了。這是一個強大的工具,而一旦你開始理解,很多想法都會主動找上門。 

好訊息是,如果你一直在跟蹤,也準備好從事這份工作,那麼你的收穫會遠超你的想象! 

我們也推薦了 6 個有趣的機器學習專案。 

地址:https://elitedatascience.com/machine-learning-projects-for-beginners

相關文章