R Bibliotheken für tiefes Lernen


56

Ich habe mich gefragt, ob es da draußen gute R-Bibliotheken für tieflernende neuronale Netze gibt. Ich weiß, dass es die nnet, neuralnetund gibt RSNNS, aber keine davon scheint Deep-Learning-Methoden zu implementieren.

Ich interessiere mich besonders für unbeaufsichtigtes, gefolgt von beaufsichtigtem Lernen und für die Verwendung von Abbrüchen, um eine Co-Anpassung zu verhindern .

/ edit: Nach ein paar Jahren fand ich das h20 Deep Learning-Paket sehr gut gestaltet und einfach zu installieren. Ich mag auch das mxnet-Paket , das (etwas) schwieriger zu installieren ist, aber Dinge wie Covnets unterstützt, auf GPUs läuft und sehr schnell ist.


1
Related: stats.stackexchange.com/questions/40598/… Diese Methoden sind meines Wissens nicht (öffentlich) verfügbar in R.
Momo

@Momo: Danke für den Link. Gibt es einen öffentlichen C-, C ++ - oder Fortran-Code, der von R aus aufgerufen werden kann?
Zach

4
Schauen Sie sich die CUV - Bibliothek oder Eblearn (mehr hier deeplearning.net/software_links ) Der Python Libs könnte eine gute Alternative zu R. sein
Momo


siehe implementieren von R hier .
Patric

Antworten:


19

OpenSource h2o.deepLearning () ist ein Paket für Deeplearning in R von h2o.ai hier ist eine Beschreibung http://www.r-bloggers.com/things-to-try-after-user-part-1-deep-learning- mit-h2o /

Und Code: https://gist.github.com/woobe/3e728e02f6cc03ab86d8#file-link_data-r

######## *Convert Breast Cancer data into H2O*
dat <- BreastCancer[, -1]  # remove the ID column
dat_h2o <- as.h2o(localH2O, dat, key = 'dat')

######## *Import MNIST CSV as H2O*
dat_h2o <- h2o.importFile(localH2O, path = ".../mnist_train.csv")

######## *Using the DNN model for predictions*
h2o_yhat_test <- h2o.predict(model, test_h2o)

######## *Converting H2O format into data frame*
df_yhat_test <- as.data.frame(h2o_yhat_test)

######## Start a local cluster with 2GB RAM
library(h2o)
localH2O = h2o.init(ip = "localhost", port = 54321, startH2O = TRUE, 
                    Xmx = '2g') 
########Execute deeplearning

model <- h2o.deeplearning( x = 2:785,  # column numbers for predictors
               y = 1,   # column number for label
               data = train_h2o, # data in H2O format
               activation = "TanhWithDropout", # or 'Tanh'
               input_dropout_ratio = 0.2, # % of inputs dropout
               hidden_dropout_ratios = c(0.5,0.5,0.5), # % for nodes dropout
               balance_classes = TRUE, 
               hidden = c(50,50,50), # three layers of 50 nodes
               epochs = 100) # max. no. of epochs

19

Es gibt ein Paket namens "darch"

http://cran.um.ac.ir/web/packages/darch/index.html

Zitat von CRAN:

darch: Paket für tiefe Architekturen und Restricted-Bolzmann-Maschinen

Das Darch-Paket basiert auf dem Code von GE Hinton und RR Salakhutdinov (verfügbar unter Matlab Code für Deep-Believe-Netze: letzter Besuch: 01.08.2013). Dieses Paket dient dazu, neuronale Netze mit vielen Schichten (Deep Architectures) zu generieren und mit der Methode zu trainieren, die in den Veröffentlichungen "Ein schneller Lernalgorithmus für Deep-Believe-Netze" (GE Hinton, S. Osindero, YW Teh) und "Reduzierung der Dimensionalität" vorgestellt wurde von Daten mit neuronalen Netzen "(GE Hinton, RR Salakhutdinov). Diese Methode beinhaltet ein Vortraining mit der von GE Hinton (2002) veröffentlichten Methode der kontrastiven Divergenz und eine Feinabstimmung mit gängigen bekannten Trainingsalgorithmen wie Backpropagation oder Conjugate Gradient.


Es wurde gerade archiviert! :-(
Macht

3
darch ist zurück bei CRAN!
Zach

Haben Sie Beispiele gefunden, wie Sie ein Deep-Believe-Netzwerk mit diesem Paket trainieren und es dann zur Vorhersage neuer Daten verwenden können? Ich finde die Benutzeroberfläche, die sie verwendet, sehr unintuitiv.
Zach

Nein habe ich nicht. Gibt es keine Beispiele? Wenn nicht, könnten Sie sie auf dieser Seite veröffentlichen und "Ihre eigene Frage beantworten" und mehr Reputationspunkte erzielen.
Macht

1
Ich werde sie posten, wenn ich welche finde. Bisher gibt es in den Dokumenten einige Beispiele für passende Netzwerke, aber keine Beispiele für Vorhersagen. Und einige der passenden Beispiele haben Fehler.
Zach

13

Es gibt ein weiteres neues Paket für tiefe Netzwerke in R: deepnet

Ich habe es noch nicht ausprobiert, aber es wurde bereits in das Caret- Paket aufgenommen.


12

Um meine eigene Frage zu beantworten, habe ich ein kleines Paket in R für RBMs geschrieben: https://github.com/zachmayer/rbm

Dieses Paket befindet sich noch in der Entwicklung und ich weiß sehr wenig über RBMs, daher würde ich mich über Feedback (und Pull-Anfragen!) Freuen. Sie können das Paket mit devtools installieren :

devtools:::install_github('zachmayer/rbm')
library(rbm)
?rbm
?rbm_gpu
?stacked_rbm

Der Code ähnelt Andrew Landgrafs Implementierung in R und Edwin Chens Implementierung in Python , aber ich habe die Funktion so geschrieben, dass sie der pca-Funktion in Base R ähnelt und Funktionen zum Stapeln enthält. Ich denke, es ist ein bisschen benutzerfreundlicher als das Darch-Paket , dessen Verwendung ich nie herausfinden konnte (noch bevor es aus CRAN entfernt wurde).

Wenn Sie das Paket gputools installiert haben, können Sie Ihre GPU für Matrixoperationen mit der Funktion rbm_gpu verwenden. Das beschleunigt die Dinge sehr! Darüber hinaus wird der Großteil der Arbeit in einem RBM mit Matrixoperationen erledigt, sodass die Installation eines guten BLAS wie openBLAS ebenfalls die Dinge erheblich beschleunigt.

Folgendes passiert, wenn Sie den Code in Edwins Beispiel-Dataset ausführen:

set.seed(10)
print('Data from: https://github.com/echen/restricted-boltzmann-machines')
Alice <- c('Harry_Potter' = 1, Avatar = 1, 'LOTR3' = 1, Gladiator = 0, Titanic = 0, Glitter = 0) #Big SF/fantasy fan.
Bob <- c('Harry_Potter' = 1, Avatar = 0, 'LOTR3' = 1, Gladiator = 0, Titanic = 0, Glitter = 0) #SF/fantasy fan, but doesn't like Avatar.
Carol <- c('Harry_Potter' = 1, Avatar = 1, 'LOTR3' = 1, Gladiator = 0, Titanic = 0, Glitter = 0) #Big SF/fantasy fan.
David <- c('Harry_Potter' = 0, Avatar = 0, 'LOTR3' = 1, Gladiator = 1, Titanic = 1, Glitter = 0) #Big Oscar winners fan.
Eric <- c('Harry_Potter' = 0, Avatar = 0, 'LOTR3' = 1, Gladiator = 1, Titanic = 0, Glitter = 0) #Oscar winners fan, except for Titanic.
Fred <- c('Harry_Potter' = 0, Avatar = 0, 'LOTR3' = 1, Gladiator = 1, Titanic = 1, Glitter = 0) #Big Oscar winners fan.
dat <- rbind(Alice, Bob, Carol, David, Eric, Fred)

#Fit a PCA model and an RBM model
PCA <- prcomp(dat, retx=TRUE)
RBM <- rbm_gpu(dat, retx=TRUE, num_hidden=2)

#Examine the 2 models
round(PCA$rotation, 2) #PCA weights
    round(RBM$rotation, 2) #RBM weights

1
Wenn Sie PCA verwenden, versuchen Sie es propack.svd()aus dem svdPaket.
Macht

@power: Ich benutze nur PCA als Vergleich, aber danke für den Tipp. irlba ist auch ein exzellentes paket um svd zu machen.
Zach

Bietet Ihr neues Paket das "Dropout" -Training?
DavideChicco.it

@ DavideChicco.it Ja, schauen Sie sich die Hilfedatei an ?rbm. Beachten Sie, dass rbm nicht überwacht werden.
Zach

Zach schließt dies wiederkehrende neuronale Netze ein? Dies ist ein großer Bereich für Zeitreihen, nach denen ich gesucht habe, um zu Python zu wechseln.
Versteckte Markov Modell

11

Sie können das Deep Learning-Modul von H2O ausprobieren, es ist verteilt und bietet viele fortgeschrittene Techniken wie Abbruchregulierung und adaptive Lernrate.

Folien: http://www.slideshare.net/0xdata/h2o-deeplearning-nextml Video: https://www.youtube.com/watch?v=gAKbAQu900w&feature=youtu.be

Tutorials: http://learn.h2o.ai Daten und Skripte: http://data.h2o.ai

Dokumentation: http://docs.h2o.ai GitBooks: http://gitbook.io/@h2o


Wenn Sie (der Herausgeber) dieselbe Person wie der ursprüngliche Antwortende sind, führen Sie bitte Ihre Konten zusammen. Dann können Sie Ihre eigenen Beiträge bearbeiten. Informationen zum Zusammenführen Ihrer Konten finden Sie in unserer Hilfe .
gung - Reinstate Monica

6

So fügen Sie eine weitere Antwort hinzu:

mxnet ist unglaublich und ich liebe es. Es ist ein wenig schwierig zu installieren, aber es unterstützt GPUs und mehrere CPUs. Wenn Sie in R vertiefend lernen möchten (insbesondere in Bezug auf Bilder), empfehle ich Ihnen, mit mxnet zu beginnen.


+1, ja, mxnet ist vollständig in C ++ / CUDA implementiert und daher sehr effizient!
Patric

5

Ich habe zwar keine spezielle Deep-Learning-Bibliothek für R gefunden, bin aber auf ähnliche Diskussionen mit R-Bloggern gestoßen. Im Mittelpunkt der Diskussion steht die Verwendung von RBM (Restricted Boltzman Machines). Schauen Sie sich den folgenden Link an:

http://www.r-bloggers.com/restricted-boltzmann-machines-in-r/ (neu eingestellt von "alandgraf.blogspot.com")

Der Autor hat wirklich gute Arbeit geleistet, um einen selbstimplementierten Algorithmus in R zu kapseln. Es muss gesagt werden, dass ich die Gültigkeit des Codes noch nicht überprüft habe, aber es gibt zumindest einen Anflug von Deep Learning, der sich in R abzeichnet.

Ich hoffe das hilft.


Ich habe diesen Code auch gesehen - danke, dass du ihn verlinkt hast. Es ist gut zu sehen, dass RBMs in R auftauchen, aber ich glaube, dass R in Bezug auf Deep Learning noch Jahre hinter Python zurückliegt. Ich würde gerne einige voll ausgestattete Bibliotheken für moderne neuronale Netze sehen!
Zach

Ich höre dich dort Zach. Ich freue mich darauf, tiefer in Hintons Neural Net-Kurs auf Coursera einzusteigen. Die Anziehungskraft von Theano treibt mich wieder kopfüber nach Python.
Ardenne

Genau. Theano ist sehr verlockend!
Zach

Es scheint, dass das Paket gputools einige der in theaono gefundenen GPU- Matrixoperationen
Zach

@Zach Sie fast nicht brauchen gputoolsund die Verwendung Vorbelastung Trick auf Linux betrachten GEMM zu beschleunigen, hier .
Patric

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.