Boltzmann-Maschine
![Beispiel einer Boltzmann Maschine.](http://upload.wikimedia.org/wikipedia/commons/thumb/7/7a/Boltzmannexamplev1.png/220px-Boltzmannexamplev1.png)
Eine Boltzmann-Maschine ist in der Art ein rekurrentes neuronales Netz, das nach dem österreichischen Wissenschaftler Ludwig Boltzmann benannt wurde. Boltzmann-Maschinen sind eine spezielle Art energiebasiertes Modell. Entwickelt wurde sie von Geoffrey Hinton und Terrence J. Sejnowski im Jahre 1985. Die Boltzmann-Maschine wird auch stochastisches Hopfield-Netz mit versteckten Einheiten genannt.[1] Beschränkt man die Verbindungen zwischen den Neuronen, lässt sich der Lernvorgang stark vereinfachen, wodurch Beschränkte Boltzmann-Maschinen sich zur Lösung praktischer Probleme einsetzen lassen.
Funktionsweise
[Bearbeiten | Quelltext bearbeiten]Die Funktionsweise der Boltzmann-Maschine basiert auf der Boltzmann-Verteilung, 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 die 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 leidet unter dem Problem lokaler Minima 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 es 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
[Bearbeiten | Quelltext bearbeiten]Eine Boltzmann-Maschine ist wie ein Hopfield-Netz ein Netz 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 ein einzelnes Neuron vom Zustand zum Zustand wechselt, beträgt
Mit den Größen 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 Machine
[Bearbeiten | Quelltext bearbeiten]Eine sog. Restricted Boltzmann Machine (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“) bezeichnet die Tatsache, dass weder die sichtbaren Einheiten noch die versteckten Einheiten innerhalb dieser Gruppen 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
[Bearbeiten | Quelltext bearbeiten]- Scholarpedia Artikel von Geoffrey Hinton über Boltzmann machines (englisch)
- Vortrag von Geoffrey Hinton (englisch)
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ 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.