學(xué)號(hào):1600030024 姓名:王冠雄
【嵌牛導(dǎo)讀】:現(xiàn)在機(jī)器學(xué)習(xí)逐漸成為行業(yè)熱門扯键,經(jīng)過二十幾年的發(fā)展颂龙,機(jī)器學(xué)習(xí)目前也有了十分廣泛的應(yīng)用瓜富,如:數(shù)據(jù)挖掘鳍咱、計(jì)算機(jī)視覺、自然語言處理与柑、生物特征識(shí)別谤辜、搜索引擎蓄坏、醫(yī)學(xué)診斷、DNA序列測(cè)序丑念、語音和手寫識(shí)別涡戳、戰(zhàn)略游戲和機(jī)器人等方面。
【嵌牛鼻子】:開源脯倚,機(jī)器學(xué)習(xí)渔彰,用法簡(jiǎn)介
【嵌牛提問】:GitHub上最流行的機(jī)器學(xué)習(xí)項(xiàng)目?項(xiàng)目簡(jiǎn)介推正?
【嵌牛正文】:
1. TensorFlow
TensorFlow 是谷歌發(fā)布的第二代機(jī)器學(xué)習(xí)系統(tǒng)恍涂。據(jù)谷歌宣稱,在部分基準(zhǔn)測(cè)試中植榕,TensorFlow的處理速度比第一代的DistBelief加快了2倍之多再沧。
具體的講,TensorFlow是一個(gè)利用數(shù)據(jù)流圖(Data Flow Graphs)進(jìn)行數(shù)值計(jì)算的開源軟件庫:圖中的節(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上顷扩,而且無需重寫代碼;同時(shí)任一基于梯度的機(jī)器學(xué)習(xí)算法均可夠借鑒TensorFlow的自動(dòng)分化(Auto-differentiation);此外通過靈活的Python接口,要在TensorFlow中表達(dá)想法也變得更為簡(jiǎn)單竞端。
TensorFlow最初由Google Brain小組(該小組隸屬于Google’s Machine Intelligence研究機(jī)構(gòu))的研究員和工程師開發(fā)出來的,開發(fā)目的是用于進(jìn)行機(jī)器學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò)的研究庙睡。但該系統(tǒng)的通用性足以使其廣泛用于其他計(jì)算領(lǐng)域事富。
目前Google 內(nèi)部已在大量使用 AI 技術(shù),包括 Google App 的語音識(shí)別乘陪、Gmail 的自動(dòng)回復(fù)功能统台、Google Photos 的圖片搜索等都在使用 TensorFlow 。
開發(fā)語言:C++
許可協(xié)議:Apache License 2.0
GitHub項(xiàng)目地址:https://github.com/tensorflow/tensorflow
2. Scikit-Learn
Scikit-Learn是用于機(jī)器學(xué)習(xí)的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ù)分析
無訪問限制戚绕,在任何情況下可重新使用
建立在NumPy、SciPy 和 matplotlib基礎(chǔ)上
Scikit-Learn的基本功能主要被分為六個(gè)部分:分類枝冀、回歸舞丛、聚類耘子、數(shù)據(jù)降維、模型選擇球切、數(shù)據(jù)預(yù)處理谷誓,具體可以參考官方網(wǎng)站上的文檔。經(jīng)過測(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ā)語言:Python
許可協(xié)議:3-Clause BSD license
GitHub項(xiàng)目地址:https://github.com/scikit-learn/scikit-learn
3. Caffe
Caffe 是由神經(jīng)網(wǎng)絡(luò)中的表達(dá)式蒋伦、速度弓摘、及模塊化產(chǎn)生的深度學(xué)習(xí)框架。后來它通過伯克利視覺與學(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++可以通過命令行來操作接口渊啰,對(duì)于MATLAB、Python也有專門的接口申屹,運(yùn)算上支持CPU和GPU直接無縫切換绘证。
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è)置上;
使用者可通過Caffe提供的各層類型來定義自己的模型;
目前Caffe應(yīng)用實(shí)踐主要有數(shù)據(jù)整理魏宽、設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu)、訓(xùn)練結(jié)果决乎、基于現(xiàn)有訓(xùn)練模型队询,使用Caffe直接識(shí)別。
開發(fā)語言:C++
許可協(xié)議: BSD 2-Clause license
GitHub項(xiàng)目地址:https://github.com/BVLC/caffe
4. PredictionIO
PredictionIO 是面向開發(fā)人員和數(shù)據(jù)科學(xué)家的開源機(jī)器學(xué)習(xí)服務(wù)器构诚。它支持事件采集娘摔、算法調(diào)度、評(píng)估唤反,以及經(jīng)由REST APIs的預(yù)測(cè)結(jié)果查詢凳寺。使用者可以通過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í)算法;
無需擔(dān)心可擴(kuò)展性氏捞,擴(kuò)展性好流强。
PredictionIO 基于 REST API(應(yīng)用程序接口)標(biāo)準(zhǔn)句旱,不過它還包含 Ruby争占、Python、Scala闷袒、Java 等編程語言的 SDK(軟件開發(fā)工具包)坑律。其開發(fā)語言是Scala語言,數(shù)據(jù)庫方面使用的是MongoDB數(shù)據(jù)庫囊骤,計(jì)算系統(tǒng)采用Hadoop系統(tǒng)架構(gòu)晃择。
開發(fā)語言:Scala
許可協(xié)議: Apache License 2.0
GitHub項(xiàng)目地址:https://github.com/PredictionIO/PredictionIO
5. Brain
Brain是 JavaScript 中的 神經(jīng)網(wǎng)絡(luò)庫。以下例子說明使用Brain來近似 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ā)語言:JavaScript
GitHub項(xiàng)目地址:https://github.com/harthur/brain
6. Keras
Keras是極其精簡(jiǎn)并高度模塊化的神經(jīng)網(wǎng)絡(luò)庫坤次,在TensorFlow 或 Theano 上都能夠運(yùn)行,是一個(gè)高度模塊化的神經(jīng)網(wǎng)絡(luò)庫创葡,支持GPU和CPU運(yùn)算浙踢。Keras可以說是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í)的庫時(shí),就可以考慮使用Keras:
考慮到簡(jiǎn)單快速的原型法(通過總體模塊性蹋嵌、精簡(jiǎn)性以及可擴(kuò)展性);
同時(shí)支持卷積網(wǎng)絡(luò)和遞歸網(wǎng)絡(luò)育瓜,以及兩者之間的組合;
支持任意連接方案(包括多輸入多輸出訓(xùn)練);
可在CPU 和 GPU 上無縫運(yùn)行。
Keras目前支持 Python 2.7-3.5栽烂。
開發(fā)語言:Python
GitHub項(xiàng)目地址:https://github.com/fchollet/keras
7. CNTK
CNTK(Computational Network Toolkit )是一個(gè)統(tǒng)一的深度學(xué)習(xí)工具包躏仇,該工具包通過一個(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ā)語言:C++
GitHub項(xiàng)目地址:https://github.com/Microsoft/CNTK
8. Convnetjs
ConvNetJS是利用Javascript實(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ā)語言:Javascript
許可協(xié)議:MIT License
GitHub項(xiàng)目地址:https://github.com/karpathy/convnetjs
9. Pattern
Pattern是Python的一個(gè)Web挖掘模塊犹褒。擁有以下工具:
數(shù)據(jù)挖掘:網(wǎng)絡(luò)服務(wù)(Google、Twitter弛针、Wikipedia)叠骑、網(wǎng)絡(luò)爬蟲、HTML DOM解析;
自然語言處理:詞性標(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外沒有其他任何外部要求蝇棉,因此只需安裝 NumPy (僅在Mac OS X上默認(rèn)安裝)。
開發(fā)語言:Python
許可協(xié)議:BSD license
GitHub項(xiàng)目地址:https://github.com/clips/pattern