機(jī)器學(xué)習(xí)工具
這里分為機(jī)器學(xué)習(xí)開源庫和工具,來自(http://www.52ml.net/12043.html)
常見工具有:
- MATLAB :商業(yè)軟件克伊,有專門的工具包
- SAS:商業(yè)軟件
- SPSS:商業(yè)軟件
- Java:機(jī)器學(xué)習(xí)庫十分流行考赛,主要體現(xiàn)在大數(shù)據(jù)下的jvm的本質(zhì)和算法并行化 的優(yōu)勢灶挟。
- Python:易擴(kuò)展
- C/C++:
- R:
開發(fā)工具包:
1.機(jī)器學(xué)習(xí)開源軟件網(wǎng)(收錄了各種機(jī)器學(xué)習(xí)的各種編程語言學(xué)術(shù)與商業(yè)的開源軟件)
http://mloss.org
libsvm
支持向量機(jī)界最牛的斤富,林教授的杰作(c++)
http://www.csie.ntu.edu.tw/~cjlin/libsvm/WEKA
基于java的機(jī)器學(xué)習(xí)算法最全面最易用的開源軟件。
http://www.cs.waikato.ac.nz/ml/weka/scikit
基于python的機(jī)器學(xué)習(xí)軟件,代碼寫得非常好馋嗜,而且官方的文檔非常全,所有都有例子吵瞻,算法也齊全葛菇,開發(fā)也活躍。
下載版本:https://pypi.python.org/pypi/scikit-learn/
Project:http://scikit-learn.org/stable/
github: https://github.com/scikit-learn/scikit-learnOpenCv
最牛的開源計算機(jī)視覺庫了橡羞,前途無可限量眯停,做圖像處理與模式識別的一定要用,總不能整天抱著matlab做實驗和工業(yè)界脫節(jié)吧卿泽,但是有一定難度莺债。
http://opencv.willowgarage.com/wiki/Orange
基于c++和python接口的機(jī)器學(xué)習(xí)軟件,界面漂亮,調(diào)用方便,可以同時學(xué)習(xí)C++和python齐邦,還有可視化的功能椎侠。
http://orange.biolab.si/Mallet
基于JAVA實現(xiàn)的機(jī)器學(xué)習(xí)庫,主要用于自然語言處理方面措拇,特色是馬爾可夫模型和隨機(jī)域做得好我纪,可和WEKA互補(bǔ)。
http://mallet.cs.umass.edu/NLTK
PYTHON的自然處理開源庫丐吓,非常易用浅悉,也強(qiáng)大,還有幾本orelly的經(jīng)典教程汰蜘。
http://nltk.org/lucene
基于java的包括nutch,solr,hadoop,mahout等全套仇冯,是做信息檢索和搜索引擎的同志們必學(xué)的開源軟件了,學(xué)JAVA的必學(xué)族操。
http://lucene.apache.org/
10.Shogun
著名的Shogun創(chuàng)建于1999年苛坚,盡管它是用C++編寫的,但可以與Java色难,Python泼舱,C#,Ruby枷莉,R娇昙,Lua, Octave和Matlab一起使用笤妙。最新版本 6.0.0 增加了對Microsoft Windows和Scala語言的本地支持冒掌。
雖然廣受歡迎,但是 Shogun 仍受到來自另外一個基于C++的機(jī)器學(xué)習(xí)庫的競爭:2011年出現(xiàn)的Mlpack蹲盘。但是Shogun仍然自稱是比其他競爭者更快更易用的(通過一個更完整的API集)股毫。
Project: http://www.shogun-toolbox.org/
Github: https://github.com/shogun-toolbox/shogun
11.Accord.Net Framework
Accord是一個機(jī)器學(xué)習(xí)和信號處理框架,基于.Net編寫召衔,是以前的項目AForge.net的延伸铃诬,Accord包括一組用于處理音頻信號和圖像流(例如視頻)的庫。其視覺處理算法可用于臉部識別苍凛,拼接圖像或跟蹤移動物體等任務(wù)趣席。
Accord還提供更傳統(tǒng)的機(jī)器學(xué)習(xí)功能的庫,包括神經(jīng)網(wǎng)絡(luò)和決策樹系統(tǒng)醇蝴。
Project: http://accord-framework.net/
Github: https://github.com/accord-net/framework/
12.Golearn
GoLearn 是一個由Go語言編寫的機(jī)器學(xué)習(xí)庫, 根據(jù)開發(fā)者 Stephen Whitworth 的研究, 它以簡潔性和可定制性為目標(biāo)宣肚。簡潔性在于在庫中加載和處理數(shù)據(jù)的方式, 這點模仿了 SciPy 和 R ∮扑ǎ可定制性在于如何在應(yīng)用程序中輕松擴(kuò)展某些數(shù)據(jù)結(jié)構(gòu)霉涨。Stephen Whitworth 還為 Vowpal Wabbit 庫創(chuàng)建了一個gGo包裝器弧呐,它可以在Shogun工具箱中找到。
Github: https://github.com/sjwhitworth/golearn
13.Deeplearn.js
在web瀏覽器中進(jìn)行深度學(xué)習(xí)的另一個項目是deeplearn.js嵌纲,它來自Google。你可以在任何現(xiàn)代瀏覽器中直接訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型腥沽,而無需額外的客戶端軟件逮走。deeplearn.js還可以通過web GLAPI進(jìn)行GPU加速,因此性能不受限于系統(tǒng)的CPU今阳。該項目的函數(shù)模仿了Google 的TensorFlow师溅,使得TensorFlow的用戶可以輕松地開始使用。
Project: https://pair-code.github.io/deeplearnjs/
14.ConvNetJS
顧名思義盾舌,ConvNetJS是用于神經(jīng)網(wǎng)絡(luò)機(jī)器學(xué)習(xí)的JavaScript庫墓臭,便于將瀏覽器用作數(shù)據(jù)工作臺。 對于使用Node.js的用戶妖谴,還可以使用NPM版本窿锉,該庫的設(shè)計使用了JavaScript的異步操作。例如膝舅,訓(xùn)練完成后執(zhí)行一個回調(diào)嗡载。它包括了大量演示示例。
Project: http://cs.stanford.edu/people/karpathy/convnetjs/
Github: https://github.com/karpathy/convnetjs
Additional:
1.pyml
a python module for machine learning仍稀,支持svm/knn/k-means.etc
http://mlpy.sourceforge.net/
2.mahout
阿帕奇基金下項目洼滚,其主要是可以與hadoop進(jìn)行天然結(jié)合,從而并行運(yùn)行技潘,在魯棒性方面很好遥巴。
http://mahout.apache.org/
3.milk
python的機(jī)器學(xué)習(xí)工具包,主要是針對監(jiān)督學(xué)習(xí)享幽,包括svm/knn/決策樹铲掐。
http://pypi.python.org/pypi/milk/
4.Octave
Andrew NG課上推薦使用的,類似matlab琉闪。
http://www.gnu.org/software/octave/
機(jī)器學(xué)習(xí)的開源工具
以下工具絕大多數(shù)都是開源的迹炼,基于GPL、Apache等開源協(xié)議颠毙,使用時請仔細(xì)閱讀各工具的license statement斯入。
我通過瀏覽各開源工具網(wǎng)站,對其licence agreement進(jìn)行了一下了解蛀蜜,在這里簡單貼上其遵循的licence刻两,希望有用。如果實際商用或者其他用途滴某,還須仔細(xì)到個網(wǎng)站查詢或聯(lián)系developers磅摹。由于版本的升級滋迈,相應(yīng)的licence也會有一定的改動,需要注意户誓。如果有錯誤饼灿,希望大家指出,謝謝帝美。
I. Information Retrieval (like BSD)
Lemur/Indri
The Lemur Toolkit for Language Modeling and Information Retrieval
http://www.lemurproject.org/
Indri:
Lemur’s latest search engineLucene/Nutch (Apache 2.0協(xié)議)
Apache Lucene is a high-performance, full-featured text search engine library written entirely in Java.
Lucene是apache的頂級開源項目碍彭,基于Apache 2.0協(xié)議,完全用java編寫悼潭,具有perl, c/c++, dotNet等多個port.
http://lucene.apache.org/
http://www.nutch.org/WGet (GPL)
GNU Wget is a free software package for retrieving files using HTTP, HTTPS and FTP, the most widely-used Internet protocols. It is a non-interactive commandline tool, so it may easily be called from scripts, cron jobs, terminals without X-Windows support, etc.
http://www.gnu.org/software/wget/wget.html
II. Natural Language Processing
EGYPT: A Statistical Machine Translation Toolkit
http://www.clsp.jhu.edu/ws99/projects/mt/
包括GIZA等四個工具GIZA++ (Statistical Machine Translation) (GPL)
http://www.fjoch.com/GIZA++.html
GIZA++ is an extension of the program GIZA (part of the SMT toolkit EGYPT) which was developed by the Statistical Machine Translation team during the summer workshop in 1999 at the Center for Language and Speech Processing at Johns-Hopkins University (CLSP/JHU). GIZA++ includes a lot of additional features. The extensions of GIZA++ were designed and written by Franz Josef Och.
Franz Josef Och先后在德國Aachen大學(xué)庇忌,ISI(南加州大學(xué)信息科學(xué)研究所)和Google工作。GIZA++現(xiàn)已有Windows移植版本舰褪,對IBM 的model 1-5有很好支持皆疹。PHARAOH (Statistical Machine Translation)
http://www.isi.edu/licensed-sw/pharaoh/
a beam search decoder for phrase-based statistical machine translation modelsOpenNLP: (LGPL?)
http://opennlp.apache.org/
包括Maxent等20多個工具
btw: 這些SMT的工具還都喜歡用埃及相關(guān)的名字命名,像什么GIZA占拍、PHARAOH略就、Cairo等等。Och在ISI時開發(fā)了GIZA++晃酒,PHARAOH也是由來自ISI的Philipp Koehn 開發(fā)的残制,關(guān)系還真是復(fù)雜啊
MINIPAR by Dekang Lin (Univ. of Alberta, Canada)
MINIPAR is a broad-coverage parser for the English language. An uation with the SUSANNE corpus shows that MINIPAR achieves about 88% precision and 80% recall with respect to dependency relationships. MINIPAR is very efficient, on a Pentium II 300 with 128MB memory, it parses about 300 words per second.
binary填一個表后可以免費(fèi)下載
http://www.cs.ualberta.ca/~lindek/minipar.htmWordNet (need connect if for commercial use)
http://wordnet.princeton.edu/
WordNet is an online lexical reference system whose design is inspired by current psycholinguistic theories of human lexical memory. English nouns, verbs, adjectives and adverbs are organized into synonym sets, each representing one underlying lexical concept. Different relations link the synonym sets.
WordNet was developed by the Cognitive Science Laboratory at Princeton University under the direction of Professor George A. Miller (Principal Investigator).
WordNet最新版本是2.1 (for Windows & Unix-like OS),提供bin, src和doc掖疮。
WordNet的在線版本是:http://wordnet.princeton.edu/perl/webwnHowNet
http://www.keenage.com/
HowNet is an on-line common-sense knowledge base unveiling inter-conceptual relations and inter-attribute relations of concepts as connoting in lexicons of the Chinese and their English equivalents.
由CAS的Zhendong Dong & Qiang Dong開發(fā)初茶,是一個類似于WordNet的東東Statistical Language Modeling Toolkit
http://svr-www.eng.cam.ac.uk/~prc14/toolkit.html
The CMU-Cambridge Statistical Language Modeling toolkit is a suite of UNIX software tools to facilitate the construction and testing of statistical language models.SRI Language Modeling Toolkit (GPL)
www.speech.sri.com/projects/srilm/
SRILM is a toolkit for building and applying statistical language models (LMs), primarily for use in speech recognition, statistical tagging and segmentation. It has been under development in the SRI Speech Technology and Research Laboratory since 1995.ReWrite Decoder
http://www.isi.edu/licensed-sw/rewrite-decoder/
The ISI ReWrite Decoder Release 1.0.0a by Daniel Marcu and Ulrich Germann. It is a program that translates from one natural languge into another using statistical machine translation.GATE (General Architecture for Text Engineering)
http://gate.ac.uk/
A Java Library for Text Engineering
III. Machine Learning
YASMET: Yet Another Small MaxEnt Toolkit (Statistical Machine Learning)
http://www.fjoch.com/YASMET.html
由Franz Josef Och編寫。此外浊闪,OpenNLP項目里有一個java的MaxEnt工具恼布,使用GIS估計參數(shù),由東北大學(xué)的張樂(目前在英國留學(xué))port為C++版本LibSVM (BSD)
由國立臺灣大學(xué)(ntu)的Chih-Jen Lin開發(fā)搁宾,有C++折汞,Java,perl盖腿,C#等多個語言版本
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
LIBSVM is an integrated software for support vector classification, (C-SVC, nu-SVC ), regression (epsilon-SVR, nu-SVR) and distribution estimation (one-class SVM ). It supports multi-class classification.SVM Light (connect if for commercial use)
由cornell的Thorsten Joachims在dortmund大學(xué)時開發(fā)爽待,成為LibSVM之后最為有名的SVM軟件包。開源翩腐,用C語言編寫鸟款,用于ranking問題
http://svmlight.joachims.org/CLUTO (GPL)
http://www-users.cs.umn.edu/~karypis/cluto/
a software package for clustering low- and high-dimensional datasets
這個軟件包只提供executable/library兩種形式,不提供源代碼下載CRF++ (LGPL/BSD)
http://chasen.org/~taku/software/CRF++/
Yet Another CRF toolkit for segmenting/labelling sequential data
CRF(Conditional Random Fields)茂卦,由HMM/MEMM發(fā)展起來何什,廣泛用于IE、IR等龙、NLP領(lǐng)域SVM Struct (non-commerical)
http://www.cs.cornell.edu/People/tj/svm_light/svm_struct.html
同SVM Light处渣,均由cornell的Thorsten Joachims開發(fā)伶贰。
SVMstruct is a Support Vector Machine (SVM) algorithm for predicting multivariate outputs. It performs supervised learning by approximating a mapping
h: X –> Y
using labeled training examples (x1,y1), …, (xn,yn).
Unlike regular SVMs, however, which consider only univariate predictions like in classification and regression, SVMstruct can predict complex objects y like trees, sequences, or sets. Examples of problems with complex outputs are natural language parsing, sequence alignment in protein homology detection, and markov models for part-of-speech tagging.
SVMstruct can be thought of as an API for implementing different kinds of complex prediction algorithms. Currently, we have implemented the following learning tasks:
SVMmulticlass: Multi-class classification. Learns to predict one of k mutually exclusive classes. This is probably the simplest possible instance of SVMstruct and serves as a tutorial example of how to use the programming interface.
SVMcfg: Learns a weighted context free grammar from examples. Training examples (e.g. for natural language parsing) specify the sentence along with the correct parse tree. The goal is to predict the parse tree of new sentences.
SVMalign: Learning to align sequences. Given examples of how sequence pairs align, the goal is to learn the substitution matrix as well as the insertion and deletion costs of operations so that one can predict alignments of new sequences.
SVMhmm: Learns a Markov model from examples. Training examples (e.g. for part-of-speech tagging) specify the sequence of words along with the correct assignment of tags (i.e. states). The goal is to predict the tag sequences for new sentences.
IV. Misc:
Notepad++: (GPL)
一個開源編輯器,支持C#罐栈,perl黍衙,CSS等幾十種語言的關(guān)鍵字,功能可與新版的UltraEdit荠诬,Visual Studio .NET媲美
http://notepad-plus.sourceforge.netWinMerge: (GPL)
用于文本內(nèi)容比較们豌,找出不同版本的兩個程序的差異
winmerge.sourceforge.net/OpenPerlIDE: (GPL)
開源的perl編輯器,內(nèi)置編譯浅妆、逐行調(diào)試功能
open-perl-ide.sourceforge.net/
ps: 論起編輯器偶見過的最好的還是VS .NET了,在每個function前面有+/-號支持expand/collapse障癌,支持區(qū)域copy/cut/paste凌外,使用ctrl+ c/ctrl+x/ctrl+v可以一次選取一行,使用ctrl+k+c/ctrl+k+u可以comment/uncomment多行涛浙,還有還有…… Visual Studio .NET is really kool:DBerkeley DB (dual license)
http://www.sleepycat.com/
Berkeley DB不是一個關(guān)系數(shù)據(jù)庫康辑,它被稱做是一個嵌入式數(shù)據(jù)庫:對于c/s模型來說,它的client和server共用一個地址空間轿亮。由于數(shù)據(jù)庫最初是從文件系統(tǒng)中發(fā)展起來的疮薇,它更像是一個key-value pair的字典型數(shù)據(jù)庫。而且數(shù)據(jù)庫文件能夠序列化到硬盤中我注,所以不受內(nèi)存大小限制按咒。BDB有個子版本Berkeley DB XML,它是一個xml數(shù)據(jù)庫:以xml文件形式存儲數(shù)據(jù)但骨?BDB已被包括microsoft励七、google、HP奔缠、ford掠抬、motorola等公司嵌入到自己的產(chǎn)品中去了
Berkeley DB (libdb) is a programmatic toolkit that provides embedded database support for both traditional and client/server applications. It includes b+tree, queue, extended linear hashing, fixed, and variable-length record access methods, transactions, locking, logging, shared memory caching, database recovery, and replication for highly available systems. DB supports C, C++, Java, PHP, and Perl APIs.
It turns out that at a basic level Berkeley DB is just a very high performance, reliable way of persisting dictionary style data structures – anything where a piece of data can be stored and looked up using a unique key. The key and the value can each be up to 4 gigabytes in length and can consist of anything that can be crammed in to a string of bytes, so what you do with it is completely up to you. The only operations available are “store this value under this key”, “check if this key exists” and “retrieve the value for this key” so conceptually it’s pretty simple – the complicated stuff all happens under the hood.
case study:
Ask Jeeves uses Berkeley DB to provide an easy-to-use tool for searching the Internet.
Microsoft uses Berkeley DB for the Groove collaboration software
AOL uses Berkeley DB for search tool meta-data and other services.
Hitachi uses Berkeley DB in its directory services server product.
Ford uses Berkeley DB to authenticate partners who access Ford’s Web applications.
Hewlett Packard uses Berkeley DB in serveral products, including storage, security and wireless software.
Google uses Berkeley DB High Availability for Google Accounts.
Motorola uses Berkeley DB to track mobile units in its wireless radio network products.R (GPL)
http://www.r-project.org/
R is a language and environment for statistical computing and graphics. It is a GNU project which is similar to the S language and environment which was developed at Bell Laboratories (formerly AT&T, now Lucent Technologies) by John Chambers and colleagues. R can be considered as a different implementation of S. There are some important differences, but much code written for S runs unaltered under R.
R provides a wide variety of statistical (linear and nonlinear modelling, classical statistical tests, time-series analysis, classification, clustering, …) and graphical techniques, and is highly extensible. The S language is often the vehicle of choice for research in statistical methodology, and R provides an Open Source route to participation in that activity.
One of R’s strengths is the ease with which well-designed publication-quality plots can be produced, including mathematical symbols and formulae where needed. Great care has been taken over the defaults for the minor design choices in graphics, but the user retains full control.
R is available as Free Software under the terms of the Free Software Foundation’s GNU General Public License in source code form. It compiles and runs on a wide variety of UNIX platforms and similar systems (including FreeBSD and Linux), Windows and MacOS.
R統(tǒng)計軟件與MatLab類似,都是用在科學(xué)計算領(lǐng)域的校哎。
深度學(xué)習(xí)工具
1. Caffe
Caffe是加州大學(xué)伯克利分校攻讀博士學(xué)位者的杰作两波,這是一種深度學(xué)習(xí)框架,基于表達(dá)式架構(gòu)和可擴(kuò)展代碼闷哆。速度快是它賴以成名的特點腰奋,因而在研究人員和企業(yè)用戶當(dāng)中都備受歡迎。據(jù)官方網(wǎng)站聲稱抱怔,僅僅使用一個英偉達(dá)K40 GPU氛堕,它在短短一天內(nèi)就能夠處理6000多萬個圖像。它由伯克利視覺和學(xué)習(xí)中心(BVLC)管理野蝇,英偉達(dá)和亞馬遜等公司提供了撥款讼稚,支持它的發(fā)展括儒。
主要應(yīng)用在計算機(jī)視覺領(lǐng)域。
總的來說锐想,Caffe的特點如下:
(a)表達(dá)方便:模型和優(yōu)化辦法的表達(dá)用的是純文本辦法表示帮寻,而不是代碼
(b)速度快:對于科研來說,我們提供接近于工業(yè)化的速度對于大規(guī)模數(shù)據(jù)和當(dāng)前最牛掰的算法模型是非常重要的
(c)模塊化:具有新任務(wù)和設(shè)置需要的靈活性和擴(kuò)展性
(d)開放性:科學(xué)研究和應(yīng)用程序可調(diào)用同樣的代碼赠摇,參考模型固逗,并且結(jié)果可重現(xiàn)。
(e)社區(qū)性:學(xué)術(shù)研究藕帜,啟動原型和工業(yè)應(yīng)用領(lǐng)域的伙伴以一個BSD-2項目的形式共同討論和開發(fā)烫罩。
Caffe的主要特性如下。
開發(fā)者:Berkeley Vision and LearningCenter
底層語言:C++
接口語言:命令行洽故,Python贝攒,Matlab
運(yùn)行方式:CPU or GPU
操作系統(tǒng):Windows or Linux
安裝方式:需要配置相關(guān)Python庫 需要CUDA支持 需要OpenCV支持
支持的深度學(xué)習(xí)網(wǎng)絡(luò):支持大部分先進(jìn)的網(wǎng)絡(luò)
集成的數(shù)據(jù)集:CIFAR10 ILSVRC12 MNIST
優(yōu)勢:網(wǎng)絡(luò)開發(fā)和構(gòu)建過程簡單,運(yùn)行速度快时甚,實現(xiàn)了多種接口隘弊,實現(xiàn)了跨平臺,可能是第一個主流的工業(yè)級深度學(xué)習(xí)工具荒适。
不足:Caffe對遞歸網(wǎng)絡(luò)和語言建模的支持很差梨熙,支持pycaffe接口,但這僅僅是用來輔助命令行接口的刀诬,而即便是使用pycaffe也必須使用protobuf定義模型 咽扇。
下載地址:https://github.com/BVLC/caffe
官方鏈接:http://caffe.berkeleyvision.org
2. TensorFlow
TensorFlow 是谷歌發(fā)布的第二代機(jī)器學(xué)習(xí)系統(tǒng)。具體的講陕壹,TensorFlow是一個利用數(shù)據(jù)流圖(Data Flow Graphs)進(jìn)行數(shù)值計算的開源軟件庫:圖中的節(jié)點(Nodes)代表數(shù)學(xué)運(yùn)算操作肌割,同時圖中的邊(Edges)表示節(jié)點之間相互流通的多維數(shù)組,即張量(Tensors)帐要。這種靈活的架構(gòu)可以讓使用者多樣化地將計算部署在臺式機(jī)把敞、服務(wù)器或者移動設(shè)備的一個或多個CPU上,而且無需重寫代碼榨惠。
TensorFlow具有以下特性:
開發(fā)者:Google Brain Team
底層語言:C++ Python
接口語言:Python C/C++
運(yùn)行方式:CPU or GPU
操作系統(tǒng):Linux or Mac OS X
安裝方式:需要安裝Python支持
支持的深度學(xué)習(xí)網(wǎng)絡(luò):卷積網(wǎng)絡(luò)循環(huán)網(wǎng)絡(luò)
優(yōu)勢:TensorFlo是一個理想的RNN(遞歸神經(jīng)網(wǎng)絡(luò))
API和實現(xiàn)奋早,而且它架構(gòu)清晰,采用了模塊化設(shè)計赠橙,支持多種前端和執(zhí)行平臺耽装。
不足:TensorFlow并不支持雙向RNN和3D卷積,同時公共版本的圖定義也不支持循環(huán)和條件控制期揪,這使得RNN的實現(xiàn)并不理想掉奄,因為必須要使用Python循環(huán)且無法進(jìn)行圖編譯優(yōu)化。
下載地址:www.tensorflow.org/
3. Torch
Torch自稱是“一種科學(xué)計算框架凤薛,廣泛支持把GPU放在首位的機(jī)器學(xué)習(xí)算法姓建〉郑”這里的重點在于靈活性和速度。此外速兔,很容易與眾多方面的軟件包結(jié)合使用:機(jī)器學(xué)習(xí)墅拭、計算機(jī)視覺、信號處理涣狗、并行處理谍婉、圖像、視頻镀钓、音頻和網(wǎng)絡(luò)穗熬。它依賴一種名為LuaJIT的腳本語言,這種語言基于Lua丁溅。
Torch誕生已經(jīng)有十年之久唤蔗,但是真正起勢得益于2015年Facebook開源了大量Torch的深度學(xué)習(xí)模塊和擴(kuò)展。Torch另外一個特殊之處是采用了不怎么流行的編程語言Lua(該語言曾被用來開發(fā)視頻游戲)唧瘾。
Torch的主要特性如下。
開發(fā)者:Facebook
底層語言:用快速的腳本語言LuaJit開發(fā)别凤,底層是C/CUDA實現(xiàn)
接口語言:Lua語言
運(yùn)行方式:CPU or GPU
操作系統(tǒng):Windows or Linux
安裝方式:需要安裝Lua語言支持
支持的深度學(xué)習(xí)網(wǎng)絡(luò):支持大部分先進(jìn)的網(wǎng)絡(luò)
優(yōu)勢:對卷積網(wǎng)絡(luò)的支持非常好饰序。Torch通過很多非官方的擴(kuò)展支持大量的RNN,同時網(wǎng)絡(luò)的定義方法也有很多種规哪。
不足:Torch本質(zhì)上是以圖層的方式定義網(wǎng)絡(luò)的求豫,這種粗粒度的方式使得它對新圖層類型的擴(kuò)展缺乏足夠的支持。模型運(yùn)行需要LuaJIT的支持诉稍,雖然這樣做對性能的影響并不大蝠嘉,但卻對集成造成了很大的障礙,使得它的吸引力不如Caffe/CNTK/TensorFlow等直接支持C++的框架杯巨。
下載地址:http://torch.ch/
4. PyTorch
Torch 是一個十分老牌蚤告、對多維矩陣數(shù)據(jù)進(jìn)行操作的張量(tensor)庫,在機(jī)器學(xué)習(xí)和其他數(shù)學(xué)密集型應(yīng)用有廣泛應(yīng)用服爷。但由于其語言采用 Lua杜恰,導(dǎo)致在國內(nèi)一直很小眾,并逐漸被支持 Python 的 Tensorflow 搶走用戶仍源。如今心褐,作為經(jīng)典機(jī)器學(xué)習(xí)庫 Torch 的端口,PyTorch 為 Python 語言使用者提供了舒適的寫代碼選擇笼踩。
基于Python的科學(xué)計算包逗爹,其旨在服務(wù)兩類場合:
- 替代numpy發(fā)揮GPU潛能
- 一個提供了高度靈活性和效率的深度學(xué)習(xí)實驗性平臺
PyTorch 的特點和優(yōu)勢
PyTorch 提供了:
- 運(yùn)行在 GPU 或 CPU 之上、基礎(chǔ)的張量操作庫
- 內(nèi)置的神經(jīng)網(wǎng)絡(luò)庫
- 模型訓(xùn)練功能
支持共享內(nèi)存的多進(jìn)程并發(fā)(multiprocessing )庫嚎于。PyTorch 開發(fā)團(tuán)隊表示:這對數(shù)據(jù)載入和 hogwild 訓(xùn)練十分有幫助掘而。
PyTorch 還為改進(jìn)現(xiàn)有的神經(jīng)網(wǎng)絡(luò)挟冠,提供了更快速的方法——不需要從頭重新構(gòu)建整個網(wǎng)絡(luò)。這是由于 PyTorch 采用了動態(tài)計算圖(dynamic computational graph)結(jié)構(gòu)镣屹,而不是大多數(shù)開源框架圃郊,比如 TensorFlow、Caffe女蜈、CNTK持舆、Theano 等采用的靜態(tài)計算圖。雷鋒網(wǎng)獲知伪窖,該技術(shù)從另一個 Python 的神經(jīng)網(wǎng)絡(luò)框架——Chainer 那里借用逸寓。開發(fā)者團(tuán)隊還強(qiáng)調(diào) PyTorch 優(yōu)越的內(nèi)存效率,因為它采用了定制的 GPU 內(nèi)存分配器覆山。這使得開發(fā)者的深度學(xué)習(xí)模型能夠有“最大限度的內(nèi)存效能”竹伸,訓(xùn)練比從前更大的深度神經(jīng)網(wǎng)絡(luò)。
官方鏈接:http://pytorch.org/
github:https://github.com/pytorch/pytorch
5. Theano
Theano是一個Python庫簇宽,它允許使用者有效地定義勋篓、優(yōu)化和評估涉及多維數(shù)組的數(shù)學(xué)表達(dá)式,同時支持GPU和高效符號分化操作魏割。
Theano具有以下特點:
(a)與NumPy緊密相關(guān)(在Theano的編譯功能中使用了Numpy.ndarray)
(b)透明地使用GPU(執(zhí)行數(shù)據(jù)密集型計算比CPU快了140多倍)
(c)速度和穩(wěn)定性的優(yōu)化(即使輸入的x非常小也可以得到log(1+x)正確結(jié)果)
(d)動態(tài)生成C代碼(表達(dá)式計算更快)
(e)廣泛的單元測試和自我驗證(多種錯誤類型的檢測和判定)
自2007年起譬嚣,Theano一直致力于大型密集型科學(xué)計算研究,但它目前也很被廣泛應(yīng)用在課堂之上(如Montreal大學(xué)的深度學(xué)習(xí)/機(jī)器學(xué)習(xí)課程)钞它。
Theano的主要特性如下拜银。
底層語言:Python
接口語言:Python
運(yùn)行方式:CPU or GPU
操作系統(tǒng):Windows or Linux
安裝方式:需要配置相關(guān)Python庫 需要CUDA支持
支持的深度學(xué)習(xí)網(wǎng)絡(luò):支持大部分先進(jìn)的網(wǎng)絡(luò),提供數(shù)學(xué)計算支持遭垛,網(wǎng)絡(luò)需要自己實現(xiàn)尼桶,缺少寫好的例子。
集成的數(shù)據(jù)集:無
優(yōu)勢:它引領(lǐng)了符號圖在編程網(wǎng)絡(luò)中使用的趨勢锯仪,Theano的符號API支持循環(huán)控制泵督,讓RNN的實現(xiàn)更加容易且高效。而且Theano跨平臺庶喜,模型能夠部署到Windows環(huán)境上幌蚊。
不足:啟動時間長,缺乏底層接口溃卡,并且其Python解釋器也很低效溢豆,對工業(yè)用戶而言缺少吸引力。
下載地址:https://github.com/Theano/Theano
6. Keras
Keras是極其精簡并高度模塊化的神經(jīng)網(wǎng)絡(luò)庫瘸羡,在TensorFlow 或 Theano 上都能夠運(yùn)行漩仙,是一個高度模塊化的神經(jīng)網(wǎng)絡(luò)庫,支持GPU和CPU運(yùn)算。Keras可以說是Python版的Torch7队他,對于快速構(gòu)建CNN模型非常方便卷仑,同時也包含了一些最新文獻(xiàn)的算法,比如Batch Noramlize麸折,文檔教程也很全锡凝,在官網(wǎng)上作者都是直接給例子淺顯易懂。Keras也支持保存訓(xùn)練好的參數(shù)垢啼,然后加載已經(jīng)訓(xùn)練好的參數(shù)窜锯,進(jìn)行繼續(xù)訓(xùn)練。
Keras側(cè)重于開發(fā)快速實驗芭析,用可能最少延遲實現(xiàn)從理念到結(jié)果的轉(zhuǎn)變锚扎,即為做好一項研究的關(guān)鍵。
當(dāng)需要使用符合如下要求的深度學(xué)習(xí)的庫時馁启,就可以考慮使用Keras:
(a)考慮到簡單快速的原型法(通過總體模塊性驾孔、精簡性以及可擴(kuò)展性);
(b)同時支持卷積網(wǎng)絡(luò)和遞歸網(wǎng)絡(luò)惯疙,以及兩者之間的組合翠勉;
(c)支持任意連接方案(包括多輸入多輸出訓(xùn)練);
(d)可在CPU和GPU 上無縫運(yùn)行霉颠。
下載地址:https://github.com/fchollet/keras
7. MXNET
MXNet是一個兼具效率和靈活性的深度學(xué)習(xí)框架对碌。它允許使用者將符號編程和命令式編程相結(jié)合,以追求效率和生產(chǎn)力的最大化掉分。其核心是動態(tài)依賴調(diào)度程序俭缓,該程序可以動態(tài)自動進(jìn)行并行化符號和命令的操作克伊。其中部署的圖形優(yōu)化層使得符號操作更快和內(nèi)存利用率更高酥郭。該庫輕量且便攜帶,并且可擴(kuò)展到多個GPU和多臺主機(jī)上愿吹。
MXNET具有以下特性:
開發(fā)者:分布式(深度)機(jī)器學(xué)習(xí)社區(qū)
底層語言:C++
接口語言:C++ Python Julia Matlab JavaScript R Scala
運(yùn)行方式:CPU or GPU
操作系統(tǒng):Linux OS X Windows
安裝方式:需要Python和CUDA支持
支持的深度學(xué)習(xí)網(wǎng)絡(luò):隨機(jī)儲存器/動態(tài)貝葉斯網(wǎng)絡(luò) 卷積網(wǎng)絡(luò) 循環(huán)網(wǎng)絡(luò)
優(yōu)勢:MXNet強(qiáng)調(diào)提高內(nèi)存使用的效率不从,甚至能在智能手機(jī)上運(yùn)行諸如圖像識別等任務(wù)。MXNet整合了各種編程方法的優(yōu)勢最大限度地提高靈活性和效率犁跪。另外椿息,MXNet對“云計算”友好,直接兼容S3坷衍、HDFS和Azure寝优。
下載地址:https://github.com/dmlc/mxnet
8. DeepLearn Toolbox
DeepLearn Toolbox 是matlab的深度學(xué)習(xí)工具包。支持的深度學(xué)習(xí)網(wǎng)絡(luò):人工神經(jīng)網(wǎng)絡(luò)(NN)枫耳,卷積神經(jīng)網(wǎng)絡(luò)(CNN)乏矾,深度置信網(wǎng)(DBN),棧式自動編碼器(SAE),卷積自動編碼器(CAE)钻心。
集成的數(shù)據(jù)集:MNIST
優(yōu)勢:使用Matlab實現(xiàn)凄硼,源碼短且可讀性強(qiáng),適合深度學(xué)習(xí)入門學(xué)習(xí)捷沸。
不足:集成的網(wǎng)絡(luò)構(gòu)建方法及網(wǎng)絡(luò)參數(shù)選擇較少摊沉,不能自由設(shè)定網(wǎng)絡(luò)結(jié)構(gòu)和部分參數(shù),可變性差痒给,設(shè)計自己的網(wǎng)絡(luò)需要大量編程说墨。
下載地址:https://github.com/rasmusbergpalm/DeepLearnToolbox
9. CNTK
CNTK(Computational Network Tookit)的全稱是計算網(wǎng)絡(luò)工具包,它是微軟的開源人工智能工具之一侈玄。它聲稱擁有出眾的性能婉刀,無論在只有CPU的系統(tǒng)上運(yùn)行,在只有一個CPU的系統(tǒng)上運(yùn)行序仙,在擁有多個GPU的系統(tǒng)上運(yùn)行突颊,還是在擁有多個GPU的多臺機(jī)器上運(yùn)行,都是如此潘悼。微軟主要用它來研究語音識別律秃,但是它同樣適用于其他應(yīng)用領(lǐng)域,比如機(jī)器翻譯治唤、圖像識別棒动、圖像字幕、文本處理宾添、語言理解和語言建模船惨。
CNTK(Computational Network Toolkit )是一個統(tǒng)一的深度學(xué)習(xí)工具包,該工具包通過一個有向圖將神經(jīng)網(wǎng)絡(luò)描述為一系列計算步驟缕陕。在有向圖中粱锐,葉節(jié)點表示輸入值或網(wǎng)絡(luò)參數(shù),其他節(jié)點表示該節(jié)點輸入之上的矩陣運(yùn)算扛邑。
CNTK具有以下特性:
開發(fā)者:Microsoft
底層語言:C++
接口語言:Python C/C++ 命令行
運(yùn)行方式:CPU or GPU
操作系統(tǒng):Windows or Linux
安裝方式:安裝相關(guān)依賴庫并編譯源碼
支持的深度學(xué)習(xí)網(wǎng)絡(luò):前饋DNN網(wǎng)絡(luò) 卷積網(wǎng)絡(luò) 循環(huán)網(wǎng)絡(luò)
優(yōu)勢:CNTK通過細(xì)粒度的構(gòu)件塊讓用戶不需要使用低層次的語言就能創(chuàng)建新的怜浅、復(fù)雜的層類型。與Caffe一樣也是基于C++并且跨平臺的蔬崩,大部分情況下部署非常簡單恶座。同時它實現(xiàn)了跨多GPU 和服務(wù)器自動分化和并行化的隨機(jī)梯度下降(SGD,誤差反向傳播)學(xué)習(xí)沥阳。
不足:CNTK不支持ARM架構(gòu)跨琳,這限制了它在移動設(shè)備上的能力。
下載地址:https://github.com/Microsoft/CNTK
相關(guān)鏈接:https://www.cntk.ai
10. DMTK
與CNTK一樣桐罕,分布式機(jī)器學(xué)習(xí)工具包(DMTK脉让,Distributed Machine Learning Toolkit)是微軟的開源人工智能工具之一樟氢。它是為大數(shù)據(jù)應(yīng)用領(lǐng)域設(shè)計,旨在更快地訓(xùn)練人工智能系統(tǒng)侠鳄。它包括三大部分:DMTK框架埠啃、LightLDA主題模型算法以及分布式(Multisense)單詞嵌入算法。微軟聲稱伟恶,在8個集群機(jī)器上碴开,它能夠“針對擁有1000多億個權(quán)標(biāo)的文檔集合,訓(xùn)練擁有100萬個主題和1000萬個單詞詞匯表(共有10萬億個參數(shù))的主題模型博秫,”這個成績是其他工具無法比擬的潦牛,這也證明了DMTK的速度有多快。
相關(guān)鏈接:http://www.dmtk.io
11. Deeplearning4j
Deeplearning4j是一種面向Java虛擬機(jī)(JVM)的開源深度學(xué)習(xí)庫挡育。它在分布式環(huán)境中運(yùn)行巴碗,可與Hadoop和Apache Spark整合起來。它讓用戶可以配置深度神經(jīng)網(wǎng)絡(luò)即寒,與Java橡淆、Scala及其他JVM語言兼容。
該項目由一家名為Skymind的商業(yè)公司管理母赵,該公司提供收費(fèi)的支持逸爵、培訓(xùn)和Deeplearning4j的企業(yè)發(fā)行版。
語言:Java
相關(guān)鏈接:http://deeplearning4j.org
12. H2O
H2O更加專注于人工智能在企業(yè)領(lǐng)域的應(yīng)用凹嘲,而不是在研究領(lǐng)域的應(yīng)用师倔,它的用戶包括諸多大公司:第一資本、思科周蹭、尼爾森Catalina趋艘、貝寶及Transamerica。它聲稱讓任何人都可以使用機(jī)器學(xué)習(xí)和預(yù)測分析的強(qiáng)大功能凶朗,解決業(yè)務(wù)問題瓷胧。它可用于預(yù)測建模、風(fēng)險及欺詐分析俱尼、保險分析抖单、廣告技術(shù)萎攒、醫(yī)療保健和客戶情報遇八。
它有兩種開源版本:標(biāo)準(zhǔn)的H2O和Sparkling Water,后者與Apache Spark集成起來耍休。它還提供收費(fèi)的企業(yè)支持刃永。
相關(guān)鏈接:http://www.h2o.ai
13. Mahout
Mahout是Apache基金會下面的一個項目,是一種開源機(jī)器學(xué)習(xí)框架羊精。據(jù)官方網(wǎng)站聲稱斯够,它提供三種主要的特性:用于構(gòu)建可擴(kuò)展算法的編程環(huán)境囚玫、面向Spark和H2O等工具的預(yù)制算法,以及名為Samsara的向量數(shù)學(xué)試驗環(huán)境读规。使用Mahout的公司包括:Adobe抓督、埃森哲、Foursquare束亏、英特爾铃在、領(lǐng)英、推特碍遍、雅虎及其他許多公司定铜。可通過官方網(wǎng)站上所列的第三方獲得專業(yè)支持怕敬。
相關(guān)鏈接:http://mahout.apache.org
14. MLlib
Apache Spark以速度快著稱揣炕,它已成為最流行的大數(shù)據(jù)處理工具之一。MLlib是Spark的可擴(kuò)展機(jī)器學(xué)習(xí)庫东跪。它與Hadoop整合起來畸陡,可與NumPy和R協(xié)同操作。它包括一大批機(jī)器學(xué)習(xí)算法虽填,可用于分類罩锐、回歸、決策樹卤唉、推薦涩惑、聚類、主題建模桑驱、特性轉(zhuǎn)換竭恬、模型評估、機(jī)器學(xué)習(xí)管道構(gòu)建熬的、機(jī)器學(xué)習(xí)持久性痊硕、生存分析、頻繁項集押框、順序模式挖掘岔绸、分布式線性代數(shù)和統(tǒng)計。
相關(guān)鏈接:https://spark.apache.org/mllib/
15. NuPIC
NuPIC由一家名為Numenta的公司管理橡伞,這是一種開源人工智能項目盒揉,基于一種名為分層式即時記憶(即HTM)的理論。實際上兑徘,HTM試圖建立一種模仿人類大腦新皮層而建的計算機(jī)系統(tǒng)榄攀。目的在于制造“處理許多認(rèn)知任務(wù)時接近或勝過人類表現(xiàn)”的機(jī)器侧馅。
除了開源許可證外,Numenta還提供采用商業(yè)許可證的NuPic糯景,它還提供作為它技術(shù)底層的專利方面的許可證。
相關(guān)鏈接:http://numenta.org
16. OpenNN
OpenNN為深入了解人工智能的研究人員和開發(fā)人員而設(shè)計,這是一種用于實現(xiàn)神經(jīng)網(wǎng)絡(luò)的C++編程庫。主要特性包括:深度架構(gòu)和卓越性能。官方網(wǎng)站上有全面的說明文檔威蕉,包括解釋神經(jīng)網(wǎng)絡(luò)基礎(chǔ)知識的入門教程¢先裕可通過Artelnics獲得OpenNN的收費(fèi)支持忘伞,總部位于西班牙的這家公司主攻預(yù)測分析。
相關(guān)鏈接:http://www.opennn.net
17. OpenCyc
OpenCyc由一家名為Cycorp的公司開發(fā)沙兰,它讓用戶可以訪問Cyc知識庫和常識推理引擎氓奈。它包括239000多個術(shù)語、約2093000個三元組以及大約69000個owl:sameAs鏈接(指向外部語義數(shù)據(jù)命名空間)鼎天。它用于豐富域名建模舀奶、語義數(shù)據(jù)整合、文本理解斋射、特定領(lǐng)域?qū)<蚁到y(tǒng)和游戲人工智能育勺。這家公司還提供Cyc的另外兩個版本:一個是非開源免費(fèi)版本,面向研究人員;另一個面向企業(yè)用戶罗岖,需要收費(fèi)涧至。
相關(guān)鏈接:http://www.cyc.com/platform/opencyc/
18. Oryx 2
Oryx 2建立在Apache Spark和Kafka上,這是一種專門的應(yīng)用開發(fā)框架桑包,面向大規(guī)模的機(jī)器學(xué)習(xí)南蓬。它使用了一種獨特的lambda架構(gòu),有三個層次哑了。開發(fā)人員可使用Oryx 2來構(gòu)建新的應(yīng)用程序赘方,它還包括一些預(yù)制應(yīng)用程序,處理常見的大數(shù)據(jù)任務(wù)弱左,比如協(xié)作過濾窄陡、分類、回歸和聚類拆火。大數(shù)據(jù)工具廠商Cloudera建立了最初的Oryx 1項目跳夭,一直大力參與持續(xù)開發(fā)工作。
相關(guān)鏈接:http://oryx.io
19. PredictionIO
今年2月份们镜,Salesforce收購了PredictionIO币叹,后來在7月份,它把該平臺連同商標(biāo)一起捐獻(xiàn)給了Apache基金會憎账,該基金會將它列為孵化器項目套硼。所以卡辰,雖然Salesforce使用PredictionIO技術(shù)來完善自己的機(jī)器學(xué)習(xí)功能胞皱,但是開源版本方面的工作也會繼續(xù)下去邪意。它可幫助用戶構(gòu)建擁有機(jī)器學(xué)習(xí)功能的預(yù)測引擎,這些功能可用來部署實時響應(yīng)動態(tài)查詢的Web服務(wù)反砌。
相關(guān)鏈接:https://prediction.io
20. SystemML
SystemML最初由IBM開發(fā)雾鬼,現(xiàn)在它是Apache旗下的一個大數(shù)據(jù)項目。它提供了一種高度可擴(kuò)展的平臺宴树,可以實施用R或類似Python的語法編寫的高級運(yùn)算和算法策菜。企業(yè)已經(jīng)在用它來跟蹤汽車維修方面的客戶服務(wù),引導(dǎo)機(jī)場客流量酒贬,或者將社交媒體數(shù)據(jù)與銀行客戶聯(lián)系起來又憨。它可以在Spark或Hadoop上運(yùn)行。
相關(guān)鏈接:http://systemml.apache.org
github 上一些工具:
GitHub 上 57 款最流行的開源深度學(xué)習(xí)項目
https://juejin.im/entry/583ff5b00ce46300576427d2
機(jī)器學(xué)習(xí)(Machine Learning)&深度學(xué)習(xí)(Deep Learning)資料(Chapter 1)
https://github.com/ty4z2008/Qix/blob/master/dl.mdhttps://github.com/ty4z2008/Qix/blob/master/dl.md
參考
http://www.52ml.net/12043.html
http://blog.csdn.net/myarrow/article/details/50608334
http://os.51cto.com/art/201609/517610.htm