딥 러닝을위한 R 라이브러리


56

딥 러닝 신경망에 적합한 R 라이브러리가 있는지 궁금합니다. 나는이 알고 nnet, neuralnet그리고 RSNNS,이 중에 깊은 학습 방법을 구현하기 위해 보이지 않는다.

나는 특히 감독되지 않은 학습과 감독 학습에 관심이 있고 공동 적응을 방지하기 위해 중퇴를 사용 합니다.

/ 편집 : 몇 년 후, h20 딥 러닝 패키지가 매우 잘 설계되고 설치하기 쉽다 는 것을 알았습니다 . mxnet 패키지 도 좋아합니다. 설치가 조금 어렵지만 covnet과 같은 것을 지원하고 GPU에서 실행되며 실제로는 빠릅니다.


1
관련 : stats.stackexchange.com/questions/40598/… 이 방법은 R에서 공개적으로 사용할 수없는 것으로 알고 있습니다.
Momo

@Momo : 링크 주셔서 감사합니다. R에서 호출 할 수있는 공개 C, C ++ 또는 포트란 코드가 있습니까?
Zach

4
CUV 라이브러리 또는 Eblearn (더 자세한 내용은 deeplearning.net/software_links )을 확인하십시오. Python 라이브러리는 R의 대안이 될 수 있습니다.
Momo


여기 에서 R에 의한 구현을 참조 하십시오 .
Patric 2012

답변:


19

OpenSource h2o.deepLearning ()은 h2o.ai에서 R로 딥 러닝하기위한 패키지입니다. http://www.r-bloggers.com/things-to-try-after-user-part-1-deep-learning- with-h2o /

그리고 코드 : 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"라는 패키지가 있습니다

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

CRAN에서 인용 :

darch : 심층 아키텍처 및 제한된 볼츠만 기계 패키지

이 Darch 패키지는 GE Hinton 및 RR Salakhutdinov의 코드를 기반으로 구축되었습니다 (매 트러블 네트에 대한 Matlab 코드에서 사용 가능 : 마지막 방문 : 01.08.2013). 이 패키지는 많은 계층 (딥 아키텍처)으로 신경망을 생성하고 간행물 "딥 믿음 망을위한 빠른 학습 알고리즘"(GE Hinton, S. Osindero, YW Teh) 및 "차원 성 감소"에 소개 된 방법으로이를 학습하기위한 것입니다. 신경망 데이터의 데이터 "(GE Hinton, RR Salakhutdinov). 이 방법에는 GE Hinton (2002)의 대조적 발산 방법 게시를 통한 사전 훈련과 역 전파 또는 켤레 기울기와 같은 일반적인 알려진 훈련 알고리즘을 사용한 미세 조정이 포함됩니다.


방금 보관되었습니다! :-(
power

3
darch가 CRAN에 돌아 왔습니다!
Zach

이 패키지로 심오한 네트워크를 훈련시킨 다음이를 사용하여 새 데이터를 예측하는 예를 찾았습니까? 인터페이스가 매우 직관적이지 않다는 것을 알았습니다.
Zach

아뇨 예가 없습니까? 그렇지 않은 경우이 사이트에 게시하여 "자신의 질문에 답변"하고 더 많은 평판을 얻을 수 있습니다.

1
찾은 경우 게시하겠습니다. 지금까지 문서에는 적합한 네트워크의 예가 있지만 예측의 예는 없습니다. 그리고 일부 피팅 예제에는 버그가 있습니다.
Zach

13

R에 깊은 네트워크를위한 또 다른 새로운 패키지가있다 : deepnet

아직 사용하지 않았지만 이미 캐럿 패키지에 통합되었습니다 .


12

내 자신의 질문에 대답하기 위해 RBM 용 R에 작은 패키지를 작성했습니다. https://github.com/zachmayer/rbm

이 패키지는 아직 많이 개발 중이며 RBM에 대해서는 거의 알지 못하므로 의견이 있으시면 언제든지 환영합니다! devtools를 사용하여 패키지를 설치할 수 있습니다 .

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

이 코드는 Andrew Landgraf의 R 구현Edwin Chen의 python 구현 과 비슷하지만 기본 R의 pca 함수와 유사한 함수를 작성했으며 스태킹 기능을 포함했습니다. 나는 그것이 dach 패키지 보다 조금 더 사용자 친화적이라고 생각합니다.이 패키지 는 사용 방법을 알 수 없었습니다 (CRAN에서 제거되기 전에도).

당신이있는 경우 gputools 패키지를 설치하면 rbm_gpu 기능 행렬 연산을 위해 GPU를 사용할 수 있습니다. 이것은 일을 많이 가속화합니다! 또한 RBM의 대부분의 작업은 매트릭스 작업으로 수행되므로 openBLAS 와 같은 우수한 BLAS를 설치하면 작업 속도가 크게 향상됩니다.

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
PCA를 사용 propack.svd()하는 경우 svd패키지 에서 시도 하십시오 .
power

@power : PCA를 비교로 사용하고 있지만 팁을 주셔서 감사합니다. irlba는 svd를 수행하기위한 훌륭한 패키지이기도합니다.
Zach

새 패키지가 "드롭 아웃"교육을 제공합니까?
DavideChicco.it

@ DavideChicco.it 예,에 대한 도움말 파일을 살펴보십시오 ?rbm. rbm은 감독되지 않습니다.
Zach

Zach는 이것이 Recurrent Neural Networks를 포함합니까? 이것은 파이썬으로 옮기려고하는 시계열의 큰 영역입니다.
숨겨진 마르코프 모델

11

H2O의 딥 러닝 모듈을 사용해 볼 수 있으며 분산되어 있으며 드롭 아웃 정규화 및 적응 형 학습 속도와 같은 많은 고급 기술을 제공합니다.

슬라이드 : http://www.slideshare.net/0xdata/h2o-deeplearning-nextml 비디오 : https://www.youtube.com/watch?v=gAKbAQu900w&feature=youtu.be

튜토리얼 : http://learn.h2o.ai 데이터 및 스크립트 : http://data.h2o.ai

설명서 : http://docs.h2o.ai GitBooks : http://gitbook.io/@h2o


귀하 (편집자)가 원래 답변자와 동일한 사람인 경우 계정을 병합하십시오. 그런 다음 자신의 게시물을 편집 할 수 있습니다. Google 도움말 센터 에서 계정을 병합하는 방법을 확인할 수 있습니다 .
gung-Monica Monica 복원

6

다른 답변을 추가하려면

mxnet은 놀랍고 마음에 듭니다. 설치가 약간 어렵지만 GPU와 여러 CPU를 지원합니다. R (특히 이미지)에서 딥 러닝을 수행하려면 mxnet부터 시작하는 것이 좋습니다.


+1, mxnet은 C ++ / CUDA에 의해 완전히 구현되었으므로 매우 효율적입니다!
Patric

5

R 전용 딥 러닝 라이브러리를 만나지 못했지만 r- 블로거에 대해 비슷한 토론을 시작했습니다. 토론은 RBM (Restricted Boltzman Machines) 사용에 중점을 둡니다. 다음 링크를보십시오.

http://www.r-bloggers.com/restricted-boltzmann-machines-in-r/('alandgraf.blogspot.com '에서 다시 게시)

필자는 실제로 R에서 자체 구현 알고리즘을 캡슐화하는 데 정말 효과적입니다. 필자는 아직 코드의 유효성을 검사하지는 않았지만 적어도 R에 표시되기 시작하는 딥 러닝의 반짝임이 있습니다.

이게 도움이 되길 바란다.


이 코드도 보았습니다. 연결해 주셔서 감사합니다. RBM이 R에 나타나기 시작하는 것이 좋지만 R이 딥 러닝 측면에서 파이썬보다 몇 년 뒤 떨어진 것 같습니다. 현대 신경망을위한 모든 기능을 갖춘 라이브러리를보고 싶습니다!
Zach

잭이 있다고 들었어 Coursera에서 Hinton의 Neural Net 과정에 대해 더 깊이 알게되기를 기대합니다. Theano의 매력은 나를 다시 파이썬으로 이끌었습니다.
Ardenne

바로 그거죠. Theano는 매우 유혹적입니다!
Zach

gputools 패키지는 theaono에있는 일부 GPU 매트릭스 작업을 구현하는 것으로 보입니다 : cran.r-project.org/web/packages/gputools/index.html
Zach

@Zach는 gputoolsGEMM을 가속화하기 위해 Linux에서 프리 로드 트릭 을 거의 사용할 필요가 없으며 여기 를 고려 하십시오 .
Patric

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.