Mesin Boltzmann terbatas vs jaringan saraf multilayer

22

Saya ingin bereksperimen dengan jaringan saraf untuk masalah klasifikasi yang saya hadapi. Saya berlari ke kertas yang berbicara tentang RBM. Tetapi dari apa yang saya mengerti, mereka tidak berbeda dari memiliki jaringan saraf multilayer. Apakah ini akurat?

Selain itu saya bekerja dengan R dan tidak melihat paket kalengan untuk RBM. Saya memang menemukan literatur yang berbicara tentang jaringan pembelajaran yang dalam yang pada dasarnya ditumpuk RBM tetapi tidak yakin apakah sepadan dengan upaya untuk mengimplementasikannya dalam R. Apakah ada yang punya petunjuk? Terima kasih

Brokoli
sumber
3
Mereka yang berbeda dari jaringan multilayer dilatih dengan backprop. Berikut adalah beberapa sumber daya untuk semua jenis jaring saraf: stats.stackexchange.com/a/36257/13669
Stumpy Joe Pete

Jawaban:

21

Pertama-tama RBM tentu berbeda dari Jaring Saraf normal, dan ketika digunakan dengan benar mereka mencapai kinerja yang jauh lebih baik. Juga, latih beberapa lapis RBM, dan kemudian gunakan bobot yang ditemukan sebagai titik awal untuk Mulitlayer NN sering menghasilkan hasil yang lebih baik daripada hanya menggunakan Multilayer NN.

Pointer terbaik yang dapat saya pikirkan adalah kursus tentang Coursera ini, yang diajarkan oleh Geoffrey Hinton, yang merupakan salah satu orang yang bertanggung jawab untuk RBM:

https://class.coursera.org/neuralnets-2012-001/class/index

video pada RBM dan Denoising Autoencoder adalah sumber belajar yang berharga bagi siapa pun yang tertarik dengan topik ini.

Mengenai implementasi di R, saya juga tidak tahu, tetapi jika Anda ingin mengimplementasikannya, lebih baik tidak menggunakan R murni (kecuali data Anda tidak terlalu besar). Pelatihan RBM membutuhkan waktu yang cukup lama, dan jika Anda menggunakan R murni alih-alih R dengan C, ia dapat tumbuh secara signifikan.

sjm.majewski
sumber
1
Saya dapat berbicara dengan masalah kinerja R, karena saya telah menulis beberapa RBM di dalamnya. Sebagian besar waktu perhitungan dihabiskan untuk mengalikan matriks, yang cenderung lebih lambat dalam R daripada dalam bahasa lain (mungkin dengan faktor 3 atau 5). Mengkompilasi ulang R untuk sistem Anda sendiri dengan BLAS yang disesuaikan (pustaka aljabar linier) dapat banyak membantu, karena dapat menerjemahkan bagian yang lambat ke C ++ dengan Rcpp. Menulis RBM satu-lapisan tersembunyi sebenarnya cukup cepat sehingga mungkin masuk akal untuk mengkodekannya dalam bahasa apa pun yang paling nyaman bagi Anda sebelum mencoba mengoptimalkan kecepatan.
David J. Harris
@ David J. Harris Sudahkah Anda membagikan implementasi di R? Saya ingin melihat mereka.
Zach
1
@Zach, saya cukup sibuk saat ini, tetapi saya akan melihat apa yang bisa saya lakukan tentang open-source di masa depan. Anda juga dapat mengirim email kepada saya di alamat di profil saya untuk salinan apa yang saya miliki jika Anda tidak keberatan memilah-milah proyek yang tidak berdokumen / setengah jadi.
David J. Harris
8

Dalam R Anda dapat menggunakan neuralnet dan RSNNS (yang menyediakan antarmuka ke Stuttgart Neural Network Simulator ) agar sesuai dengan jaringan saraf multilayer standar, tetapi ada perbedaan untuk RBM.

Mengenai menerapkan jaring saraf yang dalam di R, saya pikir satu-satunya strategi yang berharga adalah antarmuka implementasi FOSS yang ada, yang biasanya merupakan solusi yang jauh lebih baik daripada hanya menerapkan kembali hal-hal pada Anda sendiri (saya tidak pernah mengerti mengapa semua orang perlu menemukan kembali roda). R menawarkan banyak fungsi untuk melakukan hal ini dan Anda dapat memanfaatkan penanganan data R dengan aspek kecepatan dan siap pakai dari solusi yang ada. Sebagai contoh, orang mungkin antarmuka MDP dengan kemampuan antarmuka Python / R, lihat misalnya, makalah ini .

Sunting: Andrew Landgraf dari Statistik Signifikan memberikan beberapa Kode R untuk RBM .

Momo
sumber