Boltzmann-Maschine
Eine Boltzmann-Maschine ist in der Art ein rekurrentes neuronales Netz, das nach dem österreichischen Wissenschaftler Ludwig Boltzmann benannt wurde. Entwickelt wurde diese von Geoffrey Hinton und Terrence J. Sejnowski im Jahre 1985. Diese Maschinen können zu komplexeren Systemen aneinandergereiht werden wie zum Beispiel tiefe Glaubensnetzwerke. Die Boltzmann-Maschine wird auch stochastischens Hopfield-Netzwerk mit versteckten Einheiten genannt.[1] Beschränkt man die Verbindungen zwischen den Neuronen jedoch, lässt sich der Lernvorgang stark vereinfachen, wodurch Beschränkte Boltzmann-Maschinen sich zur Lösung praktischer Probleme einsetzen lassen.

Funktionsweise
Die Funktionsweise der Boltzmann-Maschine basiert auf der Boltzmann-Verteilung inspiriert, die besagt, dass der aktuelle Zustand eines physikalischen Systems von der Energie und der Temperatur des Systems abhängt. Um Boltzmann-Maschinen als neuronale Netze zu implementieren, verwendet man daher die Energiemodelle. Der Energie entspricht der Abweichung von der tatsächlichen Antwort. Je höher die Energie, desto größer die Abweichung. Es ist daher wichtig, das Modell zu trainieren, bis es einen Niedrigenergiepunkt erreicht. Ein solches theoretisches Modell hat das Problem lokaler Minima leiden und liefert weniger genaue Ergebnisse. Dieses Problem wurde gelöst, indem dem Modell erlaubt wurde, periodische Sprünge zu einem höheren Energiezustand zu machen und dann zurück zu den Minima zu konvergieren, was schließlich zu den globalen Minima führt.
Wenn Boltzmann-Maschinen beim Lernen eingesetzt werden, versuchen sie, wichtige Merkmale aus der Eingabe abzuleiten, diese Eingabe zu rekonstruieren und sie durch parallele Aktualisierung von Gewichten als Ausgabe wiederzugeben.
Boltzmann-Maschinen eignen sich gut, um ein Problem der Erfüllung von Einschränkungen zu lösen, selbst wenn sie schwache Einschränkungen hat. Ein Problem mit schwachen Einschränkungen versucht, eine Lösung zu erhalten, die nahe genug an einer Lösung sein kann, die alle Einschränkungen vollständig erfüllt, d. h. die Lösung muss nicht alle Einschränkungen vollständig erfüllen.
Boltzmann-Maschinen haben keine klare Abgrenzung zwischen Eingabeschicht und Ausgabeschicht. Die Knoten in Boltzmann-Maschinen werden einfach als sichtbare und unsichtbare Knoten kategorisiert. Die sichtbaren Knoten nehmen die Eingabe auf. Dieselben Knoten, die die Eingabe aufnehmen, geben die rekonstruierte Eingabe als Ausgabe zurück. Dies wird durch bidirektionale Gewichtungen erreicht, die sich rückwärts ausbreiten und die Ausgabe auf den sichtbaren Knoten rendern. Ein wesentlicher Vorteil der Architektur besteht darin, dass jeder Knoten mit allen anderen Knoten verbunden ist. Alle Verbindungen sind bidirektional und die Gewichtungen sind symmetrisch.[2]
Aufbau
Eine Boltzmann-Maschine ist wie ein Hopfield-Netz ein Netzwerk von Neuronen, in dem ein Energieniveau definiert ist. Wie bei Hopfield-Netzen nehmen die Neuronen nur binäre Werte (0 oder 1) an, verhalten sich im Gegensatz jedoch stochastisch. Das Energieniveau einer Boltzmann-Maschine ist so definiert wie bei einem Hopfield-Netz:
wobei gilt:
- ist das Gewicht der Verbindung zwischen Neuron und .
- ist der Zustand des Neurons .
- ist der Schwellwert eines Neurons . ( ist der Wert ab dem ein Neuron aktiviert wird.)
Die Verbindungen einer Boltzmann-Maschine haben zwei Beschränkungen:
- . (Kein Neuron hat eine Verbindung mit sich selbst.)
- . (Alle Verbindungen sind symmetrisch.)
Die Gewichtungen lassen sich in Form einer symmetrischen Matrix darstellen, deren Hauptdiagonale aus Nullen besteht.
Die Veränderung des Energieniveaus, die sich ergibt, wenn eines einzelnen Neuron vom Zustand zum Zustand wechselt, beträgt
Mit den Variablen der Boltzmann-Verteilung kann dies wie folgt geschrieben werden:
Daraus folgt
Aufgelöst nach der Wahrscheinlichkeit, dass das Neuron den Zustand hat, folgt daraus
Das bedeutet, dass die Wahrscheinlichkeit, dass ein Neuron aktiv ist, eine logistische Funktion der skalierten Veränderung des Energieniveaus zwischen seinem aktiven und inaktiven Zustand ist.
Genau wie beim Hopfield-Netz tendiert die Boltzmann-Maschine dazu, den Wert der so definierten Energie bei aufeinanderfolgenden Aktualisierungen zu verringern, letztendlich also zu minimieren, bis ein stabiler Zustand erreicht ist.[3]
Restricted Boltzmann Maschine
Eine sog. Restricted Boltzmann Maschine (RBM) besteht aus sichtbaren Einheiten (engl. visible units) und versteckten Einheiten (hidden units). An die sichtbaren Einheiten wird der Feature-Vektor angelegt.
Das „restricted“ (englisch für „beschränkt“) kommt durch die Tatsache, dass die sichtbaren Einheiten nicht untereinander und die versteckten Einheiten auch nicht untereinander verbunden sind. Allerdings sind die sichtbaren Einheiten mit den versteckten Einheiten vollständig verbunden. Sie bilden also einen bipartiten, ungerichteten Graphen. Dies ist im Folgenden dargestellt:

Die zu lernenden Parameter sind die Gewichte der Kanten zwischen sichtbaren und versteckten Einheiten sowie die Bias-Vektoren der versteckten und der sichtbaren Einheiten. Diese werden über den Contrastive Divergence Algorithmus gelernt.[4]
Restricted Boltzmann Machines wurden zum kollaborativen Filtern auf Netflix eingesetzt.[5]
Weblinks
Einzelnachweise
- Boltzmann-Maschine. Abgerufen am 10. April 2022.
- Vihar Kurama, PaperspaceBlog: Beginner's Guide to Boltzmann Machines in PyTorch
- Christian Borgelt: Hopfield Networks and Boltzmann Machines
- Geoffrey Hinton: A practical guide to training restricted Boltzmann machines. 2010.
- Ruslan Salakhutdinov, Andriy Mnih, Geoffrey Hinton: Restricted Boltzmann machines for collaborative filtering. In: Proceedings of the 24th international conference on Machine learning. 2007, S. 791–798.