TLDR
Für -Schritt Kontras Divergence Aktualisieren sichtbar Bias , basierend auf Datenvektor unter Verwendung von :b j dnbjd
b(t)j←b(t−1)j+η(dj−v^(n)j)
Aktualisieren Sie den versteckten Bias mit:hi
c(t)i←c(t−1)i+η(h^(0)i−h^(n)i)
Wobei und die Verzerrungen nach der Aktualisierungsnummer t sind, die Lernrate ist, die te Komponente des ist und wo und sind die Wahrscheinlichkeiten, dass die verborgene Einheit und die sichtbare Einheit aktiv sind, sobald das RBM den Daten ausgesetzt und für Schritte ausgeführt wurde. Dies setzt eine Minibatch-Größe von 1 voraus; Für die praktische Minibatch-Größe werden die über die Datenvektoren erhaltenen Aktualisierungen gemittelt .b(t)jc(t)iηdjjh^(n)jv^(n)jijnkk
Vollständige Erklärung
Ich hatte die gleichen Probleme. Eine gute Möglichkeit, sich das vorzustellen, ist, dass die Vorurteile selbst nur Gewichte sind. In neuronalen Netzwerkmodellen wird die Vorspannung einer Einheit häufig als das Gewicht einer Verbindung modelliert, die die betreffende Einheit mit einer "immer an" -Einheit verbindet, dh einer imaginären Einheit, deren Aktivierung immer 1 ist.
Im RBM-Fall würde dies bedeuten, dass Sie sich eine zusätzliche sichtbare Einheit vorstellen, deren Ausgabe immer 1 ist. Diese sichtbare Einheit wird an jede der verborgenen Einheiten angehängt (genau wie jede andere sichtbare Einheit), und das Gewicht dieser Verbindungen sind die Vorurteile der jeweiligen versteckten Einheiten. In ähnlicher Weise können die Verzerrungen der sichtbaren Einheiten modelliert werden, indem man sich eine zusätzliche verborgene Einheit vorstellt, deren Wert immer eins ist und die mit jeder der sichtbaren Einheiten verbunden ist, wobei die Gewichte dieser Verbindungen die sichtbaren Verzerrungen sind.
Sie könnten Ihr RBM sogar auf diese Weise implementieren, aber ich glaube nicht, dass die Leute das normalerweise tun. Der Punkt ist, dass Sie, wenn Sie auf diese Weise darüber nachdenken, (im Wesentlichen) dieselbe Aktualisierungsregel für die Verzerrungen verwenden können wie für die Gewichte, da Verzerrungen nur Gewichte sind, die mit "immer an" -Einheiten verbunden sind.
Seien wir konkret. Ich werde die übliche stufige Aktualisierungsregel für kontrastive Divergenz aufschreiben und die Regularisierung der Einfachheit halber ignorieren. Der Einfachheit halber gilt diese Aktualisierungsregel auch für einen "Minibatch" von 1 Datenvektor. Die Aktualisierung für ein Minibatch mit Vektoren ist die durchschnittliche Aktualisierung über alle Vektoren. Die Aktualisierungsregel lautet:nkk
W(t)i,j←W(t−1)i,j+η(h^(0)i⋅dj−h^(n)i⋅v(n)j)
wobei:
- W(t)i,j ist das Gewicht, das die sichtbare Einheit mit der verborgenen Einheit nach der Aktualisierungsnummervjhit
- η ist die Lernrate
- h^(n)i ist die Wahrscheinlichkeit, dass eine versteckte Einheit aktiv ist, sobald die Maschine dem Datenvektor ausgesetzt und für Schritte entwickelt wurde.
idn
- was bedeutet, dass nur die Aktivierung der verborgenen Einheit als unmittelbare Antwort auf den Datenvektor ist ih^(0)ii
- j ddj ist die te Komponente desjd
- j nv(n)j ist der Zustand der sichtbaren Einheit sobald die Maschine dem Datenvektor ausgesetzt und für Schritte entwickelt wurde.jn
(Einige Leute verwenden um die sichtbaren Einheiten zu indizieren, und um die versteckten zu indizieren, schreiben aber trotzdem --- es spielt keine Rolle, solange Sie die richtigen Werte miteinander multiplizieren.)j W i , jijWi,j
Achten Sie darauf, den "Zustand" einer Einheit, der mit oder , und die "Aktivierung" einer Einheit, die mit oder . Der Status einer Einheit ist entweder 0 oder 1, während die Aktivierung eine beliebige reelle Zahl zwischen 0 und 1 ist. Wenn die Aktivierung 0,8 beträgt, ist der Status wahrscheinlich 1, in 20% der Fälle jedoch 0. v ( n ) , j h ( n ) , i v ( n ) ih(n)iv(n)jh^(n)iv^(n)i
Wenn Sie Verzerrungen als Gewichte für "immer an" -Einheiten behandeln, werden Sie feststellen, dass sich die obige Gleichung zu den für Bias-Aktualisierungen unter " TLDR " angegebenen vereinfacht . Es gibt jedoch einen kleinen Unterschied bei der Aktualisierung auf sichtbare Verzerrungen: Hier wird die sichtbare Aktivierung anstelle des Status verwendet . Die Aktivierung hat den gleichen erwarteten Wert, weist jedoch eine geringere Varianz als der Zustand auf, wodurch das Rauschen im Lernsignal verringert wird. In diesem Handbuch eine kurze Beschreibung der Verwendung von Aktivierungen anstelle von Zuständen.§3