Derin öğrenme için R kütüphaneleri


56

Derin sinir ağları için iyi bir R kütüphanesi olup olmadığını merak ediyor muydum? Orada olduğunu biliyorum nnet, neuralnetve RSNNS, ancak bunların hiçbiri derin öğrenme yöntemlerini uygulamak gibi görünüyor.

Özellikle denetlenmeyen öğrenmeden sonra denetlenen öğrenmeden ve eş-uyum sağlamak için bırakma kullanmaktan özellikle ilgileniyorum .

/ edit: Birkaç yıl sonra, h20 derin öğrenme paketini çok iyi tasarlanmış ve kurulumu kolay buldum . Ayrıca (biraz) kurulumu zor fakat covnets gibi şeyleri destekleyen, GPU'larda çalışan ve gerçekten hızlı olan mxnet paketini seviyorum .


1
İlgili: stats.stackexchange.com/questions/40598/… Bu yöntemler benim bilgim içindir. ( Herkese açık) R'de mevcut değil.
Momo

@Momo: Bağlantı için teşekkürler. R'den çağrılabilecek herhangi bir genel C, C ++ veya fortran kodu var mı?
Zach

4
CUV kütüphanesine veya Eblearn'e göz atın (daha fazlası için deeplearning.net/software_links ) Python kütüphaneleri R'e iyi bir alternatif olabilir
Momo


Burada R tarafından uygulamaya bakınız .
Patric

Yanıtlar:


19

AçıkKaynak h2o.deepLearning () h2o.ai burada yazma kalmış dan Ar deeplearning için paket olduğunu http://www.r-bloggers.com/things-to-try-after-user-part-1-deep-learning- ile-H2O /

Ve kod: 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

"Darch" adında bir paket var.

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

CRAN'dan alıntı:

darch: Derin mimariler ve Sınırlı-Bolzmann-Makineleri için paket

Darch paketi, GE Hinton ve RR Salakhutdinov'dan (derin inanç ağları için Matlab Kodu altında mevcuttur: son ziyaret: 01.08.2013) koduna dayanarak oluşturulmuştur. Bu paket, birçok katmana sahip (derin mimariler) sinir ağları oluşturmak ve bunları "Derin inanç ağları için hızlı bir öğrenme algoritması" (GE Hinton, S. Osindero, YW Teh) ve "Boyutluluğun azaltılması" sinir ağları ile veri "(GE Hinton, RR Salakhutdinov). Bu yöntem, GE Hinton (2002) tarafından yayınlanan kontrast ayrışma yöntemiyle bir ön eğitim ve geri yayılma veya eşlenik gradyan gibi yaygın olarak bilinen eğitim algoritmalarıyla ince bir ayarlama içerir.


Daha yeni arşivlendi! :-(
güç

3
darch CRAN'a geri döndü!
Zach

Bu pakette derin bir inanç ağı eğitmek ve daha sonra yeni verileri tahmin etmek için kullanmak için herhangi bir örnek buldunuz mu? Sezgisel olarak kullandığı arayüzü buluyorum.
Zach

Hayır yapmadım. Örnek yok mu? Olmazsa, onları bu siteye gönderebilir ve "kendi sorunuzu cevaplayabilirsiniz" ve skor daha fazla itibar puanı kazanabilir.
güç

1
Bulursam onları gönderirim. Şimdiye kadar, dokümanlar için uygun ağ örnekleri var, ancak hiçbir tahmin örneği yok. Bazı örneklerde de böcekler var.
Zach


12

Kendi sorumu cevaplamak için RBM'ler için R'de küçük bir paket yazdım: https://github.com/zachmayer/rbm

Bu paket hala yoğun bir gelişim aşamasında ve RBM'ler hakkında çok az şey biliyorum. Paketi devtools kullanarak yükleyebilirsiniz :

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

Bu kod Andrew Landgraf'ın R ve Edwin Chen'in python'daki uygulamasına benziyor , ancak işlevi R üssündeki pca işlevine benzeyen ve istifleme için işlevsellik içeren yazdım. Sanırım , nasıl kullanılacağını asla çözemediğim (CRAN'dan çıkarılmadan önce bile) dach paketinden biraz daha kullanıcı dostu olduğunu düşünüyorum .

Eğer varsa gputools paketi yüklü Eğer rbm_gpu fonksiyonu ile matris işlemleri için GPU kullanabilirsiniz. Bu işleri çok hızlandırıyor! Ayrıca, bir RBM'deki işlerin çoğu matris işlemleriyle yapılır, bu yüzden sadece OpenBLAS gibi iyi bir BLAS kurmak da işleri çok hızlandıracaktır.

İşte Edwin’in örnek veri setindeki kodu çalıştırdığınızda ne olacak:

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
PCA kullanıyorsanız propack.svd(), svdpaketten deneyin .
güç

@power: Ben sadece PCA'yı karşılaştırma olarak kullanıyorum, ancak bahşiş için teşekkürler. irlba da svd yapmak için mükemmel bir pakettir.
Zach,

Yeni paketiniz "okulu bırakma" eğitimi veriyor mu?
DavideChicco.it

@ DavideChicco.it Evet, yardım dosyasına bir göz atın ?rbm. Rbm'nin denetimsiz olduğuna dikkat edin.
Zach

Zach bu Tekrarlayan Sinir Ağlarını içeriyor mu? Bu, Python'a taşınmayı düşündüğüm zaman serileri için büyük bir alan.
Gizli Markov Model

11

H2O'nun Deep Learning modülünü deneyebilirsiniz, dağıtılır ve okuldan ayrılma ve adaptif öğrenme oranı gibi birçok gelişmiş teknik sunar.

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

Öğreticiler: http://learn.h2o.ai Veri ve Scriptler: http://data.h2o.ai

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


Siz (editör) orijinal cevaplayıcıyla aynı kişiyseniz, lütfen hesaplarınızı birleştirin. O zaman kendi yayınlarınızı düzenleyebilirsiniz. Hesaplarınızı birleştirme hakkında yardım merkezimizde bulabilirsiniz .
dediklerinin - Monica Yeniden

6

Başka bir cevap eklemek için:

mxnet şaşırtıcı ve onu seviyorum Biraz yüklemek zor, ama GPU'ları ve çoklu işlemcileri destekliyor. Eğer R'de (özellikle görüntülerde) derin öğrenme yapacaksanız, mxnet ile başlamanızı şiddetle tavsiye ederim.


+1, evet mxnet tamamen C ++ / CUDA tarafından uygulanır, bu yüzden çok etkilidir!
Patric

5

R için özel bir öğrenme kütüphanesine rastlamadığım halde, r-blogcularda benzer bir tartışmaya girdim. Tartışma, RBM (Sınırlı Boltzman Makineleri) kullanımına odaklanır. Aşağıdaki bağlantıya bir bakın.

http://www.r-bloggers.com/restricted-boltzmann-machines-in-r/ ('alandgraf.blogspot.com' adresinden yayınlanmıştır)

Yazar aslında, R'de kendi kendine uygulanan bir algoritmayı içine almak için gerçekten iyi bir iş çıkarıyor. Kodun geçerliliğini henüz onaylamadığı, ancak en azından R'de göstermeye başlayan derin bir öğrenme pusulası olduğu söylenmeli.

Umarım bu yardımcı olur.


Ben de bu kodu gördüm - bağlantı için teşekkürler. RBM'lerin R'de ortaya çıkmaya başladığını görmek güzel, ama derin öğrenme açısından R'nin hala pitonun gerisinde kaldığını hissediyorum. Modern sinir ağları için tam özellikli bazı kütüphaneler görmek isterdim!
Zach,

Seni orada duyuyorum Zach. Coursera'daki Hinton'ın Sinir Ağı kursu hakkında daha fazla bilgi edinmek için sabırsızlanıyorum. Theano'nun cazibesi beni baştan aşağı Python'a itiyor.
Ardenne

Kesinlikle. Theano çok çekici!
Zach,

Gputools paketi, theaono'da bulunan bazı gpu matris işlemlerini uygulamaktadır: cran.r-project.org/web/packages/gputools/index.html
Zach

@Zach neredeyse gerekmez gputoolsve, GEMM hızlandırmak için Linux üzerinde kullanım preload hile düşünün burada .
Patric

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.