ห้องสมุด R สำหรับการเรียนรู้ลึก


56

ฉันสงสัยว่ามีห้องสมุด R ที่ดีอยู่ที่นั่นสำหรับการเรียนรู้โครงข่ายประสาทเทียมหรือไม่? ฉันรู้ว่ามีของnnet, neuralnetและRSNNSแต่ไม่มีของเหล่านี้ดูเหมือนจะใช้วิธีการเรียนรู้ลึก

ฉันสนใจโดยเฉพาะอย่างยิ่งในการหากินตามด้วยการเรียนรู้ภายใต้การดูแลและใช้การออกกลางคันเพื่อป้องกันไม่ให้ร่วมการปรับตัว

/ แก้ไข: หลังจากไม่กี่ปีที่ผ่านมาฉันได้พบแพ็คเกจการเรียนรู้ระดับลึก h20 ที่ออกแบบมาอย่างดีและติดตั้งง่าย ฉันชอบแพ็คเกจ mxnetซึ่งยากต่อการติดตั้ง แต่สนับสนุนสิ่งต่าง ๆ เช่น covnets ทำงานบน GPU และเร็วมาก


1
ที่เกี่ยวข้อง: stats.stackexchange.com/questions/40598/…วิธีการเหล่านี้เป็นความรู้ของฉันไม่ (สาธารณะ) ในอาร์
Momo

@Momo: ขอบคุณสำหรับลิงค์ มีรหัส C, C ++ หรือรหัสสาธารณะใด ๆ ที่อาจเรียกได้จาก R หรือไม่
Zach

4
ลองดูที่ห้องสมุด CUV หรือ Eblearn (เพิ่มเติมได้ที่นี่deeplearning.net/software_links ) Python libs อาจเป็นทางเลือกที่ดีสำหรับ R.
Momo


ดูการดำเนินการโดย R ในที่นี่
Patric

คำตอบ:


19

OpenSource h2o.deepLearning () เป็นแพคเกจสำหรับการเรียนรู้เชิงลึกในการวิจัยจาก 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: แพ็คเกจสำหรับสถาปัตยกรรมระดับลึกและ 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) และการปรับจูนด้วยอัลกอริทึมการฝึกอบรมที่รู้จักกันทั่วไปเช่น backpropagation หรือการไล่ระดับสีคอนจูเกต


มันเพิ่งถูกเก็บถาวร! :-(
พลังงาน

3
darch กลับมาอีกครั้งใน CRAN!
Zach

คุณเคยพบตัวอย่างใด ๆ สำหรับการฝึกอบรมเครือข่ายความเชื่ออย่างลึกซึ้งด้วยแพคเกจนี้แล้วใช้มันเพื่อทำนายข้อมูลใหม่หรือไม่? ฉันพบว่าอินเทอร์เฟซที่ใช้นั้นใช้งานง่ายมาก
Zach

ไม่ฉันยังไม่ได้ ไม่มีตัวอย่างเหรอ? ถ้าไม่เช่นนั้นคุณสามารถโพสต์พวกเขาในเว็บไซต์นี้และ "ตอบคำถามของคุณเอง" และคะแนนคะแนนชื่อเสียงมากขึ้น
พลังงาน

1
ฉันจะโพสต์พวกเขาหากฉันพบใด ๆ จนถึงเอกสารมีตัวอย่างของเครือข่ายที่เหมาะสม แต่ไม่มีตัวอย่างของการทำนาย และตัวอย่างที่เหมาะสมบางอย่างมีข้อบกพร่อง
Zach

13

มีแพ็คเกจใหม่สำหรับเครือข่ายที่ลึกใน R: deepnet

ฉันยังไม่ได้ลองใช้ แต่มันถูกรวมอยู่ในชุดคาเร็ตแล้ว


12

เพื่อตอบคำถามของตัวเองฉันได้เขียนแพ็คเกจเล็ก ๆ ใน R สำหรับ RBMs: 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แต่ฉันเขียนฟังก์ชันนี้คล้ายกับฟังก์ชัน pca ใน base 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แพ็คเกจ
พลังงาน

@ พลังงาน: ฉันแค่ใช้ PCA เป็นการเปรียบเทียบ แต่ขอบคุณสำหรับเคล็ดลับ irlba ยังเป็นแพ็คเกจที่ยอดเยี่ยมสำหรับการทำ svd
ซัค

แพ็คเกจใหม่ของคุณมีการฝึกอบรม "กลางคัน" หรือไม่?
DavideChicco.it

@ DavideChicco.it ใช่ดูที่ helpfile ?rbmสำหรับ โปรดทราบว่า rbm ไม่ได้รับการดูแล
Zach

ซัครวมสิ่งนี้เข้ากับ Neural Networks อีกไหม? นี่เป็นเรื่องใหญ่สำหรับซีรี่ส์เวลาที่ฉันกำลังมองหาที่จะย้ายไปยัง Python
Hidden Markov Model

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 - Reinstate Monica

6

หากต้องการเพิ่มคำตอบอื่น:

mxnet นั้นยอดเยี่ยมมากและฉันก็ชอบมัน ติดตั้งได้ยากนิดหน่อย แต่มันรองรับ GPU และซีพียูหลายตัว หากคุณกำลังจะเรียนรู้อย่างลึกซึ้งใน R (โดยเฉพาะกับภาพ) ฉันขอแนะนำให้คุณเริ่มต้นด้วย mxnet


+1, ใช่ mxnet นั้นถูกใช้งานโดย C ++ / CUDA ดังนั้นมันจึงมีประสิทธิภาพมาก!
Patric

5

ในขณะที่ฉันไม่ได้พบห้องสมุดการเรียนรู้เชิงลึกสำหรับ R ฉันได้พบกับการอภิปรายคล้าย ๆ กันใน r-bloggers ศูนย์การสนทนาเกี่ยวกับการใช้ RBM (เครื่อง Boltzman ที่ถูก จำกัด ) ลองดูที่ลิงค์ต่อไปนี้ -

http://www.r-bloggers.com/restricted-boltzmann-machines-in-r/ (โพสต์ใหม่จาก 'alandgraf.blogspot.com')

ผู้เขียนทำหน้าที่ได้ดีมากในการห่อหุ้มอัลกอริธึมที่นำมาใช้ด้วยตนเองในอาร์ต้องบอกว่าฉันยังไม่ได้ตรวจสอบความถูกต้องของรหัส แต่อย่างน้อยก็มีการเรียนรู้ลึก ๆ

ฉันหวังว่านี่จะช่วยได้.


ฉันเคยเห็นรหัสนี้ด้วย - ขอบคุณที่เชื่อมโยงกับมัน เป็นการดีที่จะเห็น RBM เริ่มปรากฏใน R แต่ฉันรู้สึกว่า R ยังคงเป็นงูเหลือมหลายปีในแง่ของการเรียนรู้อย่างลึกซึ้ง ฉันชอบที่จะเห็นห้องสมุดที่โดดเด่นเต็มรูปแบบสำหรับมุ้งประสาทที่ทันสมัย!
Zach

ฉันได้ยินคุณที่นั่นซัค ฉันตั้งตาคอยที่จะลงลึกในหลักสูตร Neural Net ของ Hinton ใน Coursera ความเย้ายวนของ Theano ทำให้ฉันหัวทิ่มลงใน Python อีกครั้ง
Ardenne

เผง Theano น่าหลงใหลมาก!
Zach

ดูเหมือนว่าแพ็กเกจ gputools ใช้การดำเนินการ gpu matrix บางอย่างที่พบใน theaono: cran.r-project.org/web/packages/gputools/index.html
Zach

@Zach คุณเกือบจะไม่จำเป็นgputoolsและพิจารณาเคล็ดลับพรีโหลดการใช้งานบนลินุกซ์ที่จะเร่ง GEMM, ที่นี่
Patric

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.