我想知道是否有任何用于深度学习神经网络的好的 R 库?我知道有nnet
、neuralnet
和RSNNS
,但这些似乎都没有实现深度学习方法。
我对无监督学习和监督学习以及使用 dropout 防止共同适应特别感兴趣。
/edit:几年后,我发现h20 深度学习包设计得非常好,易于安装。我也喜欢mxnet 包,它(有点)难以安装,但支持 covnets 之类的东西,在 GPU 上运行,而且速度非常快。
我想知道是否有任何用于深度学习神经网络的好的 R 库?我知道有nnet
、neuralnet
和RSNNS
,但这些似乎都没有实现深度学习方法。
我对无监督学习和监督学习以及使用 dropout 防止共同适应特别感兴趣。
/edit:几年后,我发现h20 深度学习包设计得非常好,易于安装。我也喜欢mxnet 包,它(有点)难以安装,但支持 covnets 之类的东西,在 GPU 上运行,而且速度非常快。
OpenSource h2o.deepLearning() 是来自 h2o.ai 的 R 深度学习包,这里有一篇文章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
有一个名为“darch”的包
http://cran.um.ac.ir/web/packages/darch/index.html
来自 CRAN 的报价:
darch:用于深度架构和受限玻尔兹曼机器的包
darch 包是基于 GE Hinton 和 RR Salakhutdinov 的代码构建的(可在 Matlab 代码下获得深度信念网络:上次访问:2013 年 8 月 1 日)。该软件包用于生成具有多层(深度架构)的神经网络,并使用出版物“深度信念网络的快速学习算法”(GE Hinton、S. Osindero、YW Teh)和“降低维度”中介绍的方法对其进行训练具有神经网络的数据”(GE Hinton,RR Salakhutdinov)。该方法包括使用 GE Hinton (2002) 发布的对比散度方法进行预训练,以及使用常见的已知训练算法(如反向传播或共轭梯度)进行微调。
为了回答我自己的问题,我在 R 中为 RBM 编写了一个小包: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 中的实现,但我编写的函数类似于 base R 中的 pca 函数并包含堆叠功能。我认为它比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