Próbuję zrozumieć, jak działają maszyny Boltzmann, ale nie jestem pewien, w jaki sposób uczone są ciężary i nie byłem w stanie znaleźć jasnego opisu. Czy poniższe informacje są prawidłowe? (Również wskazania do każdego dobrego wyjaśnienia maszyny Boltzmanna byłyby również świetne.)
Mamy zestaw jednostek widocznych (np. Odpowiadających czarno-białym pikselom na obrazie) i zestaw jednostek ukrytych. Wagi są w jakiś sposób inicjalizowane (np. Równomiernie od [-0,5, 0,5]), a następnie przełączamy się między kolejnymi dwiema fazami, aż do osiągnięcia pewnej reguły zatrzymania:
Faza zaciśnięta - W tej fazie wszystkie wartości widocznych jednostek są stałe, dlatego aktualizujemy tylko stany ukrytych jednostek (zgodnie z regułą aktywacji stochastycznej Boltzmanna). Aktualizujemy, aż sieć osiągnie równowagę. Kiedy osiągniemy równowagę, kontynuujemy aktualizację więcej razy (dla niektórych predefiniowanych N ), śledząc średnią z x i x j (gdzie x i , x j są stanami węzłów i i j ). Po tych aktualizacjach N równowagi aktualizujemy w i j = w i j +, gdzieCoznacza pewną szybkość uczenia się. (Czy zamiast przeprowadzać aktualizację wsadową na końcu, czy aktualizujemy po kroku równowagi?)
Faza wolna - W tej fazie stany wszystkich jednostek są aktualizowane. Kiedy osiągniemy równowagę, podobnie kontynuujemy aktualizację N 'więcej razy, ale zamiast dodawać korelacje na końcu, odejmujemy: .
Więc moje główne pytania to:
Za każdym razem, gdy jesteśmy w fazie zaciśniętej, resetujemy widoczne jednostki do jednego z wzorców, których chcemy się nauczyć (z pewną częstotliwością, która reprezentuje znaczenie tego wzoru), czy też pozostawiamy widoczne jednostki w stanie, w jakim były pod koniec fazy wolnej?
Czy przeprowadzamy okresową aktualizację wag na końcu każdej fazy, czy aktualizujemy wagi na każdym etapie równowagi w fazie? (Lub czy jedno jest w porządku?)