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?
sumber
Jawaban:
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 ( v ∣ h ) = V ∏ i = 0 p ( v i ∣ h ) , di mana p ( v i ∣ h ) = σ ( a i + Hv
Menggunakan RBM untuk klasifikasi
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.
sumber
@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.
sumber
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
sumber