Gradientenabstieg und viele andere Methoden sind nützlich, um lokale Minima in Kostenfunktionen zu finden. Sie können effizient sein, wenn die Kostenfunktion an jedem Punkt schnell ausgewertet werden kann, sei es numerisch oder analytisch.
Ich habe eine für mich ungewöhnliche Situation. Jede Bewertung meiner Kostenfunktion ist teuer. Ich versuche, eine Reihe von Parametern zu finden, die eine 3D-Oberfläche gegenüber Bodenwahrheitsoberflächen minimieren. Immer wenn ich einen Parameter ändere, muss ich den Algorithmus für die gesamte Stichprobengruppe ausführen, um dessen Wirkung zu messen. Um einen Gradienten zu berechnen, muss ich alle 15 Parameter unabhängig voneinander ändern, das heißt, ich muss alle Oberflächen regenerieren und mit der Probenkohorte viel zu oft pro Gradient und definitiv viel zu oft im Verlauf der Optimierung vergleichen.
Ich habe eine Methode entwickelt, um dieses Problem zu umgehen, und bewerte sie derzeit. Ich bin jedoch überrascht, dass ich in der Literatur nicht viel über teure Kostenfunktionsbewertungen gefunden habe. Daher frage ich mich, ob ich das Problem schwieriger mache als es ist und ob es möglicherweise bereits einen besseren Weg gibt.
Meine Fragen lauten also im Grunde: Kennt jemand Methoden zur Optimierung von Kostenfunktionen, konvex oder nicht, wenn die Auswertung langsam ist? Oder mache ich überhaupt etwas Dummes, indem ich den Algorithmus erneut ausführe und so oft mit der Stichproben-Kohorte vergleiche?
quelle
Antworten:
TL; DR
Ich empfehle die Verwendung von LIPO. Es ist nachweislich korrekt und nachweislich besser als die reine Zufallssuche (PRS). Es ist auch extrem einfach zu implementieren und weist keine Hyperparameter auf. Ich habe keine Analyse durchgeführt, die LIPO mit BO vergleicht, aber ich gehe davon aus, dass die Einfachheit und Effizienz von LIPO impliziert, dass es BO übertrifft.
(Siehe auch: Was sind einige der Nachteile der bayesianischen Hyperparameteroptimierung? )
Bayesianische Optimierung
Bayes'sche Optimierungsmethoden bauen Ersatzmodelle für Gauß'sche Prozesse auf, um den Parameterraum zu untersuchen. Die Hauptidee ist, dass näher beieinander liegende Parametertupel ähnliche Funktionswerte haben. Die Annahme einer Ko-Varianz-Struktur zwischen Punkten ermöglicht es dem Algorithmus, fundierte Vermutungen darüber anzustellen, welches beste Parametertupel als Nächstes am sinnvollsten ist. Diese Strategie trägt dazu bei, die Anzahl der Funktionsbewertungen zu verringern. Tatsächlich besteht die Motivation der BO-Methoden darin, die Anzahl der Funktionsbewertungen so gering wie möglich zu halten, während "der ganze Büffel" verwendet wird, um gute Vorhersagen darüber zu treffen, welcher Punkt als nächstes zu testen ist. Es gibt verschiedene Leistungszahlen (erwartete Verbesserung, erwartete Quantilverbesserung, Verbesserungswahrscheinlichkeit ...), die verwendet werden, um die Punkte zu vergleichen, die als nächstes besucht werden sollen.
Vergleichen Sie dies mit einer Grid-Suche, bei der niemals Informationen aus früheren Funktionsauswertungen verwendet werden, um Informationen darüber zu erhalten, wohin Sie als Nächstes gehen müssen.
Dies ist im Übrigen auch eine leistungsstarke globale Optimierungstechnik, die keine Annahmen über die Konvexität der Oberfläche macht. Wenn die Funktion stochastisch ist (z. B. Auswertungen haben inhärent zufälliges Rauschen), kann dies direkt im GP-Modell berücksichtigt werden.
Auf der anderen Seite müssen Sie bei jeder Iteration mindestens einen GP anpassen (oder mehrere, die "besten" auswählen oder über Alternativen oder vollständig Bayes'sche Methoden mitteln). Das Modell wird dann verwendet, um (wahrscheinlich Tausende) Vorhersagen zu treffen, normalerweise in Form einer mehrstufigen lokalen Optimierung, mit der Beobachtung, dass es viel billiger ist, die GP-Vorhersagefunktion zu bewerten als die Funktion, die optimiert wird. Aber selbst bei diesem Rechenaufwand kann es vorkommen, dass auch nicht konvexe Funktionen mit einer relativ geringen Anzahl von Funktionsaufrufen optimiert werden können.
Ein häufig zitierter Artikel zu diesem Thema ist Jones et al. , "Efficient Global Optimization of Expensive Black-Box Functions". Es gibt jedoch viele Variationen dieser Idee.
Zufällige Suche
Da Sie eine Wahrscheinlichkeitsgarantie dafür haben, wie gut die Ergebnisse sind, kann dies ein überzeugendes Instrument sein, um Ihren Chef davon zu überzeugen, dass keine weiteren Experimente durchgeführt werden müssen.
LIPO und seine Varianten
Dies ist eine aufregende Ankunft, die für mich sicherlich neu ist, wenn sie nicht neu ist. Dabei werden abwechselnd informierte Grenzen für die Funktion und Abtastwerte für die beste Grenze sowie quadratische Näherungen verwendet. Ich arbeite immer noch an allen Details, aber ich denke, das ist sehr vielversprechend. Dies ist eine schöne Blog-Zusammenfassung , und der Artikel ist Cédric Malherbe und Nicolas Vayatis " Globale Optimierung von Lipschitz-Funktionen ".
quelle
Ich würde sagen, dass der aktuelle Goldstandard für die Bewertung der (sehr) kostspieligen Black-Box-Funktion die (globale) Bayes'sche Optimierung (BO) ist. Sycorax hat bereits einige Funktionen von BO beschrieben, daher füge ich nur einige nützliche Informationen hinzu.
Als Ausgangspunkt können Sie dieses Übersichtsdokument 1 lesen . Es gibt auch eine neuere [2].
Die Bayes'sche Optimierung hat in den letzten Jahren mit einer Reihe von Workshops (z. B. BayesOpt , und sehen Sie sich diese Videos aus dem Sheffield-Workshop zu BO an) stetig zugenommen , da sie sehr praktische Anwendungen im maschinellen Lernen hat, wie z Informationen zur Optimierung der Hyperparameter von ML-Algorithmen finden Sie beispielsweise in diesem Artikel [3] und in der zugehörigen Toolbox SpearMint . Es gibt viele andere Pakete in verschiedenen Sprachen, die verschiedene Arten von Bayes-Optimierungsalgorithmen implementieren.
Wie bereits erwähnt, ist die zugrunde liegende Anforderung, dass jede Funktionsbewertung sehr kostspielig ist, so dass die BO-bezogenen Berechnungen einen vernachlässigbaren Mehraufwand verursachen. Um einen Ballpark zu erstellen, kann BO definitiv hilfreich sein, wenn Ihre Funktion in einer Zeitspanne von Minuten oder mehr ausgewertet wird. Sie können es auch für schnellere Berechnungen anwenden (z. B. Zehntelsekunden). Je nachdem, welchen Algorithmus Sie verwenden, müssen Sie jedoch möglicherweise verschiedene Näherungen anwenden. Wenn Ihre Funktion in der Zeitskala von Sekunden ausgewertet wird , stoßen Sie meiner Meinung nach an die Grenzen der aktuellen Forschung, und möglicherweise werden andere Methoden nützlicher. Außerdem muß ich sagen, BO selten wirklich Black-Box ist , und Sie müssen oft die Algorithmen optimieren, manchmal viel , um es mit einem bestimmten realen Problem bei vollem Potenzial zu arbeiten.
Nebenbei bemerkt, für eine Übersicht über allgemeine ableitungsfreie Optimierungsmethoden können Sie sich diese Übersicht ansehen [4] und nach Algorithmen suchen , die gute Eigenschaften für eine schnelle Konvergenz aufweisen. Beispielsweise konvergiert die mehrstufige Koordinatensuche (Multi-Level Coordinate Search, MCS) normalerweise sehr schnell in eine Nachbarschaft von einem Minimum (natürlich nicht immer das globale Minimum). MCS ist für die globale Optimierung gedacht. Sie können es jedoch lokal festlegen, indem Sie entsprechende gebundene Einschränkungen festlegen.
Schließlich interessieren Sie sich für BO für Zielfunktionen, die sowohl teuer als auch laut sind. Siehe meine Antwort auf diese Frage .
Verweise:
1 Brochu et al., "Ein Tutorial zur Bayes'schen Optimierung teurer Kostenfunktionen mit Anwendung auf aktives Benutzermodellieren und hierarchisches Reinforcement-Lernen" (2010).
[2] Shahriari et al., "Den Menschen aus der Schleife nehmen: Ein Rückblick auf die Bayes'sche Optimierung" (2015).
[3] Snoek et al., "Praktische Bayes'sche Optimierung maschineller Lernalgorithmen", NIPS (2012).
[4] Rios und Sahinidis, "Derivatfreie Optimierung: Überprüfung von Algorithmen und Vergleich von Softwareimplementierungen", Journal of Global Optimization (2013).
quelle
Ich kenne die Algorithmen selbst nicht, aber ich glaube, die Art von Optimierungsalgorithmus, nach der Sie suchen, ist die ableitungsfreie Optimierung , die verwendet wird, wenn das Objektiv teuer oder verrauscht ist .
Schauen Sie sich zum Beispiel diesen Artikel an (Björkman, M. & Holmström, K. "Globale Optimierung kostspieliger nichtkonvexer Funktionen mithilfe radialer Basisfunktionen", Optimierung und Konstruktion (2000) 1: 373. doi: 10.1023 / A: 1011584207202). Wessen Zusammenfassung scheint darauf hinzudeuten, dass dies genau das ist, was Sie wollen:
quelle
Du bist nicht allein.
Teuer zu evaluierende Systeme sind im Ingenieurwesen weit verbreitet, beispielsweise FEM-Modelle (Finite-Elemente-Methode) und CFD-Modelle (Computational Fluid Dynamics). Die Optimierung dieser rechenintensiven Modelle ist sehr notwendig und eine Herausforderung, da bei Evolutionsalgorithmen oftmals Zehntausende von Evaluierungen des Problems erforderlich sind, was keine Option für Probleme ist, deren Bewertung teuer ist. Glücklicherweise gibt es viele Methoden (Algorithmen), um dieses Problem zu lösen. Soweit ich weiß, basieren die meisten von ihnen auf Ersatzmodellen (Metamodellen). Einige sind unten aufgeführt.
Im Sommer versuchen diese auf Surrogaten basierenden Optimierungsalgorithmen, das globale Optimum des Problems mit möglichst wenigen Auswertungen zu finden. Dies wird erreicht, indem die Informationen, die der Stellvertreter (die Stellvertreter) liefert, vollständig genutzt werden. Übersichten zur Optimierung rechenintensiver Probleme finden sich in [4-6].
Referenz:
quelle
Die zwei einfachen Strategien, die ich in der Vergangenheit erfolgreich angewendet habe, sind:
Diese Strategien sind sehr fallspezifisch. Ich weiß nicht, ob sie in Ihrem Fall anwendbar sind oder nicht. Tut mir leid, wenn nicht. Beides könnte zutreffen (wie in meinen Anwendungsfällen): Wenden Sie die "Delta-Cost" -Strategie auf ein einfacheres Analysemodell an - die Leistung kann sich um mehrere Größenordnungen verbessern.
Eine andere Strategie wäre die Verwendung einer Methode zweiter Ordnung, die normalerweise die Anzahl der Iterationen verringert (aber jede Iteration ist komplexer) - z. B. der Levenberg-Marquardt-Algorithmus . Da Sie jedoch keine Möglichkeit zu haben scheinen, den Gradienten direkt und effizient zu bewerten, ist dies in diesem Fall wahrscheinlich keine praktikable Option.
quelle
Wie bereits erwähnt, ist ein Ersatzmodell (auch als Antwortfläche bezeichnet) ein leistungsfähiger Ansatz. Entscheidend ist meines Erachtens, dass bei Verwendung von Multicore-CPUs mehrere Funktionsauswertungen parallel durchgeführt werden können.
Ich würde vorschlagen , dass Sie sich diesen Code ansehen. Er verwendet ein einfaches Antwortmodell, skaliert jedoch auf Multicore-CPUs, was zu einer Beschleunigung führt, die der Anzahl der verwendeten Kerne entspricht. Mathematik hinter dem Verfahren in diesem beschriebenen Papier .
quelle
Beim stochastischen Gradientenabstieg gibt es viele Tricks, die auch auf die objektive Funktionsbewertung angewendet werden können. Die Gesamtidee besteht darin, die Zielfunktion unter Verwendung einer Teilmenge von Daten zu approximieren .
Meine Antworten in diesen beiden Beiträgen beschreiben, warum der stochastische Gradientenabstieg funktioniert: Die Intuition dahinter besteht darin, den Gradienten mithilfe einer Teilmenge von Daten zu approximieren.
Wie kann der stochastische Gradientenabstieg im Vergleich zum normalen Gradientenabstieg Zeit sparen?
Wie wird eine parallele / verteilte lineare Regression für die Big Data-Einstellung ausgeführt?
Der gleiche Trick gilt für die Zielfunktion.
quelle