深層学習のためのRライブラリ


56

ディープラーニングニューラルネットワーク用の優れたRライブラリがあるかどうか疑問に思っていましたか?私は知っているnnetneuralnetRSNNS、これらのどれも深い学習方法を実装するように見えるん。

特に、教師なし学習に続いて教師なし学習に興味があり、ドロップアウトを使用して共同適応を防ぎます。

/ edit:数年後、h20ディープラーニングパッケージは非常に適切に設計され、インストールが簡単であることがわかりました。mxnetパッケージも大好きです。これはインストールが(少し)難しいですが、covnetなどをサポートし、GPU上で実行され、非常に高速です。


1
関連:stats.stackexchange.com/questions/40598/…これらの方法は、Rで(公に)利用できない私の知る限りです。
Momo

@Momo:リンクをありがとう。Rから呼び出し可能なパブリックC、C ++、またはFortranコードはありますか?
ザック

4
(ここではより多くのCUVライブラリまたはEblearnをチェックdeeplearning.net/software_linksのPython LIBSが良いR.に代わるかもしれない)
モモ


こちらの Rによる実装をご覧ください。
パトリック

回答:


19

オープンソース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:ディープアーキテクチャおよびRestricted-Bolzmann-Machines用のパッケージ

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に戻ってきました!
ザック

このパッケージで深い信念のネットワークをトレーニングし、それを使用して新しいデータを予測するための例を見つけましたか?私はそれが使用するインターフェースが非常に直感的でないと思います。
ザック

いいえ、していません。例はありませんか?そうでない場合は、このサイトにそれらを投稿し、「独自の質問に答えて」、より多くの評判ポイントを獲得できます。
電源14年

1
見つかったら投稿します。これまでのところ、ドキュメントにはフィッティングネットワークの例がいくつかありますが、予測の例はありません。そして、いくつかのフィッティングの例にはバグがあります。
ザック14年

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

このコードは、RでのAndrew Landgrafの実装pythonのエドウィン・チェンの実装に似ていますが、ベースRのpca関数に似た関数を記述し、スタック用の機能を含めました。darchパッケージよりもユーザーフレンドリだと思います。使用方法がわかりません(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パッケージから試してください。
パワー14

@power:PCAを比較として使用していますが、ヒントをありがとう。irlbaは、svdを実行するための優れたパッケージでもあります。
ザック14

新しいパッケージは「ドロップアウト」トレーニングを提供しますか?
DavideChicco.it

@ DavideChicco.itはい、のヘルプファイルをご覧ください?rbm。rbmは監視されないことに注意してください。
ザック

ZachにはRecurrent Neural Networksが組み込まれていますか?これは、私がPythonへの移行を検討していた時系列の大きな領域です。
隠れマルコフモデル

11

H2OのDeep Learningモジュールを試すことができます。これは分散されており、ドロップアウトの正規化や適応学習率などの多くの高度な技術を提供します。

スライド: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はすばらしく、大好き です。インストールは少し難しいですが、GPUと複数のCPUをサポートしています。R(特に画像)でディープラーニングを行う場合は、mxnetから始めることを強くお勧めします。


+1、はいmxnetはC ++ / CUDAによって完全に実装されているため、非常に効率的です!
パトリック

5

R専用のディープラーニングライブラリに出会ったことはありませんが、r-bloggerについても同様の議論に遭遇しました。議論の中心は、RBM(制限付きボルツマンマシン)の使用です。次のリンクをご覧ください-

http://www.r-bloggers.com/restricted-boltzmann-machines-in-r/(「alandgraf.blogspot.com」から再投稿)

著者は、実際にRで自己実装アルゴリズムをカプセル化するのに本当に良い仕事をしています。コードの妥当性についてはまだ吟味していませんが、少なくともRで深層学習のきらめきがあります。

これがお役に立てば幸いです。


私もこのコードを見ました-それにリンクしてくれてありがとう。RにRBMが現れ始めているのは良いことですが、ディープラーニングの点でRはまだpythonに遅れを取っているように感じます。最新のニューラルネット用のフル機能ライブラリをいくつか見たいです!
ザック

ザックがいると聞きます。Courseraのヒントンのニューラルネットコースをより深く理解することを楽しみにしています。Theanoの魅力は、私を再びPythonに追い込みます。
アルデンヌ

まさに。テアノはとても魅力的です!
ザック

gputoolsパッケージはtheaonoで見つかったGPUの行列演算の一部を実装しているようだ:cran.r-project.org/web/packages/gputools/index.html
ザック

ほとんど必要のない@Zachはgputools、Linuxでプリロードトリックを使用してGEMMを高速化することを検討します(こちら)
パトリック

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.