天天看點

盤點四大民間機器學習開源架構

盤點四大民間機器學習開源架構

theano 在深度學習架構中是祖師級的存在。它的開發始于 2007,早期開發者包括傳奇人物 yoshua bengio 和 ian goodfellow。

它與後來出現的 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 臃腫

不支援分布式

有的錯誤資訊沒什麼用

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

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

用的人越來越少

盤點四大民間機器學習開源架構

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

它的全稱是 “convolution architecture for feature extraction”,意為“用于特征提取的卷積架構”,很明白地展現了它的用途。caffe 的創始人,是加州大學伯克利分校的中國籍博士生賈揚清。當時賈在伯克利計算機視覺與學習中心做研究。博士畢業後,他先後在谷歌和 facebook 工作。

在 ai 開發者圈子中,caffe 可以說是無人不知、無人不曉。據 github 最新的機器學習項目熱度排名,caffe 僅位列

tensorflow 之後,雄踞第二。它是一個被廣泛使用的機器視覺庫,把 matlab 執行快速卷積網絡的方式帶到 c 和 c++。雖然

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)

沒有商業支援

<a></a>

盤點四大民間機器學習開源架構

相比其他開源架構,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

通常需要自己寫訓練代碼

不适于循環神經網絡

盤點四大民間機器學習開源架構

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 提供了執行機器學習算法的子產品化方案,很多算法模型直接就能用。

經過篩選的、高品質的模型

覆寫了大多數機器學習任務

可擴充至較大的資料規模

使用簡單

靈活性低

作者:兩味真火

來源:51cto