Biblioteki R do głębokiego uczenia się


56

Zastanawiałem się, czy są jakieś dobre biblioteki R do głębokiego uczenia sieci neuronowych? Wiem, że tam jest nnet, neuralneti RSNNS, ale żaden z nich nie wydają się wdrożyć głębokie metod nauczania.

Szczególnie interesuje mnie nauka bez nadzoru, a następnie nadzorowane uczenie się, a także rezygnacja z pracy, aby zapobiec wspólnej adaptacji .

/ edit: Po kilku latach odkryłem, że pakiet dogłębnej nauki h20 jest bardzo dobrze zaprojektowany i łatwy w instalacji. Uwielbiam także pakiet mxnet , który jest (trochę) trudniejszy do zainstalowania, ale obsługuje takie rzeczy jak covnets, działa na GPU i jest naprawdę szybki.


1
Powiązane: stats.stackexchange.com/questions/40598/... Według mnie, metody te nie są (publicznie) dostępne w R.
— Momo

@Momo: Dzięki za link. Czy jest jakiś publiczny kod C, C ++ lub fortran, który można wywoływać z R?
— Zach.

4
Sprawdź bibliotekę CUV lub Eblearn (więcej tutaj deeplearning.net/software_links ) Biblioteki Pythona mogą być dobrą alternatywą dla R.
— Momo


patrz implementacja przez R tutaj .
— Patric

Odpowiedzi:


19

OpenSource h2o.deepLearning () to pakiet do głębokiego uczenia się w języku R z h2o.ai oto http://www.r-bloggers.com/things-to-try-after-user-part-1-deep-learning- z-H2O /

I 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

Istnieje pakiet o nazwie „darch”

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

Cytat z CRAN:

darch: Pakiet dla głębokich architektur i maszyn Restricted-Bolzmann-Machines

Pakiet darch jest budowany na podstawie kodu GE Hinton i RR Salakhutdinov (dostępny w Matlab Code dla sieci głębokiego przekonania: ostatnia wizyta: 01.08.2013). Pakiet ten służy do generowania sieci neuronowych o wielu warstwach (głębokie architektury) i trenowania ich za pomocą metody wprowadzonej przez publikacje „Algorytm szybkiego uczenia się dla sieci głębokiej wiary” (GE Hinton, S. Osindero, YW Teh) i „Zmniejszenie wymiarów danych w sieciach neuronowych ”(GE Hinton, RR Salakhutdinov). Ta metoda obejmuje wstępne szkolenie z kontrastową metodą dywergencji opublikowaną przez GE Hinton (2002) oraz precyzyjne dostrojenie za pomocą powszechnie znanych algorytmów treningowych, takich jak propagacja wsteczna lub gradient sprzężony.


Właśnie zostało zarchiwizowane! :-(
— moc

3
darch powraca do CRAN!
— Zach

Czy znalazłeś jakieś przykłady szkolenia sieci głębokiej wiary w tym pakiecie, a następnie wykorzystania jej do przewidywania nowych danych? Uważam, że interfejs, którego używa, jest bardzo nieintuicyjny.
— Zach

Nie, nie mam. Nie ma przykładów? Jeśli nie, możesz opublikować je na tej stronie i „odpowiedzieć na własne pytanie” i zdobyć więcej punktów reputacji.
— moc

1
Wyślę je, jeśli je znajdę. Jak dotąd dokumenty zawierają kilka przykładów dopasowania sieci, ale nie ma żadnych przykładów prognoz. A niektóre z pasujących przykładów zawierają błędy.
— Zach

13

W R: deepnet istnieje kolejny nowy pakiet dla sieci głębokich

Nie próbowałem go jeszcze używać, ale został już włączony do pakietu Caret .


12

Aby odpowiedzieć na moje pytanie, napisałem mały pakiet w R dla RBM: https://github.com/zachmayer/rbm

Ten pakiet jest wciąż intensywnie rozwijany i niewiele wiem o RBM, więc chętnie przyjmę wszelkie opinie (i prośby o ściągnięcie)! Możesz zainstalować pakiet za pomocą devtools :

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

Kod jest podobny do implementacji Andrew Landgrafa w R i implementacji Edwina Chena w pythonie , ale napisałem tę funkcję, aby była podobna do funkcji pca w bazie R i zawierała funkcję stosową. Myślę, że jest trochę bardziej przyjazny dla użytkownika niż pakiet darch , którego nigdy nie mogłem wymyślić, jak go używać (nawet zanim został usunięty z CRAN).

Jeśli masz zainstalowany pakiet gputools , możesz używać swojego GPU do operacji macierzowych za pomocą funkcji rbm_gpu. To bardzo przyspiesza! Co więcej, większość pracy w RBM jest wykonywana przy użyciu operacji matrycowych, więc samo zainstalowanie dobrego BLAS, takiego jak openBLAS , również znacznie przyspieszy.

Oto, co dzieje się po uruchomieniu kodu na przykładowym zestawie danych Edwina:

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
Jeśli używasz PCA, spróbuj propack.svd()z svdpakietu.
— moc

@power: Używam PCA jako porównania, ale dziękuję za podpowiedź. irlba to także doskonały pakiet do robienia DVD.
— Zach

Czy twój nowy pakiet zapewnia szkolenie „porzucania”?
— DavideChicco.it

@ DavideChicco.it Tak, spójrz na plik pomocy dla ?rbm. Zauważ, że rbm nie są nadzorowane.
— Zach

Zach czy to obejmuje Recurrent Neural Networks? Jest to duży obszar dla szeregów czasowych, dla którego chciałem przejść do Pythona.
— Ukryty model Markowa

11

Możesz wypróbować moduł głębokiego uczenia H2O, jest on dystrybuowany i oferuje wiele zaawansowanych technik, takich jak regularyzacja rezygnacji i adaptacyjna szybkość uczenia się.

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

Samouczki: http://learn.h2o.ai Dane i skrypty: http://data.h2o.ai

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


Jeśli Ty (redaktor) jesteś tą samą osobą, co oryginalny odpowiadający, połącz swoje konta. Następnie będziesz mógł edytować własne posty. Informacje na temat łączenia kont można znaleźć w naszym centrum pomocy .
— gung - Przywróć Monikę

6

Aby dodać kolejną odpowiedź:

mxnet jest niesamowity i uwielbiam go . Trochę trudno go zainstalować, ale obsługuje procesory graficzne i wiele procesorów. Jeśli zamierzasz przeprowadzić głęboką naukę w języku R (szczególnie na obrazach), zdecydowanie polecam zacząć od mxnet.


+1, tak, mxnet jest całkowicie zaimplementowany przez C ++ / CUDA, więc jest bardzo wydajny!
— Patric

5

Chociaż nie spotkałem dedykowanej biblioteki do głębokiego uczenia się dla R, spotkałem się z podobną dyskusją na temat r-blogerów. Dyskusje koncentrują się na korzystaniu z RBM (Restricted Boltzman Machines). Spójrz na poniższy link -

http://www.r-bloggers.com/restricted-boltzmann-machines-in-r/ (opublikowane na stronie „alandgraf.blogspot.com”)

Autor faktycznie wykonuje naprawdę dobrą robotę enkapsulacji samozrealizowanego algorytmu w R. Trzeba powiedzieć, że nie sprawdziłem jeszcze poprawności kodu, ale przynajmniej jest pewien błysk głębokiego uczenia się, który zaczyna się pokazywać w R.

Mam nadzieję, że to pomoże.


Widziałem też ten kod - dziękuję za link do niego. Dobrze jest widzieć, że RBM zaczynają pojawiać się w R, ale wydaje mi się, że R wciąż jest o wiele lat za Pythonem pod względem głębokiego uczenia się. Chciałbym zobaczyć kilka pełnych bibliotek dla nowoczesnych sieci neuronowych!
— Zach

Słyszę cię tam Zach. Nie mogę się doczekać, aby głębiej poznać kurs sieci neuronowej Hintona na Coursera. Urok Theano ponownie popycha mnie do Pythona.
— Ardenne

Dokładnie. Theano jest bardzo pociągający!
— Zach

Wygląda na to, że pakiet gputools implementuje niektóre operacje macierzy GPU znalezione w theaono: cran.r-project.org/web/packages/gputools/index.html
— Zach

@Zach, którego prawie nie potrzebujesz gputoolsi rozważ użycie sztuczki wstępnego ładowania w systemie Linux, aby przyspieszyć GEMM, tutaj .
— Patric

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.