R библиотеки для глубокого изучения


56

Мне было интересно, есть ли хорошие библиотеки R для глубокого изучения нейронных сетей? Я знаю , что это nnet, neuralnetи RSNNS, но ни один из них не кажется , осуществить глубокие методы обучения.

Меня особенно интересует неконтролируемое обучение с последующим обучением и использование отсева для предотвращения коадаптации .

/ edit: Через несколько лет я обнаружил, что пакет глубокого обучения h20 очень хорошо разработан и прост в установке. Мне также нравится пакет mxnet , который (немного) сложнее в установке, но поддерживает такие вещи, как covnet, работает на графических процессорах и действительно быстр.


1
Связанный: stats.stackexchange.com/questions/40598/… Насколько мне известно, эти методы (публично) недоступны в R.
Momo

@Momo: Спасибо за ссылку. Есть ли какой-нибудь общедоступный C, C ++ или фортран-код, который может быть вызван из R?
Зак

4
Проверьте библиотеку CUV или Eblearn (подробнее здесь deeplearning.net/software_links ). Библиотеки Python могут быть хорошей альтернативой R.
Momo


см. реализацию R здесь .
Патрик

Ответы:


19

OpenSource h2o.deepLearning () - это пакет для глубокого изучения языка R с h2o.ai. Здесь можно написать статью http://www.r-bloggers.com/things-to-try-after-user-part-1-deep-learning- с-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

Есть пакет под названием "Дарч"

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

Цитата из CRAN:

darch: Пакет для глубокой архитектуры и машин с ограниченным доступом Bolzmann

Пакет darch создан на основе кода от GE Hinton и RR Salakhutdinov (доступен в Matlab Code для сетей глубокого убеждения: последний визит: 01.08.2013). Этот пакет предназначен для создания нейронных сетей со многими слоями (глубокие архитектуры) и обучения их с помощью метода, представленного в публикациях «Алгоритм быстрого обучения для сетей глубоких убеждений» (GE Hinton, S. Osindero, YW Teh) и «Уменьшение размерности». данных с нейронными сетями »(Г. Е. Хинтон, Р. Р. Салахутдинов). Этот метод включает в себя предварительную тренировку с использованием метода контрастной дивергенции, опубликованную GE Hinton (2002), и тонкую настройку с общеизвестными алгоритмами обучения, такими как обратное распространение или сопряженный градиент.


Это только что было заархивировано! :-(
мощность

3
Дарч вернулся на CRAN!
Зак

Нашли ли вы какие-либо примеры для обучения сети глубокого убеждения с помощью этого пакета, а затем использовать его для прогнозирования новых данных? Я нахожу интерфейс, который он использует, очень не интуитивным.
Зак

Нет, не имею Разве нет примеров? Если нет, то вы можете разместить их на этом сайте и «ответить на свой вопрос» и набрать больше очков репутации.
мощность

1
Я опубликую их, если найду. До сих пор в документах есть несколько примеров подходящих сетей, но нет примеров прогнозирования. И некоторые из подходящих примеров имеют ошибки.
Зак

13

В R есть еще один новый пакет для глубоких сетей: deepnet

Я еще не пытался использовать его, но он уже включен в пакет Caret .


12

Чтобы ответить на мой собственный вопрос, я написал небольшой пакет в R для RBM: https://github.com/zachmayer/rbm

Этот пакет все еще находится в стадии разработки, и я очень мало знаю о RBM, так что я буду рад любым отзывам (и запросам!), Которые у вас есть. Вы можете установить пакет, используя devtools :

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

Код похож на реализацию Эндрю Лэндграфа в R и реализацию Эдвина Чена на python , но я написал функцию, которая будет похожа на функцию pca в base R и включает в себя функциональность для стекирования. Я думаю, что это немного более удобно для пользователя, чем пакет darch , который я никогда не мог понять, как использовать (даже до того, как он был удален из CRAN).

Если у вас установлен пакет gputools, вы можете использовать свой графический процессор для матричных операций с функцией rbm_gpu. Это сильно ускоряет процесс! Кроме того, большая часть работы в RBM выполняется с матричными операциями, поэтому простая установка хорошего BLAS, такого как openBLAS , также значительно ускорит процесс.

Вот что происходит, когда вы запускаете код на примере набора данных Эдвина:

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: я просто использую PCA для сравнения, но спасибо за совет. irlba также отличный пакет для работы с SVD.
Зак

Предусматривает ли ваша новая посылка тренировку "отсева"?
DavideChicco.it

@ DavideChicco.it Да, посмотрите на файл справки для ?rbm. Обратите внимание, что rbm's не контролируются.
Зак

Зак это включает в себя рекуррентные нейронные сети? Это большая область для временных рядов, для которых я рассчитывал перейти на Python.
Скрытая Марковская модель

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


Если вы (редактор) - тот же человек, что и первоначальный ответчик, объедините свои учетные записи. Тогда вы сможете редактировать свои собственные сообщения. О слиянии ваших аккаунтов вы можете узнать в нашем справочном центре .
gung - Восстановить Монику

6

Чтобы добавить другой ответ:

mxnet потрясающий, и мне это нравится. Его немного сложно установить, но он поддерживает графические процессоры и несколько процессоров. Если вы собираетесь углубленно изучать R (особенно на изображениях), я настоятельно рекомендую вам начать с mxnet.


+1, да, mxnet полностью реализован на C ++ / CUDA, поэтому он очень эффективен!
Патрик

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 все еще отстает от Python в плане глубокого обучения. Я хотел бы видеть некоторые полнофункциональные библиотеки для современных нейронных сетей!
Зак

Я слышал, что ты там, Зак. Я с нетерпением жду, чтобы углубиться в курс нейронной сети Хинтона на Coursera. Очарование Theano снова подталкивает меня к Python.
Арденн

Именно так. Theano очень заманчиво!
Зак

Похоже, что пакет gputools реализует некоторые из операций матрицы gpu, которые можно найти в theaono: cran.r-project.org/web/packages/gputools/index.html
Zach

@ Зачем вам почти не нужно gputoolsи рассмотрите возможность использования трюка с предварительной загрузкой в ​​Linux для ускорения GEMM, здесь .
Патрик

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.