AI 學習路線:從Python開始機器學習

七月線上實驗室發表於2018-04-02

從無人駕駛汽車到股市預測,再到線上學習,機器學習通過預測來進行自我提高的方法幾乎被用在了每一個領域。由於機器學習的實際運用,目前它已經成為就業市場上最有需求的技能之一。如果你也想學習紅遍全球的機器學習,這篇文章正是為你而準備的。


使用 Python 來開始機器學習很簡單,因為有大量的線上資源,以及許多可用的 Python 機器學習庫。640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

值得知道的Python程式庫

Scikit-learn

你剛開始學機器學習嗎?如果你需要一個涵蓋了特徵工程,模型訓練和模型測試所有功能的程式庫,scikit-learn是你的最佳選擇!這個優秀的免費軟體提供了機器學習和資料探勘所需要的所有工具。它是目前Python機器學習的標準庫。要使用任何成熟的機器學習演算法都推薦使用這個庫。

這個程式庫支援分類和迴歸,實現了基本所有的經典演算法(支援向量機,隨機森林,樸素貝葉斯等等)。程式庫的設計讓遷移演算法十分容易,使用不同的演算法做實驗非常輕鬆。這些經典演算法可用性很強,能用於大量不同的情況。

但這並不是Scikit-learn的全部功能,它同樣可以用來做降維,聚類等等任何你所能想到的。由於它構建在Numpy和Scipy之上(所有的數值計算都是由C語言來完成的),它的執行速度也超快。

這些例子可以告訴你這個庫的功能,如果你想學習如何使用它,可以閱讀教程。

NLTK

NLTK不算是一個機器學習的程式庫,但它是做自然語言處理(NLP)必須的一個庫。除了用於文書處理的功能,例如聚類,分詞,詞幹提取,標記,解析等,它還包含了大量的資料集和其他關於詞法的資源(可用於模型訓練)。

把所有這些打包在一起的好處就不用再多說了。如果你對NLP感興趣,可以看看這些教程!

Theano

Theano被廣泛應用於工業界和學術界,它是所有深度學習架構的鼻祖。Theano是用Python,結合Numpy實現的。你可以用它來構建用多維陣列實現神經網路。Theano會處理所有數學計算,你不需要知道底層的數學公式實現。

早在支援使用GPU進行計算不像今天這樣普及的時候,Theano就已經提供了對GPU計算的支援。這個程式庫目前已經非常成熟,能夠支援很多不同型別的操作。這使得Theano可以在和其他庫比較的時候勝出。

目前關於Theano最大的問題是API不是很好用,對於新手來說上手困難。不過市面上已經有了解決這個問題的封裝包,比如Keras, Blocks 和 Lasagne,都可以簡化Theano的使用。

TensorFlow

谷歌大腦團隊為了內部使用創造了TensorFlow,2015年將其開源化。設計初衷是取代他們已有的封閉機器學習框架DistBelief,據說該構架太過於依賴Google的整體構架,也不夠靈活,在分享程式碼的時候非常不方便。

於是就有了TensorFlow。谷歌從以前的錯誤中吸取了教訓。許多人認為TensorFlow是Theano的改進版,它提供了更靈活和好用的API。可以用於科研和工業界,同時支援使用大量的GPU進行模型訓練。TensorFlow支援的操作沒有Theano多,但是它的計算視覺化比Theano好。

TensorFlow目前非常流行。如果今天這篇文章裡面提到的名字你只聽說了一個,那很有可能是這個。每天都有新的提到TensorFlow的博文或學術文章發表。這個流行度提供了大量的使用者和教程,新人很容易上手。

Keras

Keras是一個提供更高層神經網路API的庫,它可以基於Theano或者TensorFlow。它擁有這兩個庫強大的功能卻又同時大大地簡化了使用難度。它將使用者的體驗放在首要地位,提供簡單的API和很有用的錯誤資訊。

同時Keras的設計基於模組,這就使得你能自由組合不同的模型(神經層,成本函式等等),而且模型的可擴充套件性很好,因為你只需要簡單的將新模組跟已有的連起來即可。

有人覺得Keras太好用了,簡直就是在作弊。如果你開始用深度學習,可以看看例子 和 文件,對於你可以用它做什麼有個數。如果你要學習使用它,可以從 這個教程開始。

兩個類似的庫有Lasagne 和 Blocks, 但它們只支援Theano。如果你試過了Keras但是你不喜歡它你可以試試這些其他的庫,也許它們更適合你。

PyTorch

還有一個有名的深度學習架構是Torch,它是用Lua實現的。Facebook用Python實現了Torch,叫做PyTorch,並將它開源了。用這個庫你可以使用Torch使用的低層的庫,但是你可以使用Python而不是Lua。

PyTorch對查錯的支援很好,這是因為Theano和TensorFlow使用符號計算而PyTorch則不是。使用符號計算就表明在一行程式碼被解釋的時候,一個操作(x+y)並不會被執行,在那之前,它必須先被編譯(解釋成CUDA或者C語言)。這就讓用Theano和TensorFlow的時候很難查錯,因為很難把報錯跟當前的程式碼聯絡起來。這樣做有它的好處,不過查錯簡單不在其中。

如果你想開始學PyTorch,官方文件適合初學者也會包含有難度的內容。

機器學習的第一步?

你講了這麼多機器學習的包,我應該用哪一個?我怎樣比較它們?我從哪裡開始?

如果你完全沒有接觸過機器學習,從scikit-learn開始。你可以瞭解標記,訓練和測試是怎樣工作的,以及一個模型是如何被建立的。

如果你想試試深度學習,從 Keras開始,畢竟這是大家公認的最簡單的框架。你可以先試試,找找感覺。當你有點經驗之後,你可以開始考慮你最需要的是什麼:速度,不同的API,或者別的什麼,之後你就能更好地決定了。

目前有海量的文章比較Theano,Torch和TensorFlow。沒有人能說哪個最好。你要記住的是所有包都支援很多東西,而且也在不斷改進,想相互比較它們也越來越難。六個月前的標準有可能已經過時了,一年前的評價說框架X沒有Y功能也不一定還有效。

結語

這篇關於用Python庫做機器學習的簡介就到此為止。我想強調的是不要被細節嚇住了,放手嘗試。讓你的好奇心指導你前進,不要害怕進行不同的實驗。

想學習更多?

七月線上為你準備了一門非常系統的機器學習課程。課程採用線上+線下授課模式,BAT專家面對面、手把手教學;除直播答疑、作業批改、線上考試之外,特地增加開課前的入學測評,基於每一個人的測評資料量身定製個性化的不同學習路線北京、上海、深圳、廣州、杭州、瀋陽、濟南、鄭州八城同步開營。

除了為你提供一條清晰的學習路徑,更有10個工業專案實戰輔導 + 一對一面試求職輔導,真正幫你從零轉型機器學習工程師!

掃描下方二維碼撩課

640?wx_fmt=png

相關文章