Boltzmann-Maschine

stochastisches künstliches neuronales Netz

Eine Boltzmann-Maschine ist ein 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]

Beispiel einer Boltzmann-Maschine.
Eine graphische Repräsentation einer Boltzmann-Maschine mit 3 Hidden Units (blau) und 4 Visible Units (weiß). In Boltzmann-Maschinen sind sowohl „input“ als auch „output“ Neuronen sichtbare Neuronen.

Beschränkt man die Verbindungen zwischen den Neuronen, lässt sich der Lernvorgang stark vereinfachen – diese Boltzmann-Maschinen werden Beschränkte Boltzmann-Maschinen („restricted Boltzmann machines“) genannt.

Der Nobelpreis für Physik im Jahre 2024 ging an John Hopfield und Hinton für ihren fundamentalen Beitrag zum Maschinellen Lernen, insbesondere der Boltzmann-Maschine.

Funktionsweise

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]

Eine Boltzmann-Maschine hat das Lernziel eine parametrisierte Wahrscheinlichkeitsverteilung   über den sichtbaren Zuständen   durch Lernen von Parametern   zu approximieren[3]. Die parametrisierte Wahrscheinlichkeitsverteilung ist die Boltzmannverteilung (siehe unten). Die Parameter   werden durch Minimierung der Kullback-Leibler-Divergenz zwischen der vom Modell vorhergesagten Wahrscheinlichkeitsverteilung   und der in den Trainingsdaten gefundenen Verteilung   gefunden:

 .

Die Struktur der Boltzmann-Maschine ist (wie ein Hopfield-Netz) ein Netz von Neuronen (Zuständen), 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 wird benötigt, um die Wahrscheinlichkeitsverteilung   der Zustände zu parametrisieren. Die Energie ist so definiert wie bei einem Hopfield-Netz oder einem Ising-Modell:

 

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 den Wert 1 annimmt, 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.[4]

Beschränkte Boltzmann-Maschinen

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.[5]

Restricted Boltzmann Machines wurden zum kollaborativen Filtern auf Netflix eingesetzt.[6]

Literatur

Bearbeiten
  • Hinton, G. E., Sejnowski, T. J., & Ackley, D. H. (1984): Boltzmann machines: Constraint satisfaction networks that learn. Pittsburgh, PA: Carnegie-Mellon University, Department of Computer Science.
Bearbeiten

Einzelnachweise

Bearbeiten
  1. Boltzmann-Maschine. Abgerufen am 10. April 2022.
  2. Vihar Kurama, PaperspaceBlog: Beginner's Guide to Boltzmann Machines in PyTorch
  3. Hertz, J. A. (2018). Introduction To The Theory Of Neural Computation. USA: CRC Press. Seite 153 https://www.google.de/books/edition/Introduction_To_The_Theory_Of_Neural_Com/NwpQDwAAQBAJ?hl=de&gbpv=1&dq=Boltzmann%20machine%20is%20a%20%20recurrent%20neural%20network&pg=PT153
  4. Christian Borgelt: Hopfield Networks and Boltzmann Machines
  5. Geoffrey Hinton: A practical guide to training restricted Boltzmann machines. 2010.
  6. 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.