Parallele Optimierungsalgorithmen für ein Problem mit sehr teurer Objektivfunktion

15

Ich optimiere eine Funktion von 10-20 Variablen. Die schlechte Nachricht ist, dass jede Funktionsbewertung teuer ist, etwa 30 Minuten serielle Berechnung. Die gute Nachricht ist, dass mir ein Cluster mit ein paar Dutzend Rechenknoten zur Verfügung steht.

Daher die Frage: Gibt es Optimierungsalgorithmen, mit denen ich die gesamte Rechenleistung effizient nutzen kann?

Auf einer Seite des Spektrums wäre eine erschöpfende Suche: Unterteilen Sie den gesamten Suchraum in ein feines Gitter und berechnen Sie die Funktion an jedem Gitterpunkt unabhängig. Dies ist sicherlich eine sehr parallele Berechnung, aber der Algorithmus ist schrecklich ineffizient.

Auf der anderen Seite des Spektrums befinden sich Quasi-Newton-Algorithmen: Aktualisieren Sie intelligent die nächste Schätzung der Parameter basierend auf der Vorgeschichte. Dies ist ein effizienter Algorithmus, aber ich weiß nicht, wie ich ihn parallelisieren soll: Das Konzept der "Schätzung der Parameter basierend auf der Vorgeschichte" klingt wie eine serielle Berechnung.

Quadratische Algorithmen scheinen irgendwo in der Mitte zu liegen: Man kann das anfängliche "Ersatzmodell" aufbauen, indem man eine Reihe von Werten parallel berechnet, aber ich weiß nicht, ob die verbleibenden Iterationen parallelisierbar sind.

Irgendwelche Vorschläge, welche gradientenfreien Optimierungsmethoden in einem Cluster gut funktionieren würden? Gibt es auch parallele Implementierungen von Optimierungsalgorithmen, die derzeit verfügbar sind?

Michael
quelle
1
Sie können den Gradienten immer parallel berechnen (für Quasi-Newton-Methoden mit endlichen Differenzen) und eine Beschleunigung erhalten, die proportional zur Anzahl der Parameter ist, dh 10x-20x.
Stali
@stali: Du brauchst das Hessische für Quasi-Newton-Methoden bei der Optimierung. Eine Berechnung des Hessischen über endliche Differenzen von Funktionsbewertungen ist wirklich keine gute Idee. Die Berechnung von Näherungen der finiten Differenzen des Gradienten für die Optimierung ist ebenfalls im Allgemeinen keine gute Idee.
Geoff Oxberry
Viele Quasi-Newton-Methoden wie BFGS benötigen das Hessische nicht explizit. Ich denke, durch die Verwendung von Farbverläufen in Kombination mit L-BFGS kann der OP schnell erreichen, was er will.
Stali
@stali: Ich wies darauf hin, warum die Verwendung einer Näherung mit endlichen Differenzen an den Gradienten in meiner Antwort eine schlechte Idee wäre. Es wird die Konvergenz verschlechtern, indem Fehler in die rechte Seite der Quasi-Newton-Iteration eingefügt werden. Außerdem werden Funktionsbewertungen verschwendet, da es keine Möglichkeit gibt, alte Bewertungen wiederzuverwenden (im Gegensatz zu Ersatzmethoden). Die Verwendung von BFGS behebt nur die Hälfte der Probleme mit Ihrem vorgeschlagenen Ansatz.
Geoff Oxberry
Dies ist zweckmäßigerweise ein Kommentar, keine Antwort. Aber ich habe keine Wahl, da ich nicht genug Repräsentanten habe, um einen Kommentar zu schreiben. Michael, ich habe eine sehr ähnliche Art von Problem: teure Funktionsauswertungen, die komplexe Simulationen beinhalten, die in einem Cluster ausgeführt werden. Haben Sie jemals einen Code gefunden, der für die Ausführung der Optimierung geeignet ist, wenn die Funktionsbewertung eine Simulation in einem Cluster umfasst?
MoonMan

Antworten:

16

Wie Paulus feststellt, ist es ohne weitere Informationen schwierig, ohne Annahmen Ratschläge zu erteilen.

Bei 10-20 Variablen und teuren Funktionsauswertungen werden tendenziell ableitungsfreie Optimierungsalgorithmen empfohlen. Ich werde dem Rat von Paul stark widersprechen: Sie benötigen im Allgemeinen einen maschinengenauen Gradienten, es sei denn, Sie wenden eine spezielle Methode an (zum Beispiel wird die stochastische Gradientenabnahme beim maschinellen Lernen die Form des Ziels ausnutzen, vernünftig zu sein Gradientenschätzungen).

Jeder Quasi-Newton-Schritt hat die Form:

H~(xk)dk=-f(xk),

wo eine Annäherung an die Hessische Matrix ist,dkdie Suchrichtung ist,xkder Wert der Entscheidungsvariablen bei der aktuellen Iteration ist,fIhre Zielfunktion ist undfder Gradient Ihres Ziels ist und Entscheidungsvariablen werden wiefolgtaktualisiert:xk+1=xk+αkdk, wobeiαkH~dkxkffxk+1=xk+αkdkαkist eine in gewisser Weise festgelegte Schrittweite (wie eine Liniensuche). Sie kommen auf bestimmte Weise mit der Approximation des Hessischen durch und Ihre Iterationen werden konvergieren. Wenn Sie jedoch so etwas wie endliche Differenzenapproximationen des Hessischen durch exakte Gradienten verwenden, können Sie unter Problemen leiden, die auf mangelnde Konditionierung zurückzuführen sind. Typischerweise wird das Hessische mithilfe des Gradienten approximiert (z. B. BFGS-Typ-Methoden mit Rang-1-Aktualisierungen des Hessischen).

Die Annäherung des Hessischen und des Gradienten über endliche Differenzen ist aus mehreren Gründen eine schlechte Idee:

  • Da der Gradient fehlerhaft sein wird, entspricht die angewendete Quasi-Newton-Methode dem Auffinden der Wurzel einer verrauschten Funktion
  • Wenn Funktionsauswertungen teuer sind und Sie versuchen, einen Gradienten in Bezug auf Variablen auszuwerten , werden Sie N Funktionsauswertungen pro Iteration kostenNN
  • Wenn Sie Fehler in der Steigung haben, werden Sie mehr Fehler in Ihrem Hessischen haben, was ein großes Problem in Bezug auf die Konditionierung des linearen Systems darstellt
  • ... und es kostet Sie Funktionsbewertungen pro IterationN2

Um also eine schlechte Iteration von Quasi-Newton zu erhalten, führen Sie bis zu 420 Funktionsbewertungen mit 30 Minuten pro Bewertung durch, was bedeutet, dass Sie entweder eine Weile auf jede Iteration warten müssen oder brauchen einen großen Cluster nur für die Funktionsauswertung. Die tatsächlichen linearen Lösungen werden (höchstens!) 20 mal 20 Matrizen haben, daher gibt es keinen Grund, diese zu parallelisieren. Wenn Sie Verlaufsinformationen erhalten können, indem Sie beispielsweise ein benachbartes Problem lösen, ist dies möglicherweise sinnvoller. In diesem Fall lohnt es sich möglicherweise, ein Buch wie Nocedal & Wright zu lesen.

Wenn Sie eine Vielzahl von Funktionsbewertungen parallel durchführen möchten, sollten Sie sich stattdessen mit Ersatzmodellierungsansätzen oder Methoden zur Generierung von Mengenrecherchen befassen, bevor Sie Quasi-Newton-Ansätze in Betracht ziehen. Die klassischen Übersichtsartikel sind die von Rios und Sahinidis zu derivatfreien Methoden , die 2012 veröffentlicht wurden und einen wirklich guten und umfassenden Vergleich liefern. der Benchmarking-Artikel von More and Wild aus dem Jahr 2009; das Lehrbuch 2009 "Introduction to Derivative-Free Optimization" von Conn, Scheinberg und Vicente; und der Übersichtsartikel über Suchmethoden für Generierungsmengen von Kolda, Lewis und Torczon aus dem Jahr 2003.

Wie bereits erwähnt, implementiert das DAKOTA-Softwarepaket einige dieser Methoden, ebenso wie NLOPT , das DIRECT implementiert, und einige der Ersatzmodellierungsmethoden von Powell. Vielleicht haben Sie auch einen Blick auf nehmen MCS ; Es ist in MATLAB geschrieben, aber vielleicht können Sie die MATLAB-Implementierung auf die Sprache Ihrer Wahl portieren. DAKOTA besteht im Wesentlichen aus einer Sammlung von Skripten, mit denen Sie Ihre teure Simulation ausführen und Daten für Optimierungsalgorithmen sammeln können. NLOPT verfügt über Schnittstellen in einer großen Anzahl von Sprachen. Das Erlernen von DAKOTA nimmt jedoch einige Zeit in Anspruch und es ist eine Menge Dokumentation zu lesen.

Geoff Oxberry
quelle
2
Es ist mir eine Freude, völlig falsch zu liegen und dabei etwas Neues und Nützliches zu lernen :).
Paul
Vielen Dank! Noch eine Klarstellung: Welche dieser Algorithmen sind in der Lage, Funktionsbewertungen parallel durchzuführen? Zum Beispiel auf einem k-Wege-Gitter, das Iterationen n + 1, ..., n + k ausführt, die nur auf Informationen basieren, die aus Iterationen 1, ..., n gewonnen wurden?
Michael
k
3

Vielleicht suchen Sie nach Algorithmen, die auf Ersatzzeichen basieren. Diese Algorithmen verwenden Ersatzmodelle, um die reellen rechenintensiven Modelle während des Optimierungsprozesses zu ersetzen, und versuchen, eine geeignete Lösung zu erhalten, indem so wenig Auswertungen der rechenintensiven Modelle wie möglich verwendet werden.

Ich denke, dass die Methode "Mode Pursuing Sampling" verwendet werden kann, um Ihr Problem zu lösen. Dieser Algorithmus verwendet das RBF-Ersatzmodell, um die teure Zielfunktion zu approximieren, und kann nichtlineare Einschränkungen verarbeiten. Noch wichtiger ist, dass mehrere Kandidaten für die teuren Funktionsbewertungen ausgewählt werden, sodass Sie diese Kandidaten für die parallele Berechnung verteilen können, um den Suchprozess weiter zu beschleunigen. Der Code ist Open Source und in MATLAB geschrieben.

Referenz

Wang, L., Shan, S. & Wang, GG (2004). Modusverfolgende Abtastmethode zur globalen Optimierung teurer Black-Box-Funktionen. Engineering Optimization, 36 (4), 419 & ndash; 438.

Zhan Dawei
quelle
2

Ich bin nicht sicher, ob ein paralleler Algorithmus wirklich das ist, wonach Sie suchen. Es sind Ihre Funktionsbewertungen, die sehr kostspielig sind. Sie möchten die Funktion selbst parallelisieren, nicht unbedingt den Optimierungsalgorithmus.

Wenn Sie das nicht können, dann gibt es einen Mittelweg zwischen erschöpfender Suche und Newton-Algorithmus, es sind Monte-Carlo-Methoden. Sie können auf einer Reihe von verschiedenen Kernen / Knoten denselben Algorithmus starten, der für lokale Optima anfällig ist (Quasi-Newton-Algorithmen), aber alle mit zufälligen Anfangsbedingungen. Ihre beste Vermutung für das wahre Optimum ist das Minimum der Minima. Dies ist trivial zu parallelisieren und kann verwendet werden, um jede Methode zu erweitern. Obwohl es nicht perfekt effizient ist, kann es bei ausreichender Rechenleistung die Programmierproduktivität gegenüber der Algorithmusleistung entscheidend verbessern (wenn Sie über viel Rechenleistung verfügen, kann dies beendet werden, bevor Sie jemals einen schickeren Algorithmus fertiggestellt haben).

Chris Rackauckas
quelle
0

Die Wahl des Optimierungsalgorithmus (und damit seiner Parallelisierung) hängt stark von den Eigenschaften der Zielfunktion und den Randbedingungen ab. Ohne mehr über das Problem zu wissen, ist es schwierig, sinnvolle Ratschläge zu geben.

Aber aus Ihren Überlegungen zu Newton-Methoden schließe ich, dass Ihre objektive Funktion differenzierbar ist. Wenn möglich, würde Ihr Problem von einer Parallelisierung der Funktionsbewertung stark profitieren. Wenn dies nicht möglich ist, können Sie auch eine ungenaue Newton-Methode in Betracht ziehen, bei der die exakten Gradienten / Hessischen durch Näherungen mit endlichen Differenzen ersetzt werden. Anschließend können Sie alle Ihnen zur Verfügung stehenden Prozessoren verwenden, um jedes Nicht-Null-Element des jacobian zu berechnen, wie @stali vorschlägt.

Weitere Informationen finden Sie in Kapitel 7, Numerische Optimierung von Nocedal & Wright . Es gibt viele Optimierungssoftwarepakete, die dies parallel implementieren. Zu den am weitesten verbreiteten Freeware- Programmen gehört das DAKOTA-Softwarepaket (Sandia National Labs) .

Paul
quelle
5
Dieser Ansatz ist wirklich keine gute Idee, es sei denn, Sie verfügen über maschinengenaue Gradienten (analytisch, durch zugehörige Berechnungen, durch eine Art Vorwärtssensitivitätsanalyse). Es würde eine große Anzahl von Simulationen pro hessischer Auswertung erfordern, und Sie sollten diese Funktionsauswertungen besser verwenden, um ein Ersatzmodell zu erstellen (z. B. BOBYQA; ORBIT könnte ein Ersatzmodell in Funktionsauswertungen unter Verwendung von Radial erstellen Basisfunktionen). N
Geoff Oxberry
-2

Hier ist eine Lösung für Ihr Problem.

Beschreibung eines mathematischen Verfahren wird in diesem vorgesehenen Papier .

Paul
quelle
3
Willkommen bei SciComp.SE. Können Sie Details zu dem in dem Artikel beschriebenen und in der Software implementierten Ansatz angeben? Welche Methode wird angewendet? Warum ist es gut? Was ist in diesem Ansatz vorgesehen, das die anderen Antworten nicht abdecken?
nicoguaro
2
Es scheint auch, dass dies Ihre eigene Arbeit ist. Wenn dies zutrifft, geben Sie dies bitte ausdrücklich in Ihrer Antwort an.
Nicoguaro
@nicoguaro: Danke, aber ich weiß, wie man auf Links klickt.
Michael
2
@Michael, es ist nichts für dich. Die Philosophie dieser Website ist es, eine Sammlung von Antworten zu sein. Sie erhalten Ihre Antwort heute, aber in Zukunft kann jemand anderes die gleiche Hilfe benötigen. Deshalb gibt es de facto Maßstäbe dafür, was eine gute Antwort ist.
nicoguaro