2 Punkte von GN⁺ 2025-05-17 | 1 Kommentare | Auf WhatsApp teilen
  • Eine kurze Einführung in Struktur und Zweck der Boltzmann-Maschine
  • Die Energiefunktion und die Wahrscheinlichkeitsverteilung werden mit Formeln definiert
  • Die Aktualisierungsregeln für Gewichte und Biases werden per Ableitung hergeleitet
  • Erläuterung der Methode zur Approximation des Modellerwartungswerts über positive/negative Phase und Gibbs-Sampling
  • Abschließend wird der Algorithmus Contrastive Divergence als Ganzes zusammengefasst

Konzepte von Boltzmann-Maschine und Contrastive Divergence

  • Eine Boltzmann-Maschine besitzt eine Eingabeschicht (visible layer), eine verborgene Schicht (hidden layer) sowie eine Gewichtsmatrix, die beide verbindet, und jeweils Bias-Vektoren für beide Schichten

Energiefunktion und Wahrscheinlichkeitsverteilung

  • Die Energiefunktion wird in Matrixform wie folgt definiert

    E(v, h) = -ΣiΣj wij vi hj - Σi bi vi - Σj cj hj
    • v: Vektor der sichtbaren Schicht, h: Vektor der verborgenen Schicht, w: Gewichte, b/c: Biases der jeweiligen Schichten
  • Die gemeinsame Verteilung der Boltzmann-Maschine ist

    P(v, h) = (1/Z) * exp(-E(v, h))
    • Z (Partitionsfunktion) dient zur Normierung der Wahrscheinlichkeitsverteilung

Log-Likelihood und Ableitung

  • Das Training erfolgt durch Maximierung der Likelihood der Trainingsdaten

    log(P(v)) = log(Σh exp(-E(v, h))) - log(Z)
  • Die partielle Ableitung der Log-Likelihood nach dem Gewicht wij ist

    ∂(log P(v))/∂wij = <vi hj>Daten - <vi hj>Modell
    • < · >Daten: Erwartungswert bezüglich der realen Daten
    • < · >Modell: Erwartungswert bezüglich der vom Modell erzeugten Daten

Lernregeln für Gewichte und Biases

  • Gewichte und Biases werden wie folgt aktualisiert
    • Δwij = η(<vi hj>Daten - <vi hj>Modell)
    • Δbi = η(<vi>Daten - <vi>Modell)
    • Δcj = η(<hj>Daten - <hj>Modell)
    • η ist die Lernrate

Contrastive-Divergence-Algorithmus

  • Da sich der Modellerwartungswert < · >Modell nicht direkt berechnen lässt, wird Gibbs-Sampling verwendet
  • Contrastive Divergence nähert ihn mit dem folgenden Verfahren an
    1. Positive Phase: Die verborgene Schicht h(0) wird aus P(h | v(0)=Daten) gesampelt
    2. Negative Phase: k Wiederholungen von Gibbs-Sampling
    • Abwechselnd wird mit v(t+1) ~ P(v | h(t)) und h(t+1) ~ P(h | v(t)) gesampelt
  • Für das Update wird die Differenz zwischen Datenerwartungswert und Modellerwartungswert verwendet
    • Δwij = η(<vi hj>Daten - <vi hj>Modell)
    • Δbi = η(<vi>Daten - <vi>Modell)
    • Δcj = η(<hj>Daten - <hj>Modell)

Zusammenfassung

  • Das Wesen des Lernens in der Boltzmann-Maschine besteht als energiebasiertes Modell darin, die Differenz der Erwartungswerte zwischen realen Daten und der vom Modell erzeugten Verteilung zu verringern
  • Contrastive Divergence ist die zentrale Trainingsmethode, die diese Approximation schnell und effizient ermöglicht
  • Über Gibbs-Sampling verbindet sie Modellverteilung und reale Daten; durch Wiederholung dieses Prozesses werden Gewichte und Biases so aktualisiert, dass die Boltzmann-Maschine die Daten gut repräsentieren kann

1 Kommentare

 
GN⁺ 2025-05-17
Hacker-News-Kommentare
  • Meinem Verständnis nach war Harmonium (Smolensky) die erste Restricted Boltzmann Machine und verfolgte das Konzept, statt „energy“ zu minimieren, „harmony“ zu maximieren. Als Smolensky, Hinton und Rumelhart zusammenarbeiteten, nannten sie es „goodness of fit“. Das Harmonium-Paper ist wirklich äußerst lesenswert. Hinton wurde zum Superstar der KI-Welt, und Smolensky schrieb ein langes Buch zur Linguistik. Mich würde interessieren, ob jemand mehr über diese Geschichte weiß.

  • Interessanter Artikel über David Ackley. Das T2 Tile Project ist ebenfalls einen Blick wert.

    • Der entscheidende Punkt ist, dass an solchen wichtigen Entwicklungen wirklich sehr viele Menschen beteiligt sind. Doktorandinnen und Doktoranden leisten enorm viele Beiträge, und auf ihrer Arbeit wird später weiter aufgebaut. Ich verstehe nicht, warum Forschung in den USA als Verschwendung angesehen wird, obwohl sie doch alles massiv vorangebracht hat.
  • Ich bin der Autor. Vielen Dank für die vielen Kommentare, ich hätte nicht erwartet, dass das so populär wird. Ich behebe gerade Tippfehler, Abstände, Scroll-Probleme usw., danke für die Hinweise.

    • Die Tippfehler sind behoben, und auf Mobilgeräten sieht es jetzt deutlich besser aus.
  • Ich habe den Titel als "A Tiny Boltzmann Brain" fehlgelesen. Mein natürliches Gehirn hat diese Verwirrung sofort aufgelöst. Ich nahm an, es gehe um ein Experiment, bei dem man einem winzigen Modell zufällige Gewichte gibt, um zu testen, ob es etwas Sinnvolles tun kann. Je kleiner das Modell, desto höher schien mir die relative Wahrscheinlichkeit, dass aus der Zufallsgenerierung etwas Interessantes entsteht. Meine Vermutung war zwar falsch, aber ich bleibe trotzdem zuversichtlich. Ich schlage eine neue Modellfamilie namens „Unbiased-Architecture Instant Boltzmann Model“ (UA-IBM) vor. Irgendwann wird es vielleicht ausreichend große Quantencomputer geben, mit denen man den gesamten Datensatz zusammen mit allen Parametern und Architekturen des Modells in einem Quantenzustand überlagert und alles auf einmal inferieren kann. Hat zufällig jemand ein paar freie Qubits für so ein Experiment? (Nebenbei ist es ironisch, dass zwar alles quantenmechanisch ist, sich das in der Praxis aber noch nicht richtig nutzen lässt. Und ich frage mich, welchen gesellschaftlichen und technologischen Entwicklungspfad eine außerirdische Zivilisation hätte, die sich von einzelnen Quantensensoren zu Wesen mit einem vollständig quantenbasierten Nervensystem entwickelt.)

    • Die armen Quantenlebewesen. Ihnen bleibt das Schicksal, immer lange auf Berechnungen zu warten, weil sie keinen Zugang zu Rechenmodellen haben können, die schneller arbeiten als ihr eigenes Denken.
    • Hinweis: So funktionieren Quantencomputer nicht.
  • Sehr gute Erklärung. Nur als Hinweis: Das Scrollen mit der Maus ist überempfindlich (vermutlich ist es auf Mobilgeräten okay). Bei jedem Scrollen sprang es zur ersten oder letzten Seite, was ziemlich störend war. Zum Glück konnte ich mit der Tastatur alles normal lesen.

  • Wenn ich das richtig verstehe, braucht man hier im Unterschied zu den heute üblichen neuronalen Netzen für die Weight-Updates Gibbs-Sampling statt gradientenbasierter Forward-/Backward-Passes. Weiß jemand, warum das so ist?

    • Soweit ich es verstehe, wird Gibbs-Sampling verwendet, um den Erwartungswert über die Modellverteilung zu approximieren. Um den Gradienten der Log-Likelihood zu berechnen, braucht man ein Integral über die Verteilung, das sich nicht direkt ausrechnen lässt. Das ist ähnlich wie bei VAE, wenn man mit MCMC repräsentative Samples zieht. Im Deep Learning schätzt man Gradienten über Batches aus dem Datensatz, aber bei RBMs braucht man Erwartungswerte über die explizit modellierte Wahrscheinlichkeitsverteilung.
    • Ich bin kein Experte, habe aber etwas formale Ausbildung im Bayes-Bereich. Gibbs nutzt man oft dann, wenn der Gradient nicht klar ist oder wenn man die Verteilung selbst rekonstruieren möchte. Jeder sichtbare Knoten hängt von den Hidden Nodes ab, und die Hidden Nodes beeinflussen wiederum die sichtbaren Knoten, wodurch der Gradient sehr komplex wird. Deshalb ist Gibbs-Sampling auf Basis der marginalen Likelihood deutlich einfacher.
    • Ich kann mich irren, aber ich denke, es liegt an der ungerichteten Struktur des RBM. Anders als bei Feed-Forward-Netzen kann man keinen Computational Graph aufbauen.
  • Dieser Artikel weckt Erinnerungen. 1990 habe ich in C mit void pointers neuronale Netzwerkknoten als Array gebaut und damit eine Boltzmann Machine und ein Perzeptron implementiert. Damals bestand der Einsatz von „AI“ darin, aus einer MIDI-Melodie die nächste Note vorherzusagen oder Notenformen wie minim, crotchet und quaver in einem 5x9-Pixelraster zu erkennen. Eine Erkennungsrate von 85 % galt schon als völlig „gut“.

    • Es ist lustig, Notenformen in einem 5x9-Pixelraster zu erkennen. Das wirkt wie ein komplettes Eigenbauprojekt von Grund auf, ähnlich den Neural-Network-Beispielen von 3Blue1Brown. Wenn man so etwas mit Chuck kombiniert, könnte man heute sogar ein solches Programm clientseitig im Browser bauen.
    • Mich würde interessieren, ob sich die Ergebnisse auch musikalisch angehört haben.
  • Der Artikel war leicht verständlich und klar. Er hat viele alte Erinnerungen geweckt. Schamlose Eigenwerbung, aber ich habe vor einiger Zeit einmal ein Video erstellt, das den Trainingsprozess eines RBM visualisiert.

  • Wirklich eine sehr saubere Demo. Ich erinnere mich daran, früher mehrere Vorlesungen von Geoff Hinton über Boltzmann Machines in einem Kurs zu neuronalen Netzen gesehen zu haben. Ein Punkt zur Korrektur: Eine Erklärung wie „Bei einer restricted Boltzmann machine sind visible und hidden Neuronen nicht miteinander verbunden“ ist missverständlich. Das könnte so wirken, als seien sichtbare und versteckte Knoten untereinander gar nicht verbunden. Gemeint ist genauer, dass es keine Verbindungen innerhalb desselben Typs gibt, also weder zwischen visible-Knoten noch zwischen hidden-Knoten. Man kann auch sagen, dass visible und hidden Knoten keine internen Verbindungen innerhalb ihres jeweiligen Typs haben.

    • Als ich „keine internen Verbindungen zwischen visible/hidden Neuronen“ gelesen habe, fragte ich mich zuerst, worin dann überhaupt der Unterschied zu einem MLP besteht. Erst später merkte ich, dass ich zum Intro zurück nach oben scrollen musste. Und ja, ich denke auch, dass es meist keine gute Idee ist, das Scroll-Verhalten selbst neu zu implementieren oder zu reparieren.