Frage

Weiß jemand, der eine Arbeitscodebeispiel aus dem Summe-Produkt-Algorithmus für (durchgeknallten) Glauben für Bayes-Netzwerke? Ich habe die Erde für ein paar Tage durchsucht, jedoch haben nicht viel Glück gehabt. Ich bin gleichgültig, in welcher Sprache es ist in.

Alle Dokumente, die ich über das Thema gefunden haben, sind voll von obskuren und absurderweise mehrdeutig mathspeak. Es scheint nicht, wie ein schwieriger Algorithmus, aber ich kann nicht sicher sein, weil einige der kniffligen Bits so viel beschönigt werden.

Alternativ kann ein Beispiel dafür, dass Anwendungen reelle Zahlen (eher als Variablenname) würde wahrscheinlich auch den Trick tun.

War es hilfreich?

Lösung 2

Ich habe Pearls Belief Propagation Algorithmus für Bayes-Netze implementiert. Es unterstützt loopy Ausbreitung als auch, wie es enden wird, wenn die informierten Wahrscheinlichkeitswerte zu konvergieren innerhalb von 0,001.

der gesamte Code ist in Java, und es kann in meinem Google Code Stift-ui sVN-Repo.

Dies gilt nicht explizit einen Faktorgraph machen.

Die Klasse „Support“ hat eine Hauptfunktion, und ein paar statischen Methoden, die kleinen Netzwerke erstellen, die Sie mit spielen können. Insbesondere implementiert ich das Drei-Knoten-burlar FreightTruck-Alarm-Netzwerk in neapolitanischen Buch gefunden, und meine Zahlen überprüfen. (Keine Zusagen darüber hinaus!)

Andere Tipps

Ich bin in einer ähnlichen Situation. Ich bin mit dem Buch „Pattern Recognition and Machine Learning“ von Christopher M. Bishop für eine theoretische Einführung, obwohl ich den Algorithmus verwenden, in einem anderen Kontext will. Das Kapitel über die „max-Produkt“ und „sum-Produkt“ beschreibt Belief Propagation, obwohl es sehr mathematisch ist.

Ich bin noch auf der Suche für ein kleines Zahlenbeispiel also, wenn Sie einen finden mich sehr interessieren würde.

der Zwischenzeit können Sie einen Blick auf libDAI , eine Open-Source Bibliothek, dass Geräte BP.

Ich bin ein Faktorgraph / Belief Propagation Algorithmus in Clojure Umsetzung, aber der Code ist noch nicht fertig. (Mein Code hebt auch Bayes-Netze von Propositionslogik erster Ordnung / Logik höherer Ordnung.)

Wie auch immer, würde Ich mag ein paar Tipps teilen:

  1. Beachten Sie zunächst, dass, obwohl Marginalisierung als Summe bezeichnet wird, dessen Eigenschaften aus Summierung unterschiedlich sind. Insbesondere pendelt sie mit Produkten von Wahrscheinlichkeitstabellen (als Potential bekannt). Deshalb in der mathematischen Ableitung, Summen und Produkte ausgetauscht werden können, während bei gewöhnlicher Arithmetik sie nicht können.

  2. Beachten Sie, dass in Pearl-Algorithmus, die Nachrichten, die vor- und nachgelagerten gehen sind anders - Wahrscheinlichkeiten gehen Upstream- und Downstream-Wahrscheinlichkeiten gehen. (Dies ist der Grund, warum Bayes-Regel bei der Ableitung von Belief Propagation funktioniert).

  3. Im Faktorgraph Algorithmus, Meldungen sind CPTs (bedingte Wahrscheinlichkeitstabellen) wie P (A | K). Die CPTs von P (A | K) und P (K | A) und P (A, K) enthalten im Wesentlichen die gleichen Informationen. Bei einem Endknoten, müssen wir als auch Bedingung des CPT über die entsprechenden Variablen marginalisieren. Dies scheint in den Mathematik-Notationen verdeckt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top