Saya mengikuti kursus Neoff Networks Geoff Hinton di Coursera dan juga melalui pengenalan mesin boltzmann terbatas , masih saya tidak mengerti intuisi di balik RBM.
Mengapa kita perlu menghitung energi di mesin ini? Dan apa gunanya probabilitas di mesin ini? Saya juga melihat video ini . Dalam video tersebut, ia hanya menulis persamaan probabilitas dan energi sebelum langkah perhitungan dan tampaknya tidak menggunakannya di mana pun.
Menambah di atas, saya tidak yakin untuk apa fungsi kemungkinan?
unsupervised-learning
rbm
Born2Code
sumber
sumber
Jawaban:
RBM adalah binatang yang menarik. Untuk menjawab pertanyaan Anda, dan menyiarkan ingatan saya pada mereka, saya akan menurunkan RBM dan berbicara melalui derivasi. Anda menyebutkan bahwa Anda bingung tentang kemungkinannya, jadi derivasi saya akan dari perspektif mencoba memaksimalkan kemungkinan. Jadi mari kita mulai.
RBM mengandung dua set neuron yang berbeda, terlihat dan tersembunyi, saya akan menunjukkan masing-masing dan h . Diberikan konfigurasi spesifik v dan h , kami memetakannya ruang probabilitas.v h v h
Ada beberapa hal yang lebih untuk didefinisikan. Fungsi pengganti yang kita gunakan untuk memetakan dari konfigurasi spesifik ke ruang probabilitas disebut fungsi energi . The Z konstan adalah faktor normalisasi untuk memastikan bahwa kita benar-benar memetakan ke ruang probabilitas. Sekarang mari kita menuju apa yang sebenarnya kita cari; probabilitas satu set neuron yang terlihat, dengan kata lain, probabilitas data kami. Z = ∑ v ∈ V ∑ h ∈ H e - E ( v , h ) p ( v )E(v,h) Z
Meskipun ada banyak istilah dalam persamaan ini, itu hanya datang untuk menuliskan persamaan probabilitas yang benar. Mudah-mudahan, sejauh ini, ini telah membantu Anda menyadari mengapa kita perlu fungsi energi untuk menghitung probabilitas, atau apa yang dilakukan lebih biasanya unnormalized probabilitas . Probabilitas yang tidak dinormalkan digunakan karena fungsi partisi Z sangat mahal untuk dihitung.p(v)∗Z Z
Sekarang mari kita ke fase pembelajaran RBM yang sebenarnya. Untuk memaksimalkan kemungkinan, untuk setiap titik data, kita harus mengambil langkah gradien untuk membuat . Untuk mendapatkan ekspresi gradien diperlukan beberapa akrobat matematika. Hal pertama yang kita lakukan adalah mengambil log p ( v ) . Kami akan beroperasi di ruang probabilitas log mulai sekarang untuk membuat matematika layak.p(v)=1 p(v)
Mari kita mengambil gradien sehubungan dengan parameter di p ( v )
Sekarang saya melakukan ini di atas kertas dan menulis persamaan semifinal agar tidak membuang banyak ruang di situs ini. Saya sarankan Anda menurunkan sendiri persamaan ini. Sekarang saya akan menulis beberapa persamaan yang akan membantu melanjutkan derivasi kami. Perhatikan bahwa: , p ( v ) = Σ h ∈ H p ( v , h ) dan p ( h | v ) =Zp(v,h)=e−E(v,h′) p(v)=∑h∈Hp(v,h) p(h|v)=p(v,h)p(h)
Dan begitulah, kami memperoleh estimasi kemungkinan maksimum untuk RBM, jika Anda mau, Anda bisa menulis dua istilah terakhir melalui ekspektasi istilah masing-masing (kondisional, dan probabilitas gabungan).
Catatan tentang fungsi energi dan stokastik neuron.
Seperti yang Anda lihat di atas dalam derivasi saya, saya meninggalkan definisi fungsi energi agak kabur. Dan alasan untuk melakukan itu adalah bahwa banyak versi RBM yang berbeda mengimplementasikan berbagai fungsi energi. Salah satu yang dijelaskan Hinton dalam kuliah yang ditautkan di atas, dan ditunjukkan oleh @ Laurens-Meeus adalah:
Mungkin lebih mudah untuk beralasan tentang istilah gradien di atas melalui formulir harapan.
Harapan dari istilah pertama sebenarnya sangat mudah untuk dihitung, dan itu adalah kejeniusan di balik RBM. Dengan membatasi koneksi harapan bersyarat hanya menjadi propagasi ke depan dari RBM dengan unit yang terlihat dijepit. Ini adalah fase bangun dalam mesin Boltzmann. Sekarang menghitung istilah kedua jauh lebih sulit dan biasanya metode Monte Carlo digunakan untuk melakukannya. Menulis gradien melalui rata-rata berjalan Monte Carlo:
Menghitung term pertama tidak sulit, seperti yang disebutkan di atas, oleh karena itu Monte-Carlo dilakukan selama term kedua. Metode Monte Carlo menggunakan sampling acak berurutan dari distribusi, untuk menghitung harapan (jumlah atau integral). Sekarang pengambilan sampel acak dalam RBM klasik ini didefinisikan sebagai pengaturan suatu unit menjadi 0 atau 1 berdasarkan probabilitasnya secara stokastik, dengan kata lain, dapatkan angka seragam acak, jika kurang dari probabilitas neuron set ke 1, jika itu lebih besar dari set ke 0.
sumber
Selain jawaban yang ada, saya ingin berbicara tentang fungsi energi ini, dan intuisi di balik itu sedikit. Maaf jika ini agak panjang dan fisik.
Fungsi energi menggambarkan model Ising , yang merupakan model feromagnetisme dalam hal mekanika statistik / mekanika kuantum. Dalam mekanika statistik, kami menggunakan operator Hamiltonian untuk menggambarkan energi sistem mekanika kuantum. Dan suatu sistem selalu berusaha berada dalam keadaan dengan energi terendah.
Kita perlu menggunakan kuantitas fisik akhir: entropi. Seperti yang kita ketahui dari termodinamika, sebuah sistem akan menetap di negara dengan energi minimal, yang juga sesuai dengan keadaan dengan entropi maksimal.
Akhirnya , ini adalah di mana kita kembali ke RBMs: Pada dasarnya, kami ingin RBM ini untuk encode sebagai banyak informasi sebanyak mungkin. Jadi, karena kita harus memaksimalkan entropi (informasi-teoretis) dalam Sistem-RBM kita. Seperti yang diusulkan oleh Hopfield pada tahun 1982, kita dapat memaksimalkan entropi informasi-teoretis persis seperti entropi fisik: dengan memodelkan RBM seperti model Ising di atas, dan menggunakan metode yang sama untuk meminimalkan energi. Dan itulah mengapa kita membutuhkan fungsi energi aneh ini dalam RBM!
Derivasi matematika yang bagus dalam jawaban Armen Aghajanyan menunjukkan semua yang perlu kita lakukan, untuk meminimalkan energi, sehingga memaksimalkan entropi dan menyimpan / menyimpan informasi sebanyak mungkin dalam RBM kami.
PS: Tolong, fisikawan yang terkasih, maafkan segala ketidakakuratan dalam derivasi insinyur ini. Jangan ragu untuk mengomentari atau memperbaiki ketidakakuratan (atau bahkan kesalahan).
sumber
Jawaban @Armen telah memberi saya banyak wawasan. Namun satu pertanyaan belum dijawab.
sumber
h_bin = (rand() < h_val) ? 1 : 0
h
atauv
- Anda mengambil sampel vektor nilai biner untukh
atauv
, untuk menghasilkan contoh bahwa jaringan "percaya" ada - yaitu contoh yang memiliki peluang statistik tinggi untuk menjadi wakil dari perlengkapan latihan. Selama pelatihan, Anda menentukan seberapa cocok dengan contoh pelatihan yang ada dan menyesuaikan bobot sesuai.