R бібліотеки для глибокого навчання


56

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

Мені особливо цікаво непідконтрольне, за яким слід керуватися навчанням, і використовувати відмову для запобігання спільної адаптації .

/ редагувати: Через кілька років я знайшов пакет поглибленого навчання h20 дуже добре розробленим та простим в монтажі. Я також люблю пакет mxnet , який (трохи) складніше встановити, але підтримує такі речі, як covnets, працює на графічних процесорах і справді швидко.


1
Пов'язане: stats.stackexchange.com/questions/40598/… Ці методи, наскільки мені відомо, не доступні (публічно) доступні в Р.
Момо

@Momo: Дякую за посилання. Чи є загальнодоступний код C, C ++ або fortran, який можна дзвонити з R?
Зак

4
Ознайомтеся з бібліотекою CUV або Eblearn (докладніше тут deeplearning.net/software_links ) Ліги Python можуть бути хорошою альтернативою Р.
Момо


дивіться реалізацію 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

Існує пакет під назвою "darch"

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

Цитата від CRAN:

марш: Пакет для глибоких архітектур та обмежених Болзман-машин

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


Це просто заархівовано! :-(
потужність

3
Darch повернувся на CRAN!
Зак

Ви знайшли якісь приклади для підготовки мережі глибоких переконань за допомогою цього пакету, а потім їх використання для прогнозування нових даних? Я вважаю, що інтерфейс, який він використовує, дуже неінтуїтивний.
Зак

Ні, я ні. Хіба немає прикладів? Якщо ні, то ви можете опублікувати їх на цьому веб-сайті та "відповісти на власне запитання" та набрати більше балів репутації.
потужність

1
Я опублікую їх, якщо знайду. Наразі в документах є кілька прикладів підгонки мереж, але немає прикладів прогнозування. І деякі примірники прикладів мають помилки.
Зак

13

Ще один новий пакет для глибоких мереж на R: deepnet

Я ще не намагався його використовувати, але він уже включений до пакету карет .


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 в базі R і включає функціональність для складання. Я думаю, що це трохи зручніший користувач, ніж пакет darch , який я ніколи не міг зрозуміти, як користуватися (ще до того, як його було видалено з CRAN).

Якщо у вас встановлений пакет gputools, ви можете використовувати GPU для матричних операцій з функцією rbm_gpu. Це значно пришвидшує справи! Крім того, більша частина роботи в RBM виконується за допомогою матричних операцій, тому просто встановлення хорошого BLAS, наприклад openBLAS , також значно прискорить роботу.

Ось що відбувається під час запуску коду на прикладі набору даних 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: Я просто використовую PCA для порівняння, але дякую за пораду. irlba - це також відмінний пакет для виконання svd.
Зак

Чи надає ваш новий пакет навчання "відмову"?
DavideChicco.it

@ DavideChicco.it Так, погляньте на файл довідки ?rbm. Зауважте, що rbm не контролюються.
Зак

Зак включає в себе це періодичні нейронні мережі? Це велика область часових рядів, на яку я дивився, переїжджаючи на 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-блогерах. Дискусійні центри щодо використання ШПМ (обмежених машин Больцмана). Подивіться за наступним посиланням--

http://www.r-bloggers.com/restricted-boltzmann-machines-in-r/ (репост від "alandgraf.blogspot.com")

Автор насправді робить дуже гарну роботу по інкапсуляції алгоритму, що реалізується в самому Р. Треба сказати, що я ще не перевірив дійсність коду, але, принаймні, є блиск глибокого навчання, який починає проявлятися в Р.

Я сподіваюся, що це допомагає.


Я бачив і цей код - дякую за посилання на нього. Добре бачити, як RBM починають демонструватися в R, але я відчуваю, що R все ще відстає від пітона в плані глибокого навчання. Я хотів би побачити кілька повнофункціональних бібліотек для сучасних нейронних мереж!
Зак

Я чую тебе там, Зак. Я з нетерпінням чекаю заглиблення в курс Нейронної мережі Хінтона на Курсері. Заманка Теано знову штовхає мене головою на 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.