R perpustakaan untuk pembelajaran yang mendalam


56

Saya bertanya-tanya apakah ada perpustakaan R yang bagus di luar sana untuk mempelajari jaringan saraf yang dalam? Aku tahu ada yang nnet, neuralnetdan RSNNS, namun tidak satupun dari ini tampaknya menerapkan metode pembelajaran yang mendalam.

Saya terutama tertarik pada yang tidak diawasi diikuti oleh pembelajaran yang diawasi, dan menggunakan dropout untuk mencegah co-adaptasi .

/ edit: Setelah beberapa tahun, saya telah menemukan paket pembelajaran dalam h20 dirancang dengan sangat baik dan mudah dipasang. Saya juga suka paket mxnet , yang (sedikit) lebih sulit untuk diinstal tetapi mendukung hal-hal seperti covnets, berjalan pada GPU, dan sangat cepat.


1
Terkait: stats.stackexchange.com/questions/40598/... Metode ini setahu saya tidak (untuk umum) tersedia di R.
Momo

@Momo: Terima kasih atas tautannya. Apakah ada kode C, C ++, atau fortran publik yang dapat dipanggil dari R?
Zach

4
Lihatlah perpustakaan CUV atau Eblearn (selengkapnya di sini deeplearning.net/software_links ) Python libs mungkin menjadi alternatif yang baik untuk R.
Momo


lihat implement oleh R di sini .
Patric

Jawaban:


19

OpenSource h2o.deepLearning () adalah paket untuk belajar mendalam di R dari h2o.ai di sini ada artikel http://www.r-bloggers.com/things-to-try-after-user-part-1-deep-learning- dengan-h2o /

Dan kode: 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

Ada paket yang disebut "darch"

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

Kutipan dari CRAN:

darch: Paket untuk arsitektur dalam dan Restricted-Bolzmann-Machines

Paket darch dibuat berdasarkan kode dari GE Hinton dan RR Salakhutdinov (tersedia di bawah Kode Matlab untuk jaring kepercayaan mendalam: kunjungan terakhir: 01.08.2013). Paket ini adalah untuk menghasilkan jaringan saraf dengan banyak lapisan (arsitektur dalam) dan melatihnya dengan metode yang diperkenalkan oleh publikasi "Algoritma pembelajaran cepat untuk jaring kepercayaan mendalam" (GE Hinton, S. Osindero, YW Teh) dan "Mengurangi dimensi data dengan jaringan saraf "(GE Hinton, RR Salakhutdinov). Metode ini mencakup pelatihan awal dengan penerbitan metode divergensi kontras oleh GE Hinton (2002) dan penyesuaian dengan algoritma pelatihan yang dikenal umum seperti backpropagation atau gradien konjugat.


Itu baru saja diarsipkan! :-(
power

3
darch kembali ke CRAN!
Zach

Sudahkah Anda menemukan contoh untuk melatih jaringan kepercayaan mendalam dengan paket ini dan kemudian menggunakannya untuk memprediksi data baru? Saya menemukan antarmuka yang digunakannya sangat tidak intuitif.
Zach

Tidak, belum. Apakah tidak ada contoh? Jika tidak maka Anda dapat mempostingnya di situs ini dan "menjawab pertanyaan Anda sendiri" dan skor poin reputasi lebih banyak.
kekuatan

1
Saya akan mempostingnya jika saya menemukan. Sejauh ini dokumen memiliki beberapa contoh pemasangan jaringan, tetapi tidak ada contoh prediksi. Dan beberapa contoh yang pas memiliki bug.
Zach

13

Ada paket baru untuk jaringan dalam di R: deepnet

Saya belum mencoba menggunakannya, tetapi sudah dimasukkan ke dalam paket caret .


12

Untuk menjawab pertanyaan saya sendiri, saya menulis sebuah paket kecil dalam R untuk RBM: https://github.com/zachmayer/rbm

Paket ini masih dalam pengembangan, dan saya tahu sedikit tentang RBM, jadi saya akan menyambut umpan balik (dan menarik permintaan!) Yang Anda miliki. Anda dapat menginstal paket menggunakan devtools :

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

Kode ini mirip dengan implementasi Andrew Landgraf di R dan implementasi Edwin Chen di python , tapi saya menulis fungsi agar mirip dengan fungsi pca di basis R dan menyertakan fungsionalitas untuk susun. Saya pikir ini sedikit lebih ramah pengguna daripada paket darch , yang saya tidak pernah tahu cara menggunakannya (bahkan sebelum dihapus dari CRAN).

Jika Anda menginstal paket gputools, Anda dapat menggunakan GPU untuk operasi matriks dengan fungsi rbm_gpu. Ini mempercepat banyak hal! Selain itu, sebagian besar pekerjaan dalam RBM dilakukan dengan operasi matriks, jadi hanya memasang BLAS yang bagus, seperti openBLAS juga akan mempercepat banyak hal.

Inilah yang terjadi ketika Anda menjalankan kode pada contoh dataset Edwin:

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
Jika Anda menggunakan PCA, coba propack.svd()dari svdpaket.
kekuatan

@power: Saya hanya menggunakan PCA sebagai perbandingan, tapi terima kasih atas tipnya. irlba juga merupakan paket yang sangat baik untuk melakukan svd.
Zach

Apakah paket baru Anda memberikan pelatihan "putus sekolah"?
DavideChicco.it

@ DavideChicco.it Ya, lihatlah helpfile untuk ?rbm. Perhatikan bahwa rbm tidak diawasi.
Zach

Zach apakah ini menggabungkan Jaringan Syaraf Berulang? Ini adalah area besar untuk deret waktu yang saya cari untuk pindah ke Python.
Hidden Markov Model

11

Anda dapat mencoba modul Pembelajaran Dalam H2O, didistribusikan dan menawarkan banyak teknik canggih seperti regularisasi putus sekolah dan tingkat pembelajaran adaptif.

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

Tutorial: http://learn.h2o.ai Data dan Skrip: http://data.h2o.ai

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


Jika Anda (editor) adalah orang yang sama dengan penjawab asli, silakan gabungkan akun Anda. Maka Anda akan dapat mengedit posting Anda sendiri. Anda dapat mengetahui tentang menggabungkan akun Anda di pusat bantuan kami .
gung - Reinstate Monica

6

Untuk menambahkan jawaban lain:

mxnet luar biasa, dan saya menyukainya Sedikit sulit untuk menginstal, tetapi mendukung GPU dan banyak CPU. Jika Anda akan melakukan pembelajaran mendalam dalam R (terutama pada gambar), saya sangat menyarankan Anda mulai dengan mxnet.


+1, ya mxnet benar-benar diimplementasikan oleh C ++ / CUDA sehingga sangat efisien!
Patrik

5

Meskipun saya belum menemukan perpustakaan pembelajaran mendalam yang didedikasikan untuk R, saya telah mengalami diskusi serupa tentang r-blogger. Diskusi berpusat pada penggunaan RBM (Mesin Boltzman Terbatas). Lihatlah tautan berikut -

http://www.r-bloggers.com/restricted-boltzmann-machines-in-r/ (mem-posting ulang dari 'alandgraf.blogspot.com')

Penulis benar-benar melakukan pekerjaan yang sangat baik merangkum algoritma yang diimplementasikan sendiri dalam R. Harus dikatakan bahwa saya belum memeriksa validitas kode, tetapi setidaknya ada sedikit pembelajaran mendalam yang mulai terlihat di R.

Saya harap ini membantu.


Saya telah melihat kode ini juga - terima kasih telah menautkannya. Sangat bagus melihat RBM mulai muncul di R, tapi saya merasa R masih bertahun-tahun di belakang python dalam hal pembelajaran yang mendalam. Saya ingin melihat beberapa perpustakaan berfitur lengkap untuk jaring saraf modern!
Zach

Saya mendengar Anda di sana Zach. Saya tak sabar untuk semakin dalam ke kursus Neural Net Hinton di Coursera. Daya pikat Theano mendorongku pergi ke Python lagi.
Ardenne

Persis. Theano sangat memikat!
Zach

Tampaknya paket gputools mengimplementasikan beberapa operasi matriks GPU yang ditemukan di theaono: cran.r-project.org/web/packages/gputools/index.html
Zach

@Zach Anda hampir tidak perlu gputoolsdan coba gunakan trik preload di Linux untuk mempercepat GEMM, di sini .
Patric

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.