盤點四大民間機器學習開源框架:Theano、Caffe、Torch 和 SciKit-learn

 2017-01-03 22:14:00.0

在上期的谷歌、微軟、OpenAI 等巨頭的七大機器學習開源項目 看這篇就夠了,我們盤點了 TensorFlow,CNTK,SystemML,DeepMind Lab 等各大互聯網巨頭的開源平臺。本期,雷鋒網將帶領大家來看看誕生於民間(學界)的另外四大開源項目:

1. Theano

盤點四大民間機器學習開源框架:Theano、Caffe、Torch 和 SciKit-learn

Theano 在深度學習框架中是祖師級的存在。它的開發始於 2007,早期開發者包括傳奇人物 Yoshua Bengio 和 Ian Goodfellow。

Theano 基於 Python,是一個擅長處理多維數組的庫(這方面它類似於 NumPy)。當與其他深度學習庫結合起來,它十分適合數據探索。它爲執行深度學習中大規模神經網絡算法的運算所設計。其實,它可以被更好地理解爲一個數學表達式的編譯器:用符號式語言定義你想要的結果,該框架會對你的程序進行編譯,來高效運行於 GPU 或 CPU。

它與後來出現的 Tensorflow 功能十分相似(或者應該說,Tensorflow 類似 Theano ),因而兩者常常被放在一起比較。它們本身都偏底層,同樣的,Theano 像是一個研究平臺多過是一個深度學習庫。你需要從底層開始做許多工作,來創建你需要的模型。比方說,Theano 沒有神經網絡的分級。

但隨着這些年的發展,大量基於 Theano 的開源深度學習庫被開發出來,包括 Keras, Lasagne 和 Blocks。這些更高層級的 wrapper API,能大幅減少開發時間以及過程中的麻煩。甚至,據雷鋒網(公衆號:雷鋒網)所知,很少開發者會使用「裸奔」的 Theano,多數人需要輔助的 API。順便說一句,Theano 是一整套生態系統,別隻用它裸奔,然後抱怨不好用。

在過去的很長一段時間內,Theano 是深度學習開發與研究的行業標準。而且,由於出身學界,它最初是爲學術研究而設計,這導致深度學習領域的許多學者至今仍在使用 Theano。但隨着 Tensorflow 在谷歌的支持下強勢崛起,Theano 日漸式微,使用的人越來越少。這過程中的標誌性事件是:創始者之一的 Ian Goodfellow 放棄 Theano 轉去谷歌開發 Tensorflow。

因此,資深一些的開發者往往認爲,對於深度學習新手,用Theano 練練手並沒有任何壞處。但對於職業開發者,還是建議用 Tensorflow。

優點:

  • Python + NumPy 的組合

  • 使用計算圖

  • RNN 與計算圖兼容良好

  • 有 Keras 和 Lasagne 這樣高層的庫

  • 不少開發者反映,它的學習門檻比Tensorflow 低

缺點:

  • 本身很底層

  • 比 Torch 臃腫

  • 不支持分佈式

  • 有的錯誤信息沒什麼用

  • 大模型的編譯時間有時要很久

  • 對事先訓練過的模型支持不足

  • 用的人越來越少

2. Caffe

盤點四大民間機器學習開源框架:Theano、Caffe、Torch 和 SciKit-learn

這又是一個祖師級的深度學習框架,2013 年就已問世。

它的全稱是 「Convolution Architecture For Feature Extraction」,意爲「用於特徵提取的卷積架構」,很明白地體現了它的用途。Caffe 的創始人,是加州大學伯克利分校的中國籍博士生賈揚清。當時賈在伯克利計算機視覺與學習中心做研究。博士畢業後,他先後在谷歌和 Facebook 工作。

在 AI 開發者圈子中,Caffe 可以說是無人不知、無人不曉。據 GitHub 最新的機器學習項目熱度排名,Caffe 僅位列 Tensorflow 之後,雄踞第二。它是一個被廣泛使用的機器視覺庫,把 Matlab 執行快速卷積網絡的方式帶到 C 和 C++。雖然 Caffe 被部分開發者看做是通用框架,但它的設計初衷是計算機視覺——並不適於其他深度學習應用,比如文字、語音識別和處理時間序列數據。

Caffe 的主要用途:利用卷積神經網絡進行圖像分類。這方面它代表了業內一流水平,是開發者的首選。

說到 Caffe,就不得不提 Model Zoo。後者是在 Caffe 基礎上開發出的一系列模型的匯聚之地。因此,開發者使用 Caffe 最大的好處是:能在 Model Zoo 海量的、事先訓練好的神經網絡中,選擇貼近自己使用需求的直接下載,並立刻就能用。

就雷鋒網所知,這些模型中有很多是世界一流的。有很多它們的教程:

  • Alex’s CIFAR-10 tutorial with Caffe

  • Training LeNet on MNIST with Caffe

  • ImageNet with Caffe

業內人士普遍認爲,Caffe 適合於以實現基礎算法爲主要目的的工業應用,有利於快速開發。但對於處理較特殊的任務,它存在靈活性不足的問題——爲模型做調整常常需要用 C++ 和 CUDA,雖然 Python 和 Matlab 也能做些小調整。

優點:

非常適合前饋神經網絡和圖像處理任務

非常適於利用現有神經網絡

不寫代碼也能訓練模型

Python 交互界面做得不錯

缺點:

需要 C++ 和 CUDA 來編寫新 GPU 層級。

在遞歸神經網絡上表現不佳

對於大型神經網絡,它十分繁瑣(GoogLeNet, ResNet)

沒有商業支持

3. Torch

盤點四大民間機器學習開源框架:Theano、Caffe、Torch 和 SciKit-learn

相比其他開源框架,Torch 是一個非主流。

沒錯,說的就是它的開發語言:基於1990 年代誕生於巴西的 Lua,而非機器學習界廣泛採用的 Python。其實 Lua 和Python 都屬於比較容易入門的語言。但後者明顯已經統治了機器學習領域,尤其在學界。而企業界的軟件工程師最熟悉的是 Java,對 Lua 也比較陌生。這導致了 Torch 推廣的困難。因此,雖然 Torch 功能強大,但並不是大衆開發者的菜。

那麼它強大在哪裏?

  • 首先,Torch 非常適用於卷積神經網絡。它的開發者認爲,Torch 的原生交互界面比其他框架用起來更自然、更得心應手。

  • 其次,第三方的擴展工具包提供了豐富的遞歸神經網絡( RNN)模型。

因爲這些強項,許多互聯網巨頭開發了定製版的 Torch,以助力他們的 AI 研究。這其中包括 Facebook、Twitter,和被谷歌招安前的 DeepMind。

與 Caffe 相比,在 Torch 裏定義一個新層級比它要容易,因爲你不需要寫  C++ 代碼。和 TensorFlow 和 Theano 比起來,Torch 的靈活度更高,因爲它是命令式的;而前兩者是陳述式的(declarative),你必須 declare 一個計算圖。這使得在 Torch 上進行束搜索(beam search)這樣的操作要比它們容易得多。

Torch 的熱門應用:在增強學習領域,用卷積神經網絡和代理處理圖像問題。

興趣主要在增強學習的開發者, Torch 是首選。

優點:

  • 靈活度很高

  • 高度模塊化

  • 容易編寫你自己的層級

  • 有很多訓練好的模型

缺點:

  • 需要學  Lua

  • 通常需要自己寫訓練代碼

  • 不適於循環神經網絡

  • 沒有商業支持

4. SciKit-learn

盤點四大民間機器學習開源框架:Theano、Caffe、Torch 和 SciKit-learn

SciKit-learn 是老牌的開源 Python 算法框架,始於 2007 年的 Google Summer of Code 項目,最初由 David Cournapeau 開發。

它是一個簡潔、高效的算法庫,提供一系列的監督學習和無監督學習的算法,以用於數據挖掘和數據分析。SciKit-learn 幾乎覆蓋了機器學習的所有主流算法,這爲其在 Python 開源世界中奠定了江湖地位。

它的算法庫建立在 SciPy (Scientific Python) 之上——你必須先安裝 SciPy 才能使用 SciKit-learn 。它的框架中一共包括了:

  • NumPy: 基礎的多維數組包

  • SciPy: 科學計算的基礎庫

  • Matplotlib: 全面的 2D/3D 測繪

  • IPython: 改進的交互控制器

  • Sympy: 符號數學

  • Pandas:數據結構和分析

它命名的由來:SciPy 的擴展和模塊在傳統上被命名爲 SciKits。而提供學習算法的模組就被命名爲 scikit-learn。

它與 Python 世界另一大算法框架——TensorFlow 的主要區別是TensorFlow 更底層。而 SciKit-learn 提供了執行機器學習算法的模塊化方案,很多算法模型直接就能用。

優點:

  • 經過篩選的、高質量的模型

  • 覆蓋了大多數機器學習任務

  • 可擴展至較大的數據規模

  • 使用簡單

缺點:

  • 靈活性低

5. MXNet

提到出身學界的開源框架,就不得不提 MXNet。不過,因爲亞馬遜已將其作爲御用平臺,因而上期的盤點(谷歌、微軟、OpenAI 等巨頭的七大機器學習開源項目 看這篇就夠了)中已經對其作了介紹。有興趣的讀者請戳鏈接。

【兼職召集令!】

如果你對未來充滿憧憬,喜歡探索改變世界的科技進展,look no further!

我們需要這樣的你:

精通英語,對技術與產品感興趣,關注人工智能學術動態的蘿莉&萌妹子&技術宅;

文字不求妙筆生花,但希望通俗易懂;

在這裏,你會收穫:

一羣來自天南地北、志同道合的小夥伴;

前沿學術科技動態,每天爲自己充充電;

更高的生活品質,翻翻文章就能掙到零花錢;

有意向的小夥伴們把個人介紹/簡歷發至 guoyixin@leiphone.com,如有作品,歡迎一併附上。

盤點四大民間機器學習開源框架:Theano、Caffe、Torch 和 SciKit-learn

文章來源:雷鋒網