Boltzmann makinelerinin nasıl çalıştığını anlamaya çalışıyorum, ancak ağırlıkların nasıl öğrenildiğinden emin değilim ve net bir açıklama bulamadım. Aşağıdakiler doğru mu? (Ayrıca, iyi Boltzmann makine açıklamalarına işaret etmek de harika olurdu.)
Bir dizi görünür birim (örn., Görüntüdeki siyah / beyaz piksele karşılık gelen) ve bir dizi gizli birimimiz var. Ağırlıklar bir şekilde başlatılır (örneğin, [-0,5, 0,5] 'ten eşit olarak) ve daha sonra, bir durma kuralına ulaşılana kadar aşağıdaki iki faz arasında geçiş yaparız:
Kenetli faz - Bu aşamada, görünür birimlerin tüm değerleri sabittir, bu yüzden sadece gizli birimlerin durumlarını güncelleriz (Boltzmann stokastik aktivasyon kuralına göre). Ağ dengeye ulaşana kadar güncelleme yapıyoruz. Dengeye ulaştığımızda , ortalamasını (burada ve düğümlerinin durumlarıdır ) takip ederek daha fazla güncellemeye devam ediyoruz (önceden tanımlanmış bazı için ). Bu denge güncellemelerinden sonra , buradaN x i x j x i , x j i j N w i j = w i j + 1Cbir miktar öğrenme oranıdır. (Ya da sonunda toplu güncelleme yapmak yerine, denge adımından sonra güncellenir miyiz?)
Serbest aşama - Bu aşamada, tüm birimlerin durumları güncellenir. Dengeye ulaştığımızda, benzer şekilde N 'yi daha fazla güncellemeye devam ediyoruz, ancak sonunda korelasyon eklemek yerine şunu : .
Temel sorularım:
Kelepçeli fazdayken, görünür birimleri öğrenmek istediğimiz modellerden birine sıfırlıyor muyuz (o modelin önemini temsil eden bir miktar frekansla), yoksa görünür birimleri bulundukları durumda bırakıyor muyuz? serbest aşamanın sonunda?
Her aşamanın sonunda ağırlıkların toplu olarak güncellenmesini veya aşamanın her bir denge adımında ağırlıkların güncellenmesini sağlıyor muyuz? (Ya da biri iyi mi?)