Bagaimana cara menggunakan RBM untuk klasifikasi?

12

Saat ini saya sedang bermain dengan Mesin Boltzmann Terbatas dan sejak itu saya ingin mengklasifikasikan angka tulisan tangan.

Model yang saya buat sekarang model generatif yang cukup mewah tapi saya tidak tahu bagaimana melangkah lebih jauh dengannya.

Dalam artikel ini penulis mengatakan, bahwa setelah membuat model generatif yang baik, seseorang " kemudian melatih classifier diskriminatif (yaitu, classifier linier, Support Vector Machine) di atas RBM menggunakan sampel berlabel " dan selanjutnya menyatakan " sejak Anda menyebarkan vektor data ke unit tersembunyi dari model RBM untuk mendapatkan vektor satuan tersembunyi, atau representasi tingkat data yang lebih tinggi ". Masalahnya adalah saya tidak yakin apakah itu benar.

Apakah itu berarti yang harus saya lakukan adalah menyebarkan input ke unit tersembunyi dan di sana saya memiliki fitur RBM untuk klasifikasi?

Adakah yang bisa menjelaskan proses ini kepada saya?

nama tampilan
sumber
Mesin Boltzmann yang dibatasi adalah salah satu komponen paling awal yang digunakan untuk pembelajaran mendalam. Bahkan, pekerjaan penting pertama di DNN dilakukan oleh Hinton adalah jaringan kepercayaan yang mendalam didasarkan pada RBM Silakan mencari makalah ini (jaringan keyakinan yang mendalam, 2007, untuk Hinton) untuk informasi lebih lanjut. Di situs webnya, Anda dapat menemukan sumber daya yang sangat penting serta percobaan demo cs.toronto.edu/~hinton/digits.html
Bashar Haddad
@hbaderts Saya mulai bermain-main dengan RBM. Jawaban yang diterima mudah dibaca. Saya ingin meminta klarifikasi, lapisan tersembunyi RBM acak setelah pengambilan sampel dari distribusi biner. Untuk klasifikasi, apakah probabilitas unit tersembunyi digunakan atau unit tersembunyi disampel dari distribusi biner (1 dan 0) diteruskan ke pengklasifikasi?
M3tho5

Jawaban:

15

Ulasan Mesin Boltzmann Terbatas

Mesin Boltzmann terbatas (RBM) adalah model generatif , yang mempelajari distribusi probabilitas atas input. Itu berarti, setelah dilatih, RBM dapat menghasilkan sampel baru dari distribusi probabilitas yang dipelajari. Distribusi probabilitas atas unit yang terlihat diberikan oleh p ( vh ) = V i = 0 p ( v ih ) , di mana p ( v ih ) = σ ( a i + Hv

p(vh)=i=0Vp(vih),
danσadalah fungsi sigmoid,aiadalah bias untuk simpul yang terlihati, danwjiadalah bobot darihjkevi. Dari dua persamaan ini, makap(vh)hanya bergantung pada status tersembunyih. Itu berarti bahwa informasi tentang bagaimana sampel terlihatvdihasilkan, harus disimpan dalam unit tersembunyi, bobot dan bias.
p(vih)=σ(ai+j=0Hwjihj)
σaiiwjihjvip(vh)hv

Menggunakan RBM untuk klasifikasi

h

Vektor tersembunyi ini hanyalah versi transformasi dari data input - ini tidak dapat mengklasifikasikan apa pun dengan sendirinya. Untuk melakukan klasifikasi, Anda akan melatih classifier apa pun (classifier linier, SVM, jaringan saraf feedforward, atau apa pun) dengan vektor tersembunyi alih-alih data pelatihan "mentah" sebagai input.

Jika Anda sedang membangun jaringan kepercayaan yang mendalam (DBN) - yang digunakan untuk melatih jaringan saraf umpan-maju dalam cara yang tidak diawasi - Anda akan mengambil vektor tersembunyi ini dan menggunakannya sebagai input ke RBM baru, yang Anda susun di atasnya. Dengan begitu, Anda bisa melatih jaringan lapis demi lapis hingga mencapai ukuran yang diinginkan, tanpa perlu data berlabel apa pun. Akhirnya, Anda akan menambahkan mis. Lapisan softmax ke atas, dan melatih seluruh jaringan dengan backpropagation pada tugas klasifikasi Anda.

hbaderts
sumber
Terima kasih atas hasil edit @ Seanny123, ini membuatnya lebih mudah dibaca.
hbaderts
5

@hbaderts menggambarkan seluruh alur kerja dengan sempurna. Namun, mungkin tidak masuk akal jika Anda benar-benar baru dengan ide ini. Oleh karena itu, saya akan menjelaskannya dengan cara awam (karena itu, saya akan menghilangkan detail):

Pikirkan jaringan yang dalam sebagai fungsi untuk mengubah data Anda. Contoh transformasi termasuk normalisasi, mengambil data log dll. Jaringan dalam yang Anda latih memiliki banyak lapisan. Masing-masing lapisan dilatih menggunakan beberapa jenis algoritma pembelajaran. Untuk lapisan pertama, Anda melewatkan data asli sebagai input dan mencoba untuk mendapatkan fungsi yang akan memberi Anda kembali "data asli yang sama" sebagai output. Namun, Anda tidak mendapatkan hasil yang sempurna. Oleh karena itu, Anda mendapatkan versi transformasi dari input Anda sebagai output dari lapisan pertama.

Sekarang, untuk lapisan kedua, Anda mengambil "data yang diubah" dan meneruskannya sebagai input dan ulangi seluruh proses pembelajaran. Anda terus melakukan itu untuk semua lapisan di jaringan Anda yang dalam.

Pada lapisan terakhir, yang Anda dapatkan adalah "versi yang diubah" dari data input asli Anda. Ini dapat dianggap sebagai abstraksi tingkat tinggi dari data input asli Anda. Perhatikan bahwa, Anda belum menggunakan label / output di jaringan dalam Anda. Oleh karena itu, segala sesuatu sampai titik ini adalah pembelajaran tanpa pengawasan. Ini disebut pra-pelatihan lapisan-bijaksana.

Sekarang, Anda ingin melatih model classifier / regresi dan ini adalah masalah pembelajaran yang diawasi. Cara Anda mencapai tujuan itu adalah dengan mengambil "versi final yang ditransformasi" dari input asli Anda dari lapisan terakhir di jaringan Anda yang dalam dan menggunakannya sebagai input untuk setiap classifier (mis. Knn classifier / softmax classifier / regresi logistik dll). Ini disebut susun.

Ketika Anda melatih classifier / pelajar langkah terakhir ini, Anda menyebarkan semua pembelajaran Anda di jaringan yang lengkap. Ini memastikan bahwa Anda dapat belajar dari label / output dan memodifikasi parameter layer-wise yang dipelajari.

Jadi, setelah model generatif Anda dilatih, ambil output dari model generatif Anda dan gunakan itu sebagai input ke classifier / pelajar. Biarkan kesalahan mengalir melalui seluruh jaringan saat pembelajaran berlanjut sehingga Anda dapat memodifikasi parameter layer-bijaksana yang dipelajari di langkah sebelumnya.

Sal
sumber
0

Anda dapat melatih RBM yang ditumpuk pada gambar Anda, dan kemudian melatih RBM akhir pada gabungan output dari tumpukan RBM dan label. Maka Anda benar-benar dapat menggunakan RBM untuk klasifikasi. Artikel ini oleh Hinton ++ menjelaskan pendekatan ini Algoritma Pembelajaran Cepat untuk Deep Belief Nets , juga Anda dapat melihat demo ini

Kristin H
sumber