原創(chuàng)|行業(yè)資訊|編輯:陳俊吉|2017-12-05 10:02:41.000|閱讀 372 次
概述:現(xiàn)在機(jī)器學(xué)習(xí)逐漸成為行業(yè)熱門,經(jīng)過(guò)二十幾年的發(fā)展,機(jī)器學(xué)習(xí)目前也有了十分廣泛的應(yīng)用,如:數(shù)據(jù)挖掘、計(jì)算機(jī)視覺(jué)、自然語(yǔ)言處理、生物特征識(shí)別、搜索引擎、醫(yī)學(xué)診斷、DNA序列測(cè)序、語(yǔ)音和手寫識(shí)別、戰(zhàn)略游戲和機(jī)器人等方面。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
現(xiàn)在逐漸成為行業(yè)熱門,經(jīng)過(guò)二十幾年的發(fā)展,機(jī)器學(xué)習(xí)目前也有了十分廣泛的應(yīng)用,如:、計(jì)算機(jī)視覺(jué)、自然語(yǔ)言處理、生物特征識(shí)別、搜索引擎、醫(yī)學(xué)診斷、DNA序列測(cè)序、語(yǔ)音和手寫識(shí)別、戰(zhàn)略游戲和機(jī)器人等方面。
TensorFlow 是谷歌發(fā)布的第二代機(jī)器學(xué)習(xí)系統(tǒng)。據(jù)谷歌宣稱,在部分基準(zhǔn)測(cè)試中,TensorFlow的處理速度比第一代的DistBelief加快了2倍之多。
具體的講,TensorFlow是一個(gè)利用圖(Data Flow Graphs)進(jìn)行數(shù)值計(jì)算的開源軟件庫(kù):圖中的節(jié)點(diǎn)(Nodes)代表數(shù)學(xué)運(yùn)算操作,同時(shí)圖中的邊(Edges)表示節(jié)點(diǎn)之間相互流通的多維數(shù)組,即張量(Tensors)。這種靈活的架構(gòu)可以讓使用者在多樣化的將計(jì)算部署在臺(tái)式機(jī)、服務(wù)器或者移動(dòng)設(shè)備的一個(gè)或多個(gè)CPU上,而且無(wú)需重寫代碼;同時(shí)任一基于梯度的機(jī)器學(xué)習(xí)算法均可夠借鑒TensorFlow的自動(dòng)分化(Auto-differentiation);此外通過(guò)靈活的Python接口,要在TensorFlow中表達(dá)想法也變得更為簡(jiǎn)單。
TensorFlow最初由Google Brain小組(該小組隸屬于Google’s Machine Intelligence研究機(jī)構(gòu))的研究員和工程師開發(fā)出來(lái)的,開發(fā)目的是用于進(jìn)行和深度神經(jīng)網(wǎng)絡(luò)的研究。但該系統(tǒng)的通用性足以使其廣泛用于其他計(jì)算領(lǐng)域。
目前Google 內(nèi)部已在大量使用 AI 技術(shù),包括 Google App 的語(yǔ)音識(shí)別、Gmail 的自動(dòng)回復(fù)功能、Google Photos 的圖片搜索等都在使用 TensorFlow 。
開發(fā)語(yǔ)言:C++
許可協(xié)議:Apache License 2.0
GitHub項(xiàng)目地址: github.com/tensorflow/…
Scikit-Learn是用于的Python 模塊,它建立在SciPy之上。該項(xiàng)目由David Cournapeau 于2007年創(chuàng)立,當(dāng)時(shí)項(xiàng)目名為Google Summer of Code,自此之后,眾多志愿者都為此做出了貢獻(xiàn)。
主要特點(diǎn):
操作簡(jiǎn)單、高效的數(shù)據(jù)挖掘和數(shù)據(jù)分析
無(wú)訪問(wèn)限制,在任何情況下可重新使用
建立在NumPy、SciPy 和 matplotlib基礎(chǔ)上
Scikit-Learn的基本功能主要被分為六個(gè)部分:分類、回歸、聚類、數(shù)據(jù)降維、模型選擇、數(shù)據(jù)預(yù)處理,具體可以參考官方網(wǎng)站上的文檔。經(jīng)過(guò)測(cè)試,Scikit-Learn可在 Python 2.6、Python 2.7 和 Python 3.5上運(yùn)行。除此之外,它也應(yīng)該可在Python 3.3和Python 3.4上運(yùn)行。
注:Scikit-Learn以前被稱為Scikits.Learn。
開發(fā)語(yǔ)言:Python
許可協(xié)議:3-Clause BSD license
GitHub項(xiàng)目地址: github.com/scikit-lear…
Caffe 是由神經(jīng)網(wǎng)絡(luò)中的表達(dá)式、速度、及模塊化產(chǎn)生的深度學(xué)習(xí)框架。后來(lái)它通過(guò)伯克利視覺(jué)與學(xué)習(xí)中心(BVLC)和社區(qū)參與者的貢獻(xiàn),得以發(fā)展形成了以一個(gè)伯克利主導(dǎo),然后加之Github和Caffe-users郵件所組成的一個(gè)比較松散和自由的社區(qū)。
Caffe是一個(gè)基于C++/CUDA架構(gòu)框架,開發(fā)者能夠利用它自由的組織網(wǎng)絡(luò),目前支持卷積神經(jīng)網(wǎng)絡(luò)和全連接神經(jīng)網(wǎng)絡(luò)(人工神經(jīng)網(wǎng)絡(luò))。在Linux上,C++可以通過(guò)命令行來(lái)操作接口,對(duì)于MATLAB、Python也有專門的接口,運(yùn)算上支持CPU和GPU直接無(wú)縫切換。
Caffe的特點(diǎn):
易用性:Caffe的模型與相應(yīng)優(yōu)化都是以文本形式而非代碼形式給出, Caffe給出了模型的定義、最優(yōu)化設(shè)置以及預(yù)訓(xùn)練的權(quán)重,方便快速使用;
速度快:能夠運(yùn)行最棒的模型與海量的數(shù)據(jù);
Caffe可與cuDNN結(jié)合使用,可用于測(cè)試AlexNet模型,在K40上處理一張圖片只需要1.17ms;
模塊化:便于擴(kuò)展到新的任務(wù)和設(shè)置上;
使用者可通過(guò)Caffe提供的各層類型來(lái)定義自己的模型;
目前Caffe應(yīng)用實(shí)踐主要有數(shù)據(jù)整理、設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu)、訓(xùn)練結(jié)果、基于現(xiàn)有訓(xùn)練模型,使用Caffe直接識(shí)別。
開發(fā)語(yǔ)言:C++
許可協(xié)議: BSD 2-Clause license
GitHub項(xiàng)目地址: github.com/BVLC/caffe
PredictionIO 是面向開發(fā)人員和數(shù)據(jù)科學(xué)家的開源機(jī)器學(xué)習(xí)服務(wù)器。它支持事件采集、算法調(diào)度、評(píng)估,以及經(jīng)由REST APIs的預(yù)測(cè)結(jié)果查詢。使用者可以通過(guò)PredictionIO做一些預(yù)測(cè),比如個(gè)性化推薦、發(fā)現(xiàn)內(nèi)容等。PredictionIO 提供20個(gè)預(yù)設(shè)算法,開發(fā)者可以直接將它們運(yùn)行于自己的數(shù)據(jù)上。幾乎任何應(yīng)用與PredictionIO集成都可以變得更“聰明”。其主要特點(diǎn)如下所示:
基于已有數(shù)據(jù)可預(yù)測(cè)用戶行為;
使用者可選擇你自己的機(jī)器學(xué)習(xí)算法;
無(wú)需擔(dān)心可擴(kuò)展性,擴(kuò)展性好。
PredictionIO 基于 REST API(應(yīng)用程序接口)標(biāo)準(zhǔn),不過(guò)它還包含 Ruby、Python、Scala、Java 等編程語(yǔ)言的 SDK(軟件開發(fā)工具包)。其開發(fā)語(yǔ)言是Scala語(yǔ)言,數(shù)據(jù)庫(kù)方面使用的是MongoDB數(shù)據(jù)庫(kù),計(jì)算系統(tǒng)采用Hadoop系統(tǒng)架構(gòu)。
開發(fā)語(yǔ)言:Scala
許可協(xié)議: Apache License 2.0
GitHub項(xiàng)目地址: github.com/PredictionI…
Brain是 Java 中的 神經(jīng)網(wǎng)絡(luò)庫(kù)。以下例子說(shuō)明使用Brain來(lái)近似 XOR 功能:
var net = new brain.NeuralNetwork(); net.train([{input: [0, 0], output: [0]}, {input: [0, 1], output: [1]}, {input: [1, 0], output: [1]}, {input: [1, 1], output: [0]}]); var output = net.run([1, 0]); // [0.987]
當(dāng) brain 用于節(jié)點(diǎn)中,可使用npm安裝:
npm install brain
當(dāng) brain 用于瀏覽器,下載最新的 brain.js 文件。訓(xùn)練計(jì)算代價(jià)比較昂貴,所以應(yīng)該離線訓(xùn)練網(wǎng)絡(luò)(或者在 Worker 上),并使用 toFunction() 或者 toJSON()選項(xiàng),以便將預(yù)訓(xùn)練網(wǎng)絡(luò)插入到網(wǎng)站中。
開發(fā)語(yǔ)言:Java
GitHub項(xiàng)目地址: github.com/harthur/bra…
Keras是極其精簡(jiǎn)并高度模塊化的神經(jīng)網(wǎng)絡(luò)庫(kù),在TensorFlow 或 Theano 上都能夠運(yùn)行,是一個(gè)高度模塊化的神經(jīng)網(wǎng)絡(luò)庫(kù),支持GPU和CPU運(yùn)算。Keras可以說(shuō)是Python版的Torch7,對(duì)于快速構(gòu)建CNN模型非常方便,同時(shí)也包含了一些最新文獻(xiàn)的算法,比如Batch Noramlize,文檔教程也很全,在官網(wǎng)上作者都是直接給例子淺顯易懂。Keras也支持保存訓(xùn)練好的參數(shù),然后加載已經(jīng)訓(xùn)練好的參數(shù),進(jìn)行繼續(xù)訓(xùn)練。
Keras側(cè)重于開發(fā)快速實(shí)驗(yàn),用可能最少延遲實(shí)現(xiàn)從理念到結(jié)果的轉(zhuǎn)變,即為做好一項(xiàng)研究的關(guān)鍵。
當(dāng)需要如下要求的深度學(xué)習(xí)的庫(kù)時(shí),就可以考慮使用Keras:
考慮到簡(jiǎn)單快速的原型法(通過(guò)總體模塊性、精簡(jiǎn)性以及可擴(kuò)展性);
同時(shí)支持卷積網(wǎng)絡(luò)和遞歸網(wǎng)絡(luò),以及兩者之間的組合;
支持任意連接方案(包括多輸入多輸出訓(xùn)練);
可在CPU 和 GPU 上無(wú)縫運(yùn)行。
Keras目前支持 Python 2.7-3.5。
開發(fā)語(yǔ)言:Python
GitHub項(xiàng)目地址: github.com/fchollet/ke…
CNTK(Computational Network Toolkit )是一個(gè)統(tǒng)一的深度學(xué)習(xí)工具包,該工具包通過(guò)一個(gè)有向圖將神經(jīng)網(wǎng)絡(luò)描述為一系列計(jì)算步驟。在有向圖中,葉節(jié)點(diǎn)表示輸入值或網(wǎng)絡(luò)參數(shù),其他節(jié)點(diǎn)表示該節(jié)點(diǎn)輸入之上的矩陣運(yùn)算。
CNTK 使得實(shí)現(xiàn)和組合如前饋型神經(jīng)網(wǎng)絡(luò)DNN、卷積神經(jīng)網(wǎng)絡(luò)(CNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(RNNs/LSTMs)等流行模式變得非常容易。同時(shí)它實(shí)現(xiàn)了跨多GPU 和服務(wù)器自動(dòng)分化和并行化的隨機(jī)梯度下降(SGD,誤差反向傳播)學(xué)習(xí)。
下圖將CNTK的處理速度(每秒處理的幀數(shù))和其他四個(gè)知名的工具包做了比較了。配置采用的是四層全連接的神經(jīng)網(wǎng)絡(luò)(參見基準(zhǔn)測(cè)試腳本)和一個(gè)大小是8192 的高效mini batch。在相同的硬件和相應(yīng)的最新公共軟件版本(2015.12.3前的版本)的基礎(chǔ)上得到如下結(jié)果:
CNTK自2015年四月就已開源。
開發(fā)語(yǔ)言:C++
GitHub項(xiàng)目地址: github.com/Microsoft/C…
ConvNetJS是利用Java實(shí)現(xiàn)的神經(jīng)網(wǎng)絡(luò),同時(shí)還具有非常不錯(cuò)的基于瀏覽器的Demo。它最重要的用途是幫助深度學(xué)習(xí)初學(xué)者更快、更直觀的理解算法。
它目前支持:
常見的神經(jīng)網(wǎng)絡(luò)模塊(全連接層,非線性);
分類(SVM/ SOFTMAX)和回歸(L2)的成本函數(shù);
指定和訓(xùn)練圖像處理的卷積網(wǎng)絡(luò);
基于Deep Q Learning的實(shí)驗(yàn)強(qiáng)化學(xué)習(xí)模型。
一些在線示例:
Convolutional Neural Network on MNIST digits Convolutional Neural Network on CIFAR-10 Toy 2D data Toy 1D regression Training an Autoencoder on MNIST digits Deep Q Learning Reinforcement Learning demo + Image Regression (“Painting”) + Comparison of SGD/Adagrad/Adadelta on MNIST
其他:
開發(fā)語(yǔ)言:Java
許可協(xié)議:MIT License
GitHub項(xiàng)目地址: github.com/karpathy/co…
Pattern是Python的一個(gè)Web挖掘模塊。擁有以下工具:
數(shù)據(jù)挖掘:網(wǎng)絡(luò)服務(wù)(Google、Twitter、Wikipedia)、網(wǎng)絡(luò)爬蟲、HTML DOM解析;
自然語(yǔ)言處理:詞性標(biāo)注工具(Part-Of-Speech Tagger)、N元搜索(n-gram search)、情感分析(sentiment analysis)、WordNet;
機(jī)器學(xué)習(xí):向量空間模型、聚類、分類(KNN、SVM、 Perceptron);
網(wǎng)絡(luò)分析:圖形中心性和可視化。
其文檔完善,目前擁有50多個(gè)案例和350多個(gè)單元測(cè)試。 Pattern目前只支持Python 2.5+(尚不支持Python 3),該模塊除了在Pattern.vector模塊中使用LSA外沒(méi)有其他任何外部要求,因此只需安裝 NumPy (僅在Mac OS X上默認(rèn)安裝)。
開發(fā)語(yǔ)言:Python
許可協(xié)議:BSD license
GitHub項(xiàng)目地址: github.com/clips/patte…
NuPIC是一個(gè)實(shí)現(xiàn)了HTM學(xué)習(xí)算法的機(jī)器智能平臺(tái)。HTM是一個(gè)關(guān)于新(大腦)皮質(zhì)(Neocortex)的詳細(xì)人工智能算法。HTM的核心是基于時(shí)間的連續(xù)學(xué)習(xí)算法,該算法可以存儲(chǔ)和調(diào)用時(shí)間和空間兩種模式。NuPIC可以適用于解決各類問(wèn)題,尤其是異常檢測(cè)和流數(shù)據(jù)源預(yù)測(cè)方面。
NuPIC Binaries文件目前可用于:
Linux x86 64bit
OS X 10.9
OS X 10.10
Windows 64bit
NuPIC 有自己的獨(dú)特之處。許多機(jī)器學(xué)習(xí)算法無(wú)法適應(yīng)新模式,而NuPIC的運(yùn)作接近于人腦,當(dāng)模式變化的時(shí)候,它會(huì)忘掉舊模式,記憶新模式。
開發(fā)語(yǔ)言:Python
GitHub項(xiàng)目地址: github.com/numenta/nup…
Theano是一個(gè)Python庫(kù),它允許使用者有效地定義、優(yōu)化和評(píng)估涉及多維數(shù)組的數(shù)學(xué)表達(dá)式,同時(shí)支持GPUs和高效符號(hào)分化操作。Theano具有以下特點(diǎn):
與NumPy緊密相關(guān)–在Theano的編譯功能中使用了Numpy.ndarray ;
透明地使用GPU–執(zhí)行數(shù)據(jù)密集型計(jì)算比CPU快了140多倍(針對(duì)Float32);
高效符號(hào)分化–Theano將函數(shù)的導(dǎo)數(shù)分為一個(gè)或多個(gè)不同的輸入;
速度和穩(wěn)定性的優(yōu)化–即使輸入的x非常小也可以得到log(1+x)正確結(jié)果;
動(dòng)態(tài)生成 C代碼–表達(dá)式計(jì)算更快;
廣泛的單元測(cè)試和自我驗(yàn)證–多種錯(cuò)誤類型的檢測(cè)和判定。
自2007年起,Theano一直致力于大型密集型科學(xué)計(jì)算研究,但它目前也很被廣泛應(yīng)用在課堂之上( 如Montreal大學(xué)的深度學(xué)習(xí)/機(jī)器學(xué)習(xí)課程)。
開發(fā)語(yǔ)言:Python
GitHub項(xiàng)目地址: github.com/Theano/Thea…
MXNet是一個(gè)兼具效率和靈活性的深度學(xué)習(xí)框架。它允許使用者將符號(hào)編程和命令式編程相結(jié)合,以追求效率和生產(chǎn)力的最大化。其核心是動(dòng)態(tài)依賴調(diào)度程序,該程序可以動(dòng)態(tài)自動(dòng)進(jìn)行并行化符號(hào)和命令的操作。其中部署的圖形優(yōu)化層使得符號(hào)操作更快和內(nèi)存利用率更高。該庫(kù)輕量且便攜帶,并且可擴(kuò)展到多個(gè)GPU和多臺(tái)主機(jī)上。
主要特點(diǎn):
其設(shè)計(jì)說(shuō)明提供了有用的見解,可以被重新應(yīng)用到其他DL項(xiàng)目中;
任意計(jì)算圖的靈活配置;
整合了各種編程方法的優(yōu)勢(shì)最大限度地提高靈活性和效率;
輕量、高效的內(nèi)存以及支持便攜式的智能設(shè)備;
多GPU擴(kuò)展和分布式的自動(dòng)并行化設(shè)置;
支持Python、R、C++和 Julia;
對(duì)“云計(jì)算”友好,直接兼容S3、HDFS和Azure。
MXNet不僅僅是一個(gè)深度學(xué)習(xí)項(xiàng)目,它更是一個(gè)建立深度學(xué)習(xí)系統(tǒng)的藍(lán)圖、指導(dǎo)方針以及黑客們對(duì)深度學(xué)習(xí)系統(tǒng)獨(dú)特見解的結(jié)合體。
開發(fā)語(yǔ)言:Jupyter Notebook
開源許可:Apache-2.0 license
GitHub項(xiàng)目地址: github.com/dmlc/mxnet
Vowpal Wabbit是一個(gè)機(jī)器學(xué)習(xí)系統(tǒng),該系統(tǒng)推動(dòng)了如在線、散列、Allreduce、Learning2search、等方面機(jī)器學(xué)習(xí)前沿技術(shù)的發(fā)展。 其訓(xùn)練速度很快,在20億條訓(xùn)練樣本,每個(gè)訓(xùn)練樣本大概100個(gè)非零特征的情況下:如果特征的總位數(shù)為一萬(wàn)時(shí),訓(xùn)練時(shí)間為20分鐘;特征總位數(shù)為1000萬(wàn)時(shí),訓(xùn)練時(shí)間為2個(gè)小時(shí)。Vowpal Wabbit支持分類、 回歸、矩陣分解和LDA。
當(dāng)在Hadoop上運(yùn)行Vowpal Wabbit時(shí),有以下優(yōu)化機(jī)制:
懶惰初始化:在進(jìn)行All Reduce之前,可將全部數(shù)據(jù)加載到內(nèi)存中并進(jìn)行緩存。即使某一節(jié)點(diǎn)出現(xiàn)了錯(cuò)誤,也可以通過(guò)在另外一個(gè)節(jié)點(diǎn)上使用錯(cuò)誤節(jié)點(diǎn)的數(shù)據(jù)(通過(guò)緩存來(lái)獲取)來(lái)繼續(xù)訓(xùn)練。
Speculative Execution:在大規(guī)模集群當(dāng)中,一兩個(gè)很慢的Mapper會(huì)影響整個(gè)Job的性能。Speculative Execution的思想是當(dāng)大部分節(jié)點(diǎn)的任務(wù)完成時(shí),Hadoop可以將剩余節(jié)點(diǎn)上的任務(wù)拷貝到其他節(jié)點(diǎn)完成。
其他:
開發(fā)語(yǔ)言:C++
GitHub項(xiàng)目地址: github.com/JohnLangfor…
通過(guò)設(shè)計(jì)了一個(gè)游戲使得Ruby語(yǔ)言和人工智能學(xué)習(xí)更加有樂(lè)趣和互動(dòng)起來(lái)。
使用者扮演了一個(gè)勇士通過(guò)爬上一座高塔,到達(dá)頂層獲取珍貴的紅寶石(Ruby)。在每一層,需要寫一個(gè)Ruby腳本指導(dǎo)戰(zhàn)士打敗敵人、營(yíng)救俘虜、到達(dá)樓梯。使用者對(duì)每一層都有一些認(rèn)識(shí),但是你永遠(yuǎn)都不知道每層具體會(huì)發(fā)生什么情況。你必須給戰(zhàn)士足夠的人工智能,以便讓其自行尋找應(yīng)對(duì)的方式。
勇士的動(dòng)作相關(guān)API:
Warrior.walk: 用來(lái)控制勇士的移動(dòng),默認(rèn)方向是往前;
warrior.feel:使用勇士來(lái)感知前方的情況,比如是空格,還是有怪物;
Warrior.attack:讓勇士對(duì)怪物進(jìn)行攻擊;
Warrior.health:獲取勇士當(dāng)前的生命值;
Warrior.rest:讓勇士休息一回合,恢復(fù)最大生命值的10%。
勇士的感知API:
Space.empty:感知前方是否是空格;
Space.stairs:感知前方是否是樓梯;
Space.enemy: 感知前方是否有怪物;
Space.captive:感知前方是否有俘虜;
Space.wall:感知前方是否是墻壁。
其他:
開發(fā)語(yǔ)言:Ruby
GitHub項(xiàng)目地址: github.com/ryanb/ruby-…
XGBoot是設(shè)計(jì)為高效、靈活、可移植的優(yōu)化分布式梯度 Boosting庫(kù)。它實(shí)現(xiàn)了 Gradient Boosting 框架下的機(jī)器學(xué)習(xí)算法。
XGBoost通過(guò)提供并行樹Boosting(也被稱為GBDT、GBM),以一種快速且準(zhǔn)確的方式解決了許多數(shù)據(jù)科學(xué)問(wèn)題。相同的代碼可以運(yùn)行在大型分布式環(huán)境如Hadoop、SGE、MP上。它類似于梯度上升框架,但是更加高效。它兼具線性模型求解器和樹學(xué)習(xí)算法。
XGBoot至少比現(xiàn)有的梯度上升實(shí)現(xiàn)有至少10倍的提升,同時(shí)還提供了多種目標(biāo)函數(shù),包括回歸、分類和排序。由于它在預(yù)測(cè)性能上的強(qiáng)大,XGBoot成為很多比賽的理想選擇,其還具有做交叉驗(yàn)證和發(fā)現(xiàn)關(guān)鍵變量的額外功能。
值得注意的是:XGBoost僅適用于數(shù)值型向量,因此在使用時(shí)需要將所有其他形式的數(shù)據(jù)轉(zhuǎn)換為數(shù)值型向量;在優(yōu)化模型時(shí),這個(gè)算法還有非常多的參數(shù)需要調(diào)整。
開發(fā)語(yǔ)言:C++
開源許可:Apache-2.0 license
GitHub項(xiàng)目地址: github.com/dmlc/xgboos…
GoLearn 是Go 語(yǔ)言中“功能齊全”的機(jī)器學(xué)習(xí)庫(kù),簡(jiǎn)單性及自定義性是其開發(fā)目標(biāo)。
在安裝 GoLearn 時(shí),數(shù)據(jù)作為實(shí)例被加載,然后可以在其上操作矩陣,并將操作值傳遞給估計(jì)值。GoLearn 實(shí)現(xiàn)了Fit/Predict的Scikit-Learn界面,因此用戶可輕松地通過(guò)反復(fù)試驗(yàn)置換出估計(jì)值。此外,GoLearn還包括用于數(shù)據(jù)的輔助功能,例如交叉驗(yàn)證、訓(xùn)練以及爆裂測(cè)試。
開發(fā)語(yǔ)言:Go
GitHub項(xiàng)目地址: github.com/sjwhitworth…
ML_for_Hackers 是針對(duì)黑客機(jī)器學(xué)習(xí)的代碼庫(kù),該庫(kù)包含了所有針對(duì)黑客的機(jī)器學(xué)習(xí)的代碼示例(2012)。該代碼可能和文中出現(xiàn)的并不完全相同,因?yàn)樽猿霭嬉詠?lái),可能又添加了附加的注釋和修改部分。
所有代碼均為R語(yǔ)言,依靠眾多的R程序包,涉及主題包括分類(Classification)、排行(Ranking)、以及回歸(Regression)的所有常見的任務(wù)和主成分分析(PCA)和多維尺度(Multi-dimenstional Scaling)等統(tǒng)計(jì)方法。
開發(fā)語(yǔ)言:R
開源許可:Simplified BSD License
GitHub項(xiàng)目地址: github.com/johnmyleswh…
H2O使得Hadoop能夠做數(shù)學(xué)運(yùn)算!它可以通過(guò)大數(shù)據(jù)衡量統(tǒng)計(jì)數(shù)據(jù)、機(jī)器學(xué)習(xí)和數(shù)學(xué)。H2O是可擴(kuò)展的,用戶可以在核心區(qū)域使用簡(jiǎn)單的數(shù)學(xué)模型構(gòu)建模塊。H2O保留著與R、Excel 和JSON等相類似的熟悉的界面,使得大數(shù)據(jù)愛(ài)好者及專家們可通過(guò)使用一系列由簡(jiǎn)單到高級(jí)的算法來(lái)對(duì)數(shù)據(jù)集進(jìn)行探索、變換、建模及評(píng)分。采集數(shù)據(jù)很簡(jiǎn)單,但判決難度卻很大,而H2O卻通過(guò)更快捷、更優(yōu)化的預(yù)測(cè)模型,能夠更加簡(jiǎn)單迅速地從數(shù)據(jù)中獲得深刻見解。
0xdata H2O的算法是面向業(yè)務(wù)流程——欺詐或趨勢(shì)預(yù)測(cè)。Hadoop專家可以使用Java與H2O相互作用,但框架還提供了對(duì)Python、R以及Scala的捆綁。
開發(fā)語(yǔ)言:Java
GitHub項(xiàng)目地址: github.com/h2oai/h2o-2
neon 是 Nervana 基于 Python 語(yǔ)言的深度學(xué)習(xí)框架,在諸多常見的深層神經(jīng)網(wǎng)絡(luò)中都能夠獲得較高的性能,比如AlexNet、VGG 或者GoogLeNet。在設(shè)計(jì) neon 時(shí),開發(fā)者充分考慮了如下功能:
支持常用的模型及實(shí)例,例如 Convnets、 MLPs、 RNNs、LSTMs、Autoencoders 等,其中許多預(yù)訓(xùn)練的實(shí)現(xiàn)都可以在模型庫(kù)中發(fā)現(xiàn);
與麥克斯韋GPU中fp16 和 fp32(基準(zhǔn)) 的nervanagpu 內(nèi)核緊密集成;
在Titan X(1 GPU ~ 32 hrs上可完整運(yùn)行)的AlexNet上為3s/macrobatch(3072圖像);
快速影像字幕模型(速度比基于 NeuralTalk 的CPU 快200倍)。
支持基本自動(dòng)微分;
框架可視化;
可交換式硬盤后端:一次編寫代碼,然后配置到 CPU、GPU、或者 Nervana 硬盤。
在 Nervana中,neon被用來(lái)解決客戶在多個(gè)域間存在的各種問(wèn)題。
開發(fā)語(yǔ)言:Python
開源許可:Apache-2.0 license
GitHub項(xiàng)目地址: github.com/NervanaSyst…
開源項(xiàng)目Oryx提供了簡(jiǎn)單且實(shí)時(shí)的大規(guī)模機(jī)器學(xué)習(xí)、預(yù)測(cè)分析的基礎(chǔ)設(shè)施。它可實(shí)現(xiàn)一些常用于商業(yè)應(yīng)用的算法類:協(xié)作式過(guò)濾/推薦、分類/回歸、集群等。此外,Oryx 可利用 Apache Hadoop 在大規(guī)模數(shù)據(jù)流中建立模型,還可以通過(guò)HTTP REST API 為這些模型提供實(shí)時(shí)查詢,同時(shí)隨著新的數(shù)據(jù)不斷流入,可以近似地自動(dòng)更新模型。這種包括了計(jì)算層和服務(wù)層的雙重設(shè)計(jì),能夠分別實(shí)現(xiàn)一個(gè)Lambda 架構(gòu)。模型在PMML格式交換。
Oryx本質(zhì)上只做兩件事:建模和為模型服務(wù),這就是計(jì)算層和服務(wù)層兩個(gè)獨(dú)立的部分各自的職責(zé)。計(jì)算層是離線、批量的過(guò)程,可從輸入數(shù)據(jù)中建立機(jī)器學(xué)習(xí)模型,它的經(jīng)營(yíng)收益在于“代”,即可利用某一點(diǎn)處輸入值的快照建模,結(jié)果就是隨著連續(xù)輸入的累加,隨時(shí)間生成一系列輸出;服務(wù)層也是一個(gè)基于Java長(zhǎng)期運(yùn)行的服務(wù)器進(jìn)程,它公開了REST API。使用者可從瀏覽器中訪問(wèn),也可利用任何能夠發(fā)送HTTP請(qǐng)求的語(yǔ)言或工具進(jìn)行訪問(wèn)。
Oryx的定位不是機(jī)器學(xué)習(xí)算法的程序庫(kù),Owen關(guān)注的重點(diǎn)有四個(gè):回歸、分類、集群和協(xié)作式過(guò)濾(也就是推薦)。其中推薦系統(tǒng)非常熱門,Owen正在與幾個(gè)Cloudera的客戶合作,幫他們使用Oryx部署推薦系統(tǒng)。
開發(fā)語(yǔ)言:Java
GitHub項(xiàng)目地址: github.com/cloudera/or…
Shogun是一個(gè)機(jī)器學(xué)習(xí)工具箱,由Soeren Sonnenburg 和GunnarRaetsch(創(chuàng)建,其重點(diǎn)是大尺度上的內(nèi)核學(xué)習(xí)方法,特別是支持向量機(jī)SVM(Support Vector Machines)的學(xué)習(xí)工具箱。它提供了一個(gè)通用的連接到幾個(gè)不同的SVM實(shí)現(xiàn)方式中的SVM對(duì)象接口,目前發(fā)展最先進(jìn)的LIBSVM和SVMlight 也位于其中,每個(gè)SVM都可以與各種內(nèi)核相結(jié)合。工具箱不僅為常用的內(nèi)核程序(如線性、多項(xiàng)式、高斯和S型核函數(shù))提供了高效的實(shí)現(xiàn)途徑,還自帶了一些近期的字符串內(nèi)核函數(shù),例如局部性的改進(jìn)、Fischer、TOP、Spectrum、加權(quán)度內(nèi)核與移位,后來(lái)有效的LINADD優(yōu)化內(nèi)核函數(shù)也已經(jīng)實(shí)現(xiàn)。
此外,Shogun還提供了使用自定義預(yù)計(jì)算內(nèi)核工作的自由,其中一個(gè)重要特征就是可以通過(guò)多個(gè)子內(nèi)核的加權(quán)線性組合來(lái)構(gòu)造的組合核,每個(gè)子內(nèi)核無(wú)需工作在同一個(gè)域中。通過(guò)使用多內(nèi)核學(xué)習(xí)可知最優(yōu)子內(nèi)核的加權(quán)。
目前Shogun可以解決SVM 2類的分類和回歸問(wèn)題。此外Shogun也添加了了像線性判別分析(LDA)、線性規(guī)劃(LPM)、(內(nèi)核)感知等大量線性方法和一些用于訓(xùn)練隱馬爾可夫模型的算法。
開發(fā)語(yǔ)言:C/C++、Python
許可協(xié)議:GPLv3
GitHub項(xiàng)目地址: github.com/shogun-tool…
HLearn是由Haskell語(yǔ)言編寫的高性能機(jī)器學(xué)習(xí)庫(kù),目前它對(duì)任意維度空間有著最快最近鄰的實(shí)現(xiàn)算法。
HLearn同樣也是一個(gè)研究型項(xiàng)目。該項(xiàng)目的研究目標(biāo)是為機(jī)器學(xué)習(xí)發(fā)掘“最佳可能”的接口。這就涉及到了兩個(gè)相互沖突的要求:該庫(kù)應(yīng)該像由C/C++/Fortran/Assembly開發(fā)的底層庫(kù)那樣運(yùn)行快速;同時(shí)也應(yīng)該像由Python/R/Matlab開發(fā)的高級(jí)庫(kù)那樣靈活多變。Julia在這個(gè)方向上取得了驚人的進(jìn)步,但是 HLearn“野心”更大。更值得注意的是,HLearn的目標(biāo)是比低級(jí)語(yǔ)言速度更快,比高級(jí)語(yǔ)言更加靈活。
為了實(shí)現(xiàn)這一目標(biāo),HLearn采用了與標(biāo)準(zhǔn)學(xué)習(xí)庫(kù)完全不同的接口。在HLearn中H代表著三個(gè)不同的概念,這三個(gè)概念也是HLearn設(shè)計(jì)的基本要求:
H代表Haskell。機(jī)器學(xué)習(xí)是從數(shù)據(jù)中預(yù)測(cè)函數(shù),所以功能性編程語(yǔ)言適應(yīng)機(jī)器學(xué)習(xí)是完全說(shuō)的通的。但功能性編程語(yǔ)言并沒(méi)廣泛應(yīng)用于機(jī)器學(xué)習(xí),這是因?yàn)樗鼈児虂?lái)缺乏支持學(xué)習(xí)算法的快速數(shù)值計(jì)算能力。HLearn通過(guò)采用Haskell中的SubHask庫(kù)獲得了快速數(shù)值計(jì)算能力;
H同時(shí)代表著Homomorphisms。Homomorphisms是抽象代數(shù)的基本概念,HLearn將該代數(shù)結(jié)構(gòu)用于學(xué)習(xí)系統(tǒng)中;
H還代表著History monad。在開發(fā)新的學(xué)習(xí)算法過(guò)程中,最為困難的任務(wù)之一就是調(diào)試優(yōu)化過(guò)程。在此之前,是沒(méi)有辦法減輕調(diào)試過(guò)程的工作量的,但History monad正在試圖解決該問(wèn)題。它可以讓你在整個(gè)線程優(yōu)化代碼的過(guò)程中無(wú)需修改原代碼。此外,使用該技術(shù)時(shí)沒(méi)有增加其他的運(yùn)行開銷。
其他:
開發(fā)語(yǔ)言:Haskell
GitHub項(xiàng)目地址: github.com/mikeizbicki…
MLPNeuralNet是一個(gè)針對(duì)iOS和Mac OS系統(tǒng)的快速多層感知神經(jīng)網(wǎng)絡(luò)庫(kù),可通過(guò)已訓(xùn)練的神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)新實(shí)例。它利用了向量運(yùn)算和硬盤加速功能(如果可用),其建立在蘋果公司的加速框架之上。
若你已經(jīng)用Matlab(Python或R)設(shè)計(jì)了一個(gè)預(yù)測(cè)模型,并希望在iOS應(yīng)用程序加以應(yīng)用。在這種情況下,正好需要MLP NeuralNet,而MLP NeuralNet只能加載和運(yùn)行前向傳播方式的模型。MLP NeuralNet 有如下幾個(gè)特點(diǎn):
分類、多類分類以及回歸輸出;
向量化實(shí)現(xiàn)形式;
雙精度;
多重隱含層數(shù)或空(此時(shí)相當(dāng)于邏輯學(xué)/線性回歸)。
其他:
開發(fā)語(yǔ)言:Objective-C
許可協(xié)議:BSD license
GitHub項(xiàng)目地址: github.com/nikolaypavl…
Mahout 是Apache Software Foundation(ASF) 旗下的一個(gè)開源項(xiàng)目,提供一些可擴(kuò)展的機(jī)器學(xué)習(xí)領(lǐng)域經(jīng)典算法的實(shí)現(xiàn),旨在幫助開發(fā)人員更加方便快捷地創(chuàng)建智能應(yīng)用程序。Mahout包含許多實(shí)現(xiàn),包括聚類、分類、推薦過(guò)濾、頻繁子項(xiàng)挖掘。此外,通過(guò)使用 Apache Hadoop 庫(kù),Mahout 可以有效地?cái)U(kuò)展到云中。Apache Mahout項(xiàng)目的目標(biāo)是建立一個(gè)能夠快速創(chuàng)建可擴(kuò)展、高性能機(jī)器學(xué)習(xí)應(yīng)用的環(huán)境。
雖然在開源領(lǐng)域中相對(duì)較為年輕,但 Mahout 已經(jīng)提供了大量功能,特別是在集群和 CF 方面。Mahout 的主要特性包括:
Taste CF,Taste是Sean Owen在SourceForge上發(fā)起的一個(gè)針對(duì)CF的開源項(xiàng)目,并在2008年被贈(zèng)予Mahout;
一些支持 Map-Reduce 的集群實(shí)現(xiàn)包括 k-Means、模糊 k-Means、Canopy、Dirichlet 和 Mean-Shift;
Distributed Naive Bayes 和 Complementary Naive Bayes 分類實(shí)現(xiàn);
針對(duì)進(jìn)化編程的分布式適用性功能;
Matrix 和矢量庫(kù)。
使用 Mahout 還可實(shí)現(xiàn)內(nèi)容分類。Mahout 目前支持兩種根據(jù)貝氏統(tǒng)計(jì)來(lái)實(shí)現(xiàn)內(nèi)容分類的方法:第一種方法是使用簡(jiǎn)單的支持 Map-Reduce 的 Naive Bayes 分類器;第二種方法是 Complementary Naive Bayes,它會(huì)嘗試糾正Naive Bayes方法中的一些問(wèn)題,同時(shí)仍然能夠維持簡(jiǎn)單性和速度。
開發(fā)語(yǔ)言:Java
許可協(xié)議:Apache
GitHub項(xiàng)目地址: github.com/apache/maho…
25. Seldon Server
Seldon是一個(gè)開放式的預(yù)測(cè)平臺(tái),提供內(nèi)容建議和一般的功能性預(yù)測(cè)。它在Kubernetes集群內(nèi)運(yùn)行,因此可以調(diào)配到Kubernetes范圍內(nèi)的任一地址:內(nèi)部部署或云部署(例如,AWS、谷歌云平臺(tái)、Azure)。另外,它還可以衡量大型企業(yè)安裝的需求。
開發(fā)語(yǔ)言:Java
GitHub項(xiàng)目地址: github.com/SeldonIO/se…
Datumbox機(jī)器學(xué)習(xí)框架是用Java編寫的一個(gè)開源框架,該框架的涵蓋大量的機(jī)器學(xué)習(xí)算法和統(tǒng)計(jì)方法,并能夠處理大尺寸的數(shù)據(jù)集。
Datumbox API提供了海量的分類器和自然語(yǔ)言處理服務(wù),能夠被應(yīng)用在很多領(lǐng)域的應(yīng)用,包括了情感分析、話題分類、語(yǔ)言檢測(cè)、主觀分析、垃圾郵件檢測(cè)、閱讀評(píng)估、關(guān)鍵詞和文本提取等等。目前,Datumbox所有的機(jī)器學(xué)習(xí)服務(wù)都能夠通過(guò)API獲取,該框架能夠讓用戶迅速地開發(fā)自己的智能應(yīng)用。目前,基于GPL3.0的Datumbox機(jī)器學(xué)習(xí)框架已經(jīng)開源并且可以從GitHub上進(jìn)行下載。
Datumbox的機(jī)器學(xué)習(xí)平臺(tái)很大程度上已經(jīng)能夠取代普通的智能應(yīng)用。它具有如下幾個(gè)顯著的優(yōu)點(diǎn):
強(qiáng)大并且開源。Datumbox API使用了強(qiáng)大的開源機(jī)器學(xué)習(xí)框架Datumbox,使用其高度精確的算法能夠迅速地構(gòu)建創(chuàng)新的應(yīng)用;
易于使用。平臺(tái)API十分易于使用,它使用了REST&JSON的技術(shù),對(duì)于所有的分類器;
迅速使用。Datumbox去掉了那些很花時(shí)間的復(fù)雜機(jī)器學(xué)習(xí)訓(xùn)練模型。用戶能夠通過(guò)平臺(tái)直接使用分類器。
Datumbox主要可以應(yīng)用在四個(gè)方面:一個(gè)是社交媒體的監(jiān)視,評(píng)估用戶觀點(diǎn)能夠通過(guò)機(jī)器學(xué)習(xí)解決,Datumbox能夠幫助用戶構(gòu)建自己的社交媒體監(jiān)視工具;第二是搜索引擎優(yōu)化,其中非常有效的方法就是文檔中重要術(shù)語(yǔ)的定位和優(yōu)化;第三點(diǎn)是質(zhì)量評(píng)估,在在線通訊中,評(píng)估用戶產(chǎn)生內(nèi)容的質(zhì)量對(duì)于去除垃圾郵件是非常重要的,Datumbox能夠自動(dòng)的評(píng)分并且審核這些內(nèi)容;最后是文本分析,自然語(yǔ)言處理和文本分析工具推動(dòng)了網(wǎng)上大量應(yīng)用的產(chǎn)生,平臺(tái)API能夠很輕松地幫助用戶進(jìn)行這些分析。
開發(fā)語(yǔ)言:Java
許可協(xié)議:Apache License 2.0
GitHub項(xiàng)目地址: github.com/datumbox/da…
Jubatus庫(kù)是一個(gè)運(yùn)行在分布式環(huán)境中的在線機(jī)器學(xué)習(xí)框架,即面向大數(shù)據(jù)數(shù)據(jù)流的開源框架。它和Storm有些類似,但能夠提供更多的功能,主要功能如下:
在線機(jī)器學(xué)習(xí)庫(kù):包括分類、聚合和推薦;
Fv_converter: 數(shù)據(jù)預(yù)處理(用自然語(yǔ)言);
在線機(jī)器學(xué)習(xí)框架,支持容錯(cuò)。
Jubatus認(rèn)為未來(lái)的數(shù)據(jù)分析平臺(tái)應(yīng)該同時(shí)向三個(gè)方向展開:處理更大的數(shù)據(jù),深層次的分析和實(shí)時(shí)處理。于是Jubatus將在線機(jī)器學(xué)習(xí),分布式計(jì)算和隨機(jī)算法等的優(yōu)勢(shì)結(jié)合在一起用于機(jī)器學(xué)習(xí),并支持分類、回歸、推薦等基本元素。根據(jù)其設(shè)計(jì)目的,Jubatus有如下的特點(diǎn):
可擴(kuò)展:支持可擴(kuò)展的機(jī)器學(xué)習(xí)處理。在普通硬件集群上處理數(shù)據(jù)速度高達(dá)100000條/秒;+實(shí)時(shí)計(jì)算:實(shí)時(shí)分析數(shù)據(jù)和更新模型;
深層次的數(shù)據(jù)分析:支持各種分析計(jì)算:分類、回歸、統(tǒng)計(jì)、推薦等。
如果有基于流數(shù)據(jù)的機(jī)器學(xué)習(xí)方面的需求,Jubatus值得關(guān)注。
開發(fā)語(yǔ)言:C/C++
許可協(xié)議:LGPL
GitHub項(xiàng)目地址: github.com/jubatus/jub…
Decider 是另一個(gè) Ruby 機(jī)器學(xué)習(xí)庫(kù),兼具靈活性和可擴(kuò)展性。Decider內(nèi)置了對(duì)純文本和URI、填充詞匯、停止詞刪除、字格等的支持,以上這些都可以很容易地在選項(xiàng)中組合。Decider 可支持Ruby中任何可用的存儲(chǔ)機(jī)制。如果你喜歡,可以保存到數(shù)據(jù)庫(kù)中,實(shí)現(xiàn)分布式分類。
Decider有幾個(gè)基準(zhǔn),也兼作集成測(cè)試。這些都是定期運(yùn)行并用于查明CPU和RAM的瓶頸。Decider可以進(jìn)行大量數(shù)學(xué)運(yùn)算,計(jì)算相當(dāng)密集,所以對(duì)速度的要求比較高。這是經(jīng)常使用Ruby1.9和JRuby測(cè)試其計(jì)算速度。此外,用戶的數(shù)據(jù)集應(yīng)該完全在內(nèi)存中,否則將會(huì)遇到麻煩。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn