Ich probiere Bayesian Optimization aus und folge Snoek, Larochelle und Adams [ http://arxiv.org/pdf/1206.2944.pdf] mit GPML [ http://www.gaussianprocess.org/gpml/code/matlab / doc /] . Ich habe die auf Seite 3 beschriebene Erfassungsfunktion für erwartete Verbesserungen implementiert und gehe davon aus, dass ich richtig bin. Um zu entscheiden, wo ich mein Ziel als nächstes abfragen soll, sollte ich das , das maximiert:
Aber ich kann anscheinend keine Anleitung finden, welche Gruppe von Kandidaten zu berücksichtigen ist. Theoretisch möchte ich das beste x über die gesamte Domäne finden, und das Papier ist so geschrieben, dass dies möglich erscheint ("[EI] hat auch nach dem Gaußschen Prozess eine geschlossene Form"). In der Praxis muss ich jedoch die posterioren Vorhersagemittel und Varianzen für jedes x ∗ berechnen, das ich in Betracht ziehen könnte, bevor ich ein E I ( x ∗ ) berechnen kann, und obwohl diese Posterioren eine geschlossene Form haben, muss ich sie dennoch mit berechnen Matrixalgebra, daher sehe ich keinen Weg, um ein paar x zu finden.
Die Frage: Was ist eine praktische Methode zur Auswahl des großen (mittleren? Kleinen?) Satzes von Kandidaten , über den ich den EI (oder eine andere Erfassungsfunktion) maximiere? (Ist das irgendwo in der Zeitung und ich habe es einfach verpasst?)
Im Moment nehme ich nur meinen aktuellen Satz , probiere ihn 2000 Mal durch Ersetzen aus und füge dann jedem Punkt etwas Gaußsches Rauschen hinzu. Scheint in Ordnung zu sein, denke ich.
quelle
Antworten:
Normalerweise verwenden Sie einen beliebigen globalen Optimierer. Das Problem ist, dass die EI-Oberfläche stark multimodal und nicht verbunden ist. Die Optimierung dieser Erfassungsfunktion ist an sich kein triviales Problem.
Eine häufige Wahl, die ich in verschiedenen Veröffentlichungen gesehen habe, ist der DIRECT- Algorithmus. Manchmal habe ich CMA-ES gesehen , eine Methode auf dem neuesten Stand der nichtlinearen Optimierung. Nach meiner Erfahrung für andere Formen der Optimierung funktioniert MCS ( Multi-Level Coordinate Search ) in der Regel relativ gut. Eine Übersicht über derivatfreie globale Optimierer finden Sie hier :
Übrigens ist die EI analytisch. Wenn Sie möchten, können Sie auch den Gradienten berechnen, um die Optimierung zu steuern. Dies ist jedoch nicht erforderlich. Eine effektive Technik ist es, einen globalen Optimierer lief ersten vielversprechende Lösungen zu finden und dann einen lokalen Optimierer führen Sie es zu verfeinern (zB ein Quasi-Newton - Verfahren wie BFGS, das ist fminunc in MATLAB oder fmincon wenn Sie Einschränkungen haben).
Wenn schließlich die Geschwindigkeit der Optimierung der Erfassungsfunktion ein Faktor ist (was nicht das "traditionelle" BO-Szenario ist), habe ich anständige Ergebnisse gefunden, indem ich mit einem lateinischen Hypercube-Design oder einem quasi zufälligen Sobol-Sequenzdesign begonnen und dann mit verfeinert habe ein paar Schritte eines lokalen Optimierers von den besten Punkten; Siehe auch @ user777 Kommentar. Da dies nicht das Standard-BO-Szenario ist, habe ich keine spezifische Referenz, die diese Methode tatsächlich verwendet.
Beispiele für Artikel, die sich auf DIRECT oder CMA-ES beziehen:
Sie können einfach "Bayesianische Optimierung" + den gewünschten globalen Optimierungsalgorithmus googeln und finden eine Reihe von Artikeln. Außerdem finden Sie in so ziemlich jedem anderen Artikel über BO einen Satz wie :
quelle