Saya mencoba memahami cara kerja mesin Boltzmann, tetapi saya tidak begitu yakin bagaimana bobot dipelajari, dan belum dapat menemukan deskripsi yang jelas. Apakah yang berikut ini benar? (Juga, petunjuk penjelasan mesin Boltzmann yang bagus juga akan bagus.)
Kami memiliki satu set unit yang terlihat (mis., Terkait dengan piksel hitam / putih pada gambar) dan satu set unit tersembunyi. Bobot diinisialisasi entah bagaimana (misalnya, seragam dari [-0,5, 0,5]), dan kemudian kami bergantian antara dua fase berikut hingga beberapa aturan penghentian tercapai:
Fase penjepit - Pada fase ini, semua nilai unit yang terlihat adalah tetap, jadi kami hanya memperbarui status unit yang tersembunyi (sesuai dengan aturan aktivasi stokastik Boltzmann). Kami memperbarui hingga jaringan mencapai keseimbangan. Setelah kami mencapai kesetimbangan, kami terus memperbarui lebih banyak kali (untuk beberapa telah ditentukan ), melacak rata-rata (di mana adalah keadaan node i dan j ). Setelah pembaruan equilibrium N tersebut , kami memperbarui w_ij = w_ij + \ frac {1} {C} Rata-rata (x_i x_j) , di mana Cadalah tingkat belajar. (Atau, alih-alih melakukan pembaruan batch di akhir, apakah kita memperbarui setelah kita menyeimbangkan langkah?)
Fase bebas - Dalam fase ini, status semua unit diperbarui. Setelah kami mencapai kesetimbangan, kami juga terus memperbarui N kali lebih banyak, tetapi alih-alih menambahkan korelasi di akhir, kami kurangi: .
Jadi pertanyaan utama saya adalah:
Setiap kali kita berada dalam fase penjepit, apakah kita mereset unit yang terlihat ke salah satu pola yang ingin kita pelajari (dengan beberapa frekuensi yang mewakili pentingnya pola itu), atau kita meninggalkan unit yang terlihat dalam keadaan di mana mereka berada pada akhir fase bebas?
Apakah kita melakukan pembaruan batch bobot pada akhir setiap fase, atau memperbarui bobot pada setiap langkah keseimbangan dalam fase? (Atau, apakah keduanya baik-baik saja?)
sumber