
來源 | 云頭條
想大膽嘗試機(jī)器學(xué)習(xí)?這些工具可以為你處理繁重的任務(wù)。
駕馭機(jī)器學(xué)習(xí)的13種框架
在去年,機(jī)器學(xué)習(xí)以前所未有的勢頭進(jìn)入主流。對這股潮流起到推波助瀾的不單單是成本低廉的云環(huán)境和功能更強(qiáng)大的GPU硬件,還有如今面向機(jī)器學(xué)習(xí)的數(shù)量激增的框架。它們都是開源框架,而更重要的是,它們旨在化解機(jī)器學(xué)習(xí)最難的部分,將其技術(shù)或方法提供給廣泛的開發(fā)人員。
本文介紹了13種機(jī)器學(xué)習(xí)框架,有的在去年剛出爐,有的剛修訂。它們引起了我們的注意,因?yàn)槎际窃贗T界具有重要影響力的產(chǎn)品,有的試圖帶來一種簡化的解決辦法,有的旨在攻克與機(jī)器學(xué)習(xí)有關(guān)的某個(gè)難題。
Apache Spark MLlib
Apache Spark最廣為人知的角色就是它是Hadoop家族的一員,但這種內(nèi)存數(shù)據(jù)處理框架脫胎于Hadoop之外,而且在Hadoop生態(tài)系統(tǒng)外面揚(yáng)名立萬。Spark已成為一款可靠的機(jī)器學(xué)習(xí)工具,這歸功于其日益龐大的算法庫,其算法可以高速運(yùn)用于內(nèi)存中數(shù)據(jù)。
Spark沒有坐以待斃,因?yàn)镾park擁有的算法一直在不斷增加和修訂。去年的1.5版本增添了許多新的算法,改進(jìn)了現(xiàn)有的算法,并進(jìn)一步增強(qiáng)了Python中對MLlib的支持,而Python是面向數(shù)學(xué)運(yùn)算和統(tǒng)計(jì)用戶的一大平臺。除了其他功能外,剛發(fā)布的Spark 1.6還讓用戶可以通過持久化流水線(persistent pipeline),暫停和恢復(fù)Spark ML任務(wù)。
Apache Singa
“深度學(xué)習(xí)”框架支持處理繁重任務(wù)的機(jī)器學(xué)習(xí)功能,比如自然語言處理和圖像識別。Singa最近得到接受、進(jìn)入Apache孵化器(Apache Incubator),這種開源框架旨在讓用戶很容易訓(xùn)練針對大量數(shù)據(jù)的深度學(xué)習(xí)模型。
Singa提供了一種簡單的編程模型,用于訓(xùn)練跨機(jī)器集群的深度學(xué)習(xí)網(wǎng)絡(luò),它還支持許多常見類型的訓(xùn)練任務(wù):卷積神經(jīng)網(wǎng)絡(luò)、受限玻爾茲曼機(jī)和遞歸神經(jīng)網(wǎng)絡(luò)。模型可以同步訓(xùn)練(逐個(gè)訓(xùn)練),也可以異步訓(xùn)練(并行訓(xùn)練),這取決于哪種方法最適用于某個(gè)問題。Singa還利用Apache Zookeeper簡化了集群構(gòu)建和設(shè)置。
Caffe
深度學(xué)習(xí)框架Caffe“在開發(fā)當(dāng)初牢記表達(dá)、速度和模塊化”。Caffe在2013年為機(jī)器視覺項(xiàng)目而開發(fā),此后擴(kuò)大到了其他應(yīng)用領(lǐng)域,比如語音和多媒體。
速度是一大優(yōu)先事項(xiàng),于是Caffe完全用C++編寫,并支持CUDA加速,不過它可以根據(jù)需要在CPU處理和GPU處理之間進(jìn)行切換。發(fā)行版包括一套面向常見分類任務(wù)的免費(fèi)開源參考模型,其他模型則由Caffe用戶社區(qū)開發(fā)和捐獻(xiàn)。
微軟Azure ML Studio
考慮到執(zhí)行機(jī)器學(xué)習(xí)需要大量的數(shù)據(jù)和強(qiáng)大的計(jì)算能力,云是機(jī)器學(xué)習(xí)應(yīng)用的理想環(huán)境。微軟為Azure配備了自己的按需付費(fèi)的機(jī)器學(xué)習(xí)服務(wù):Azure ML Studio,分為按月付費(fèi)、按小時(shí)付費(fèi)和免費(fèi)套餐這三種版本。(該公司的HowOldRobot項(xiàng)目就是用這個(gè)系統(tǒng)構(gòu)建的。)
Azure ML Studio讓用戶可以創(chuàng)建和訓(xùn)練模型,然后將它們變成可以被其他服務(wù)使用的API。用戶可以為模型數(shù)據(jù)獲得每個(gè)帳戶最多10GB的存儲(chǔ)空間,不過你也可以將自己的Azure存儲(chǔ)空間連接到該服務(wù),以處理更龐大的模型。一系列廣泛的算法可供使用,這要感謝微軟和第三方。你甚至不需要帳戶就可以試用該服務(wù);匿名登錄后,就可以使用Azure ML Studio長達(dá)8個(gè)小時(shí)。
亞馬遜機(jī)器學(xué)習(xí)
亞馬遜對云服務(wù)采用的一般方法遵循這種模式:提供基本服務(wù),培育關(guān)注它的核心受眾,讓他們在上面構(gòu)建,然后找到他們真正需要的東西,并提供這種東西。
亞馬遜首次嘗試提供機(jī)器學(xué)習(xí)即服務(wù):亞馬遜機(jī)器學(xué)習(xí)(Amazon Machine Learning)也是如此。它連接到存儲(chǔ)在亞馬遜S、Redshift或RDS中的數(shù)據(jù),可以對相關(guān)數(shù)據(jù)執(zhí)行二元分類、多類分類或遞歸等操作。然而,這項(xiàng)服務(wù)完全以亞馬遜為中心。除了依賴存儲(chǔ)在亞馬遜上的數(shù)據(jù)外,因而生成的模型無法導(dǎo)入或?qū)С?,?xùn)練模型的數(shù)據(jù)集不得大于100GB。不過,它僅僅是個(gè)開始,表明了它更注重機(jī)器學(xué)習(xí)的實(shí)用性,而不是便利性。
微軟分布式機(jī)器學(xué)習(xí)工具包
用來處理任何機(jī)器學(xué)習(xí)問題的計(jì)算機(jī)部署得越多,效果越好,但是將機(jī)器結(jié)合起來、開發(fā)可以跨所有機(jī)器順暢運(yùn)行的機(jī)器學(xué)習(xí)應(yīng)用程序可能很棘手。微軟的DMTK(分布式機(jī)器學(xué)習(xí)工具包)框架就專門處理這個(gè)問題:跨系統(tǒng)集群分配各種各樣的機(jī)器學(xué)習(xí)任務(wù)。
DMTK號稱是一種框架,而不是一種完備的即開即用的解決方案,所以它自帶的實(shí)際算法數(shù)量很少。不過DMTK的設(shè)計(jì)便于將來擴(kuò)展,而且便于用戶最充分地利用資源有限的集群。比如說,集群中的每個(gè)節(jié)點(diǎn)都有本地緩存,減少了與中央服務(wù)器節(jié)點(diǎn)之間的通信量,而中央服務(wù)器節(jié)點(diǎn)為相應(yīng)任務(wù)規(guī)定了范圍。
谷歌TensorFlow
谷歌TensorFlow酷似微軟的DMTK,這種機(jī)器學(xué)習(xí)框架旨在跨多個(gè)節(jié)點(diǎn)靈活擴(kuò)展。與谷歌的Kubernetes一樣,它當(dāng)初也是旨在解決谷歌內(nèi)部的問題,谷歌最終決定將它作為一款開源產(chǎn)品來發(fā)布。
TensorFlow實(shí)施了所謂的數(shù)據(jù)流圖(data flow graph),其中成批數(shù)據(jù)(“tensor”)可以由數(shù)據(jù)流圖描述的一系列算法來加以處理。數(shù)據(jù)在系統(tǒng)中的移動(dòng)被稱為“流”(flow)――TensorFlow由此得名。數(shù)據(jù)流圖可以用C++或Python來裝配,可以在CPU或GPU上進(jìn)行處理。谷歌的長期計(jì)劃是,讓第三方貢獻(xiàn)者來完善TensorFlow。
微軟計(jì)算網(wǎng)絡(luò)工具包
微軟發(fā)布DMTK不久,緊隨其后發(fā)布了另一款機(jī)器學(xué)習(xí)工具包:計(jì)算網(wǎng)絡(luò)工具包(Computational Network Toolkit,簡稱CNTK)。
CNTK類似谷歌TensorFlow,因?yàn)樗層脩艨梢酝ㄟ^有向圖來構(gòu)建神經(jīng)網(wǎng)絡(luò)。微軟還認(rèn)為它與Caffe、Theano和Torch等項(xiàng)目相媲美。它聲稱相比那些框架的優(yōu)點(diǎn)主要在于速度快,具體來說是能夠同時(shí)充分利用多個(gè)CPU和多個(gè)GPU。微軟聲稱,使用CNTK,并結(jié)合Azure上的GPU集群,將Cortana的語音識別訓(xùn)練的速度提升了一個(gè)數(shù)量級。
CNTK最初作為微軟的語音識別研究項(xiàng)目的一部分而開發(fā),早在2015年4月起初作為一個(gè)開源項(xiàng)目來提供,不過后來重新發(fā)布到GitHub上,采用了一種極其寬松的、類似MIT許可證的許可證。
Veles(三星)
Veles是一種面向深度學(xué)習(xí)應(yīng)用的分布式平臺;與TensorFlow和DMTK一樣,它也用C++編寫,不過使用Python來執(zhí)行自動(dòng)化和節(jié)點(diǎn)之間的協(xié)調(diào)。數(shù)據(jù)集加以分析、自動(dòng)規(guī)范后被饋送到集群,REST API讓受過訓(xùn)練的模型可以立即用在生產(chǎn)環(huán)境中(假設(shè)你的硬件足夠好)。
Veles使用Python并不局限于僅僅將它用作粘合代碼(glue code)。IPython(現(xiàn)在的Jupyter)這種數(shù)據(jù)可視化和分析工具,可以直觀顯示和發(fā)布來自Veles集群的結(jié)果。三星希望,發(fā)布開源Veles項(xiàng)目有望促進(jìn)進(jìn)一步的發(fā)展,比如移植到Windows和Mac OS X。
Brainstorm
Brainstorm由瑞士盧加諾的Dalle Molle人工智能研究所(IDSIA)的兩名博士生Klaus Greff和Rupesh Srivastava開發(fā)而成,該項(xiàng)目的目的是“讓深度神經(jīng)網(wǎng)絡(luò)快速、靈活而有趣”。已經(jīng)包括了支持眾多遞歸神經(jīng)網(wǎng)絡(luò)模型(比如LSTM)的功能。
Brainstorm使用Python提供兩個(gè)“hander”,即數(shù)據(jù)管理API :一個(gè)用于Numpy的CPU運(yùn)算,另一個(gè)通過CUDA利用GPU。大部分工作通過Python腳本來完成,所以別指望有一個(gè)豐富的前端GUI,只有你給自己提供的那個(gè)GUI。但長遠(yuǎn)計(jì)劃是開發(fā)這種構(gòu)架:可以運(yùn)用“從早期開源項(xiàng)目汲取的經(jīng)驗(yàn)”,并使用“與多種平臺和計(jì)算后端兼容的新的設(shè)計(jì)元素”。
mlpack 2
我們之前匯總的機(jī)器學(xué)習(xí)資源提到了mlpack,這種基于C ++的機(jī)器學(xué)習(xí)庫最早于2011年推出,設(shè)計(jì)當(dāng)初著眼于“可擴(kuò)展性、速度和易用性”,據(jù)庫的開發(fā)者聲稱。實(shí)施mlpack有兩種方法:通過處理簡易的“黑盒子”操作的命令行執(zhí)行文件緩存,或者借助處理較復(fù)雜工作的C ++ API。
2.0版本有很多重構(gòu)和新功能,包括許多新類型的算法,并對現(xiàn)有算法做了改變,以便提速或簡化。比如說,它丟棄了Boost庫面向C++ 11的原生隨機(jī)函數(shù)的隨機(jī)數(shù)發(fā)生器。
一個(gè)長期存在的缺點(diǎn)是,缺少針對除C++之外的任何語言的綁定,這意味著使用從R到Python各種語言的用戶無法使用mlpack,除非有人為上述語言推出了自己的包裝器。已開展了工作,添加支持MATLAB的功能,但是像這樣的項(xiàng)目在處理機(jī)器學(xué)習(xí)工作的主要環(huán)境下徑直發(fā)揮作用,才往往會(huì)受到更大的追捧。
Marvin
Marvin神經(jīng)網(wǎng)絡(luò)框架是另一種比較新的框架,它是普林斯頓視覺小組(Princeton Vision Group)的杰作。它“生來就是為了被改動(dòng)的”,開發(fā)者在項(xiàng)目的說明文檔中這么解釋,它只依賴用C++和CUDA GPU框架編寫的幾個(gè)文件。盡管代碼本身有意很小,但項(xiàng)目確實(shí)隨帶許多預(yù)先訓(xùn)練的模型:只要適當(dāng)引用,可以重復(fù)使用這些模型,使用合并請求(pull request)貢獻(xiàn)給社區(qū),就像該項(xiàng)目的自家代碼那樣。
Neon
Nervana這家公司開發(fā)了自己的深度學(xué)習(xí)硬件和軟件平臺,它提供了一種名為Neon的深度學(xué)習(xí)框架,將其作為一個(gè)開源項(xiàng)目。它使用可插入式模塊,以便在CPU、GPU和Nervana自己的定制硬件上處理繁重任務(wù)。
Neon主要是用Python編寫的,有幾個(gè)組件用C++編寫,以求速度。這樣一來,用Python處理數(shù)據(jù)科學(xué)工作的其他人可以立即用它,擁有Python綁定的其他任何框架也可以立即用它。
end
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動(dòng)態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價(jià)值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時(shí),“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請求開發(fā)時(shí)(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價(jià)值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點(diǎn)數(shù)據(jù)時(shí)的科學(xué)計(jì)數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價(jià)值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營問題、提升執(zhí)行效率的核心手段,其價(jià)值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動(dòng)下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當(dāng)下,精準(zhǔn)營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價(jià)值 在數(shù)據(jù)驅(qū)動(dòng)決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實(shí)踐到業(yè)務(wù)價(jià)值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價(jià)值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10CDA 數(shù)據(jù)分析師:商業(yè)數(shù)據(jù)分析實(shí)踐的落地者與價(jià)值創(chuàng)造者 商業(yè)數(shù)據(jù)分析的價(jià)值,最終要在 “實(shí)踐” 中體現(xiàn) —— 脫離業(yè)務(wù)場景的分 ...
2025-09-10