Wenn ich eine Monte-Carlo-Simulation für ein Problem programmiere und das Modell einfach genug ist, verwende ich ein sehr einfaches Gibbs-Sampling-Lehrbuch. Wenn es nicht möglich ist, Gibbs-Sampling zu verwenden, codiere ich das Lehrbuch Metropolis-Hastings, das ich vor Jahren gelernt habe. Der einzige Gedanke, den ich mir überlege, ist die Auswahl der Sprungverteilung oder ihrer Parameter.
Ich weiß, dass es Hunderte von spezialisierten Methoden gibt, die diese Lehrbuchoptionen übertreffen, aber ich denke normalerweise nie darüber nach, sie zu verwenden / zu lernen. Es fühlt sich normalerweise so an, als wäre es zu mühsam, etwas zu verbessern, was bereits sehr gut funktioniert.
Aber in letzter Zeit habe ich darüber nachgedacht, ob es vielleicht keine neuen allgemeinen Methoden gibt, die meine bisherigen Aktivitäten übertreffen können. Es ist viele Jahrzehnte her, dass diese Methoden entdeckt wurden. Vielleicht bin ich wirklich veraltet!
Gibt es bekannte Alternativen zu Metropolis-Hastings:
- ziemlich einfach zu implementieren,
- so universell einsetzbar wie MH,
- und die Ergebnisse von MH in gewissem Sinne immer verbessern (Rechenleistung, Genauigkeit usw.)?
Ich kenne einige sehr spezielle Verbesserungen für sehr spezielle Modelle, aber gibt es einige allgemeine Dinge, die jeder benutzt, die ich nicht kenne?
quelle
Antworten:
Ich bin kein Experte für diese Themen, aber ich dachte, ich würde sie trotzdem veröffentlichen, um zu sehen, was die Community davon hält. Korrekturen sind willkommen.
Eine zunehmend populäre Methode, deren Implementierung nicht so einfach ist, heißt Hamiltonian Monte Carlo (oder manchmal Hybrid Monte Carlo). Es verwendet ein physikalisches Modell mit potentieller und kinetischer Energie, um eine Kugel zu simulieren, die um den Parameterraum rollt, wie in diesem Artikel von Radford Neal beschrieben. Das physische Modell benötigt eine angemessene Menge an Rechenressourcen, sodass Sie in der Regel viel weniger Aktualisierungen erhalten, die Aktualisierungen jedoch in der Regel weniger korrelieren. HMC ist der Motor der neuen STAN- Software, die als effizientere und flexiblere Alternative zu BUGS oder JAGS für die statistische Modellierung entwickelt wird.
Es gibt auch eine ganze Reihe von Methoden, bei denen die Markov-Kette "aufgeheizt" wird. Sie können sich vorstellen, dass sie thermisches Rauschen in das Modell einführt und die Wahrscheinlichkeit erhöht, Zustände mit niedriger Wahrscheinlichkeit abzutasten. Auf den ersten Blick scheint dies eine schlechte Idee zu sein, da das Modell proportional zur posterioren Wahrscheinlichkeit abgetastet werden soll. Tatsächlich verwenden Sie jedoch nur die "heißen" Zustände, um die Kettenmischung zu verbessern. Die tatsächlichen Proben werden nur gesammelt, wenn sich die Kette auf ihrer "normalen" Temperatur befindet. Wenn Sie es richtig machen, können Sie die beheizten Ketten verwenden, um Modi zu finden, zu denen eine normale Kette aufgrund großer Täler mit geringer Wahrscheinlichkeit, die den Übergang von Modus zu Modus blockieren, nicht in der Lage wären. Einige Beispiele für diese Methoden sind Metropolis-gekoppeltes MCMC ,, paralleles Tempern und Probennahme geglühter Wichtigkeit .
Schließlich können Sie die sequenzielle Monte-Carlo- oder Partikelfilterung verwenden, wenn die Zurückweisungsrate so hoch wäre, dass alle diese anderen Methoden fehlschlagen würden. Ich kenne diese Methodenfamilie am wenigsten, daher ist meine Beschreibung hier möglicherweise falsch , aber ich verstehe, dass sie so funktioniert. Sie starten mit Ihrem bevorzugten Sampler, obwohl die Wahrscheinlichkeit einer Ablehnung im Wesentlichen eins ist. Anstatt alle Ihre Proben abzulehnen, wählen Sie die am wenigsten beanstandeten aus und initialisieren von dort aus neue Proben. Wiederholen Sie den Vorgang, bis Sie einige Proben gefunden haben, die Sie tatsächlich akzeptieren können. Dann gehen Sie zurück und korrigieren die Tatsache, dass Ihre Samples nicht zufällig waren, weil Sie Ihre Sampler nicht von zufälligen Orten aus initialisiert haben.
Hoffe das hilft.
quelle