摘要: 機器學習的快速發展,使得市面上出現了不少開源框架,到底如何選擇正確的框架呢?今天咱們就來談一談。python
開源是創新和科技快速發展的核心。在此,咱們將討論如何針對不一樣的用例選取開源的機器學習工具。儘管機器學習還處於早期發展階段,但從醫療、安全到個性化營銷,這種潛在的價值使得公司將機器學習做爲一種機會。算法
使用開源工具的好處不只僅在於其可用性。一般來講,如此級別的項目均有大量的數據工程師和數據科學家願意去分享數據集和前期訓練模型。好比,你可使用分類模型訓練來自於ImageNet的數據,而非利用scratch創建圖形感知。開源的機器學習工具還可以讓你進行遷移學習,這意味着能夠經過運用其餘方面的知識解決機器學習的問題。因此,你能夠把一些能力造成一種模型,這些模型能夠學會識別汽車或者可以幫助咱們完成其餘的任務。數組
根據你所須要處理的問題,預先訓練的模型和開放的數據集可能並不會像定製的那樣準確,但開源框架不須要你收集數據集,這可以爲你節省大量的時間和精力。根據前百度首席數據科學家、斯坦福大學教授Andrew Ng所說,使用開源模型和數據集將會成爲繼監督學習後驅動商業成功的第二大動因。安全
在衆多活躍但不那麼流行的開源工具中,咱們將選取5個進行深度探討,以便幫助你找到適合你的一款工具而且開始你的數據科學探索道路。接下來,咱們進入正題。網絡
TensorFlow最初是僅供Google內部使用的,2015年在Apache 2.0 源碼開始開源發佈。Google的聲譽和構建模型時出色的流程圖吸引了一大羣的TensorFlow擁護者。框架
TensorFlow對於深度神經網絡研究和複雜的數學計算來講都是一個很好的python工具,它甚至可以支持強化學習。TensorFlow的獨特之處還在於數據流圖-結構,包含節點(數學運算)和邊緣(數值數組或張量)。機器學習
1.1數據集和模型工具
TensorFlow的靈活之處體如今基於它進行研究或者重複機器學習任務的可能性。所以,你可使用名爲TensorFlow Core的低級API。你能夠經過它控制模型而且使用你本身的數據集對它們進行訓練。但也有公共的預訓練模型,用於在TensorFlow Core之上構建更高級的API。你可使用的目前比較流行的模式有MNIST,一個幫助識別圖片上的手寫數字的傳統數據集,或者Medicare Data,一個來自於Google幫助預測醫療服務收費的數據集。性能
1.2受衆及學習曲線學習
對於第一次探索機器學習的人來講,TensorFlow功能的多樣化會顯得有些複雜。一些人甚至認爲,該庫並未加速機器學習的學習曲線,反而讓其更加陡峭。TensorFlow是一種級別較低的庫,但它須要編寫大量的代碼以及對數據科學細節的良好理解,這才能更好的使用其進行項目開發。所以,若是你的數據科學團隊是以IT爲中心的,那麼它或許不是你的最佳選擇,咱們將會討論更加簡單的替換方案。
1.3用例
考慮到TensorFlow的複雜性,其用例主要包含大型公司的解決方案,這些公司擁有機器學習領域的專家。例如,英國在線超市Ocado運用TensorFlow來優先處理他們聯繫中心的有限,並改善了需求預測。同時,全球保險公司Axa使用該庫預測他們的用戶將可能涉及的大型汽車事故。
Theano是一種級別較低的庫,它基於Python語言,用於科學計算,而且其一般將定義、優化、求值數學表達式做爲深度學習的目標。儘管它具備很是優秀的計算性能,但其複雜性仍是讓不少用戶沒法進行。基於這個緣由,Theano主要被用於底層的包裝器,例如Keras,Lasagne以及Blocks這三種旨在快速原型化和模型測試的高級別框架。
2.1數據集及模型
Theano有公共模型,可是使用率較高的框架都有大量的教程和與訓練的數據集可供選擇。例如,Keras在其文檔中存儲了可用的模型以及詳細的使用教程。
2.2受衆及學習曲線
若是你使用Lasagne或Keras做爲頂部的高級包裝器,你將有大量的教程和預先訓練的數據集。此外,Keras被認爲是最容易從早期深度學習探索階段開始的庫。
因爲TensorFlow的設計是爲了取代Theano,讓它失去了大量的粉絲。可是,許多數據科學家發現,有不少優點足以讓他們使用過期的版本。
2.3用例
考慮到深度學習研究和發展的工業標準,Theano最初是用來對最爲前沿的深度學習算法做爲補充。然而,考慮到你也許並不會直接使用Theano,你能夠將其衆多功能做爲使用其餘庫的基礎如:數字及圖片識別,對象本地化,甚至與機器人聊天。
Torch常被稱爲初學者最簡單的深度學習工具。由於它是簡單的腳本語言,Lua開發的。儘管使用這個語言的人比Python要少,它仍被普遍採用——Facebook,Google以及Twitter。
3.1數據集及模型
你能夠在其GitHub cheatsheet頁面上找到要加載的流行數據集列表。此外,Facebook還發布了一個官方代碼,用於深度剩餘網絡(ResNets)的實現,並使用預先訓練的模型來對本身的數據集進行微調。
3.2受衆及學習曲線
市場中使用Lua語言的工程師人數遠少於Python。然而,Torch語法中反映出Lua更易閱讀。活躍的Torch貢獻者們喜歡Lua,因此這對於初學者和那些但願擴展其工具集的人來講是一個極棒的選擇。
3.3用例
Facebook使用Torch建立了DeepText,它可以以每分鐘爲單位將用戶分享在網站的信息分類,而且提供更個性化的內容定位。Twitter在Torch的支持下,已經可以推薦基於算法時間線的推文(而非按時間逆序)。
Scikit-learn是一個高層級的框架,用於監督和無監督的機器學習算法。做爲Python生態系統中的組成部分,它構建在NumPy及SciPy庫之上,每一個庫都負責較低層級的數據科學任務。然而,當NumPy處理數值計算時,SciPy庫包含更具體的數值流程,例如優化和插值。隨後,scikit-learn被用於機器學習,在Python生態系統中,這三種工具與其它工具之間的關係反映了數據科學領域中不一樣層級:層級越高,能解決的問題就更加具體。
4.1數據集和模型
該庫已經包含了一些分類以及迴歸的標準數據集,儘管它們不能盡然表明真實狀況。然而,用於衡量疾病發展的糖尿病數據集或者用於模式識別的虹膜職務數據集都能很好的解釋機器學習算法是怎樣在scikit中起做用的。並且,該庫提供了從外部源加載數據集的信息,包括任務的示例生成器,例如多類分類以及分解,同時提供關於流行數據集使用的建議。
4.2受衆及學習曲線
儘管做爲一個強有力的庫,scikit-learn專一於易用性和文檔化。它是一個非專家學者和新手工程師都能操做的工具,由於它使用簡單幷包含大量描述清楚的實例,並能使機器學習算法快速地應用於數據中。根據來自軟件商店AWeber和Yhat的評價,scikit很是適合那些有時間和人力資源限制的項目。
不一樣於爲研究而生的Theano和Torch,Caffe並不適合於文本、聲音或者時間序列數據。Caffe是一個專用的機器學習庫,用於圖像分類。來自Facebook以及最近開源的Caffe2的支持,使得該庫成爲了擁有248名GitHub貢獻者的流行工具。
儘管其因發展緩慢而受到非議,Caffe的繼任者Caffe2經過加強靈活性、失重以及支持移動部署消除了原有技術存在的問題。
5.1數據集和模型
Caffe鼓勵來自工業界和其它用戶所提供的數據集。該團隊培養協做同時連接大量流行的數據集,這些數據集預先由Caffe訓練。該框架最大的優點是模型動物園——即包含有大量的由開發者和研究者建立的預訓練模型,你可使用、結合模型或者僅學習和訓練你本身的模型。
5.2受衆和學習曲線
Caffe團隊聲稱,你能夠跳過學習的部分,使用現有的模型直接開始深度學習的探索。該庫的目標人羣是那些想要第一時間親身體驗深度學習而且承諾推進社區發展的開發人員。
5.3用例
經過使用最早進的卷積神經網絡(CNNs)——深度神經網絡成功應用於視覺圖像分析,甚至是自動駕駛的視覺效果。Caffe幫助Facebook發展它的實時視頻過濾工具,目的是在視頻中應用著名藝術風格。Pinterest同時使用Caffe擴展了視覺搜索功能,並贊成用戶發現圖片中特定的對象。
文章標題《choosing-open-source-machine-learning-library》,
譯者:Elaine,審校:袁虎。