Thư viện R để học sâu


56

Tôi đã tự hỏi nếu có bất kỳ thư viện R tốt ngoài kia để tìm hiểu sâu về mạng lưới thần kinh? Tôi biết có những nnet, neuralnetRSNNS, nhưng không ai trong số này dường như để thực hiện phương pháp học sâu.

Tôi đặc biệt quan tâm đến việc không được giám sát theo sau việc học có giám sát và sử dụng học sinh bỏ học để ngăn chặn sự đồng thích ứng .

/ chỉnh sửa: Sau một vài năm, tôi đã tìm thấy gói học sâu h20 được thiết kế rất tốt và dễ cài đặt. Tôi cũng thích gói mxnet , khó cài đặt hơn một chút nhưng hỗ trợ những thứ như covnets, chạy trên GPU và thực sự rất nhanh.


1
Liên quan: stats.stackexchange.com/questions/40598/... Những phương pháp này để kiến thức của tôi không (công khai) có sẵn trong R.
Momo

@Momo: Cảm ơn đã liên kết. Có bất kỳ mã C, C ++ hoặc fortran công khai nào có thể gọi được từ R không?
Zach

4
Kiểm tra các thư viện CUV hoặc Eblearn (thêm ở đây deeplearning.net/software_links ) Các libs Python có thể là một lựa chọn tốt để R.
Momo


xem thực hiện bởi R ở đây .
Patric

Câu trả lời:


19

OpenSource h2o.deepLearning () là gói dành cho đào sâu trong R từ h2o.ai đây là một bài viết http://www.r-bloggers.com/things-to-try-after-user-part-1-deep-learning- với-h2o /

Và mã: 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

Có một gói gọi là "darch"

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

Trích dẫn từ CRAN:

darch: Gói cho kiến ​​trúc sâu và Hạn chế-Bolzmann-Machines

Gói darch được xây dựng trên cơ sở mã từ GE Hinton và RR Salakhutdinov (có sẵn theo Mã Matlab cho mạng lưới niềm tin sâu sắc: chuyến thăm cuối cùng: 01.08.2013). Gói này dùng để tạo mạng lưới thần kinh với nhiều lớp (kiến trúc sâu) và huấn luyện chúng bằng phương pháp được giới thiệu bởi các ấn phẩm "Thuật toán học nhanh cho mạng lưới niềm tin sâu sắc" (GE Hinton, S. Osindero, YW Teh) và "Giảm tính chiều dữ liệu với mạng lưới thần kinh "(GE Hinton, RR Salakhutdinov). Phương pháp này bao gồm đào tạo trước với phương pháp phân kỳ tương phản được xuất bản bởi GE Hinton (2002) và tinh chỉnh với các thuật toán đào tạo phổ biến đã biết như backpropagation hoặc gradient liên hợp.


Nó vừa được lưu trữ! :-(
sức mạnh

3
darch đã trở lại trên CRAN!
Zach

Bạn đã tìm thấy bất kỳ ví dụ nào để đào tạo một mạng lưới niềm tin sâu sắc với gói này và sau đó sử dụng nó để dự đoán về dữ liệu mới? Tôi thấy giao diện mà nó sử dụng rất không trực quan.
Zach

Không, tôi không có. Không có ví dụ? Nếu không thì bạn có thể đăng chúng trên trang web này và "trả lời câu hỏi của riêng bạn" và điểm số danh tiếng nhiều hơn.
sức mạnh

1
Tôi sẽ đăng chúng nếu tôi tìm thấy bất kỳ. Cho đến nay các tài liệu có một số ví dụ về các mạng phù hợp, nhưng không có ví dụ về dự đoán. Và một số ví dụ phù hợp có lỗi.
Zach

13

Có một gói mới khác cho các mạng sâu trong R: deepnet

Tôi chưa thử sử dụng nó, nhưng nó đã được tích hợp vào gói caret .


12

Để trả lời câu hỏi của riêng tôi, tôi đã viết một gói nhỏ bằng R cho RBM: https://github.com/zachmayer/rbm

Gói này vẫn đang được phát triển mạnh mẽ và tôi biết rất ít về RBM, vì vậy tôi hoan nghênh mọi phản hồi (và yêu cầu kéo!) Bạn có. Bạn có thể cài đặt gói bằng devtools :

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

Mã này tương tự như triển khai của Andrew Landgraf trong triển khai REdwin Chen trong python , nhưng tôi đã viết hàm này tương tự như hàm pca trong cơ sở R và bao gồm chức năng để xếp chồng. Tôi nghĩ rằng nó thân thiện với người dùng hơn một chút so với gói darch , điều mà tôi không bao giờ có thể tìm ra cách sử dụng (ngay cả trước khi nó bị xóa khỏi CRAN).

Nếu bạn đã cài đặt gói gputools, bạn có thể sử dụng GPU của mình cho các hoạt động ma trận với chức năng rbm_gpu. Điều này tăng tốc mọi thứ lên rất nhiều! Hơn nữa, hầu hết các công việc trong RBM đều được thực hiện với các hoạt động ma trận, vì vậy chỉ cần cài đặt BLAS tốt, chẳng hạn như openBLAS cũng sẽ tăng tốc mọi thứ lên rất nhiều.

Đây là những gì xảy ra khi bạn chạy mã trên tập dữ liệu mẫu của 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
Nếu bạn đang sử dụng PCA, hãy thử propack.svd()từ svdgói.
sức mạnh

@power: Tôi chỉ sử dụng PCA để so sánh, nhưng cảm ơn vì tiền boa. irlba cũng là một gói tuyệt vời để làm svd.
Zach

Gói mới của bạn có cung cấp chương trình đào tạo "bỏ học" không?
DavideChicco.it

@ DavideChicco.it Vâng, hãy xem phần trợ giúp cho ?rbm. Lưu ý rằng rbm là không giám sát.
Zach

Zach có kết hợp Mạng thần kinh tái phát không? Đây là một khu vực lớn cho chuỗi thời gian mà tôi đang tìm cách chuyển sang Python.
Mô hình Markov ẩn

11

Bạn có thể thử mô-đun Deep Learning của H2O, nó được phân phối và cung cấp nhiều kỹ thuật nâng cao như chính quy hóa bỏ học và tỷ lệ học thích ứng.

Các slide: http://www.sl slideshoware.net/0xdata/h2o-deeplearning-nextml Video: https://www.youtube.com/watch?v=gAKbAQu900w&feature=youtu.be

Hướng dẫn: http://learn.h2o.ai Dữ liệu và tập lệnh: http://data.h2o.ai

Tài liệu: http://docs.h2o.ai GitBooks: http://gitbook.io/@h2o


Nếu bạn (biên tập viên) là cùng một người với người trả lời ban đầu, vui lòng hợp nhất các tài khoản của bạn. Sau đó, bạn sẽ có thể chỉnh sửa bài viết của riêng bạn. Bạn có thể tìm hiểu về việc hợp nhất các tài khoản của bạn trong trung tâm trợ giúp của chúng tôi .
gung - Phục hồi Monica

6

Để thêm một câu trả lời:

mxnet thật tuyệt vời và tôi thích nó Một chút khó khăn để cài đặt, nhưng nó hỗ trợ GPU và nhiều CPU. Nếu bạn sẽ học sâu về R (đặc biệt là về hình ảnh), tôi khuyên bạn nên bắt đầu với mxnet.


+1, có mxnet hoàn toàn được thực hiện bởi C ++ / CUDA nên rất hiệu quả!
Patric

5

Trong khi tôi chưa gặp thư viện chuyên sâu dành cho R, tôi đã gặp một cuộc thảo luận tương tự về các blogger. Các cuộc thảo luận tập trung vào việc sử dụng RBM (Máy Boltzman bị hạn chế). Hãy xem liên kết sau--

http://www.r-bloggers.com/restricted-boltzmann-machines-in-r/ (đăng lại từ 'alandgraf.blogspot.com')

Tác giả thực sự làm rất tốt việc đóng gói một thuật toán tự thực hiện trong R. Phải nói rằng tôi chưa đánh giá được tính hợp lệ của mã nhưng ít nhất là có một ánh sáng của việc học sâu bắt đầu hiển thị trong R.

Tôi hi vọng cái này giúp được.


Tôi cũng đã thấy mã này-- cảm ơn vì đã liên kết với nó. Thật tốt khi thấy RBM bắt đầu xuất hiện trong R, nhưng tôi cảm thấy R vẫn chậm hơn nhiều so với python về mặt học tập sâu. Tôi muốn thấy một số thư viện đầy đủ tính năng cho mạng lưới thần kinh hiện đại!
Zach

Tôi nghe bạn ở đó Zach. Tôi mong muốn được tìm hiểu sâu hơn về khóa học thần kinh của Hinton trên Coursera. Sức quyến rũ của Theano đang đẩy tôi trở lại Python.
Ardenne

Chính xác. Theano rất lôi cuốn!
Zach

Có vẻ như gói gputools thực hiện một số hoạt động ma trận gpu được tìm thấy trong theaono: cran.r-project.org/web/packages/gputools/index.html
Zach

@Zach bạn gần như không cần gputoolsvà xem xét sử dụng thủ thuật tải trước trên Linux để tăng tốc GEMM, tại đây .
Patric

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.