Eine unbekannte Funktion optimieren, die nur ausgewertet werden kann?

11

Bei einer unbekannten Funktion können wir ihren Wert an jedem Punkt in ihrer Domäne bewerten, aber wir haben keinen Ausdruck. Mit anderen Worten, f ist für uns wie eine Black Box.f:RdRf

Wie heißt das Problem, den Minimierer von ? Welche Methoden gibt es da draußen?f

Wie heißt das Problem, die Lösung für die Gleichung ? Welche Methoden gibt es da draußen?f(x)=0

In den obigen zwei Problemen ist es eine gute Idee, einige Auswertungen von f zu interpolieren oder anzupassen: Verwendung einer Funktion g θ mit bekannter Form und bekanntem Parameter θ bestimmt werden und dann g θ minimieren oder seine Wurzel finden?(xi,f(xi)),i=1,,ngθθgθ

Danke und Grüße!

Tim
quelle
1
Können Sie den Gradienten an einem bestimmten Punkt bewerten?
Chaohuang
@chaohuang: Es gibt zwei Fälle: Sie können den Gradienten abhängig von den Annahmen bewerten oder nicht.
Tim
Wenn ein Gradient verfügbar ist, können die von Ihnen gestellten Aufgaben durch gradientenbasierte Algorithmen ausgeführt werden. Zum Beispiel kann das Minimum oder zumindest ein lokales Minimum durch die Methode des steilsten Abstiegs berechnet werden, und die Wurzeln können durch die Newtonsche Methode gefunden werden.
Chaohuang
Und wenn der Gradient unbekannt ist, gibt es metaheuristische Methoden , die auch als derivatfreie oder Black-Box-Methoden bezeichnet werden und normalerweise in Form einer stochastischen Optimierung vorliegen.
Chaohuang
2
Wissen Sie, ob die Funktion flüssig ist (auch wenn Sie den Gradienten nicht auswerten können)? Wissen Sie, ob die Funktion konvex ist? Wenn es nicht konvex ist, wissen Sie, ob es mindestens Lipschitz kontinuierlich ist oder nicht? Wenn die Funktion vollständig allgemein ist, ist dies ein hoffnungsloses Problem.
Brian Borchers

Antworten:

13

Die Methoden, nach denen Sie suchen, dh die nur Funktionsbewertungen, aber keine Ableitungen verwenden, werden als derivatfreie Optimierungsmethoden bezeichnet . Es gibt eine große Menge an Literatur darüber, und ein Kapitel über solche Methoden finden Sie in den meisten Büchern zur Optimierung. Typische Ansätze sind

  • Annäherung des Gradienten durch endliche Differenzen, wenn vernünftigerweise erwartet werden kann, dass die Funktion glatt und möglicherweise konvex ist;
  • Monte-Carlo-Methoden wie simuliertes Tempern;
  • Genetische Algorythmen.
Wolfgang Bangerth
quelle
1
Kann ich dieser Liste einfach "Ersatzmodellierung" hinzufügen? Sie eignen sich sehr gut für die Black-Box-Optimierung, insbesondere wenn die Bewertung der Funktion kostspielig ist.
OscarB
Ja, das kannst du :-) Auf jeden Fall eine tolle Ergänzung.
Wolfgang Bangerth
Man könnte auch die Nelder-Mead-Methode verwenden, wenn gute Schätzungen der Optima bekannt sind.
JM
Ja, Sie könnten Nelder-Mead verwenden, aber es ist ein schrecklicher Algorithmus im Vergleich zu den meisten anderen.
Wolfgang Bangerth
1
@ WolfgangBangerth: Dein Kommentar zu Nelder-Mead ist nur in Dimension d> 2 gültig. In zwei Dimensionen ist es bei vielen Problemen eine ausgezeichnete und sehr schwer zu schlagende Methode.
Arnold Neumaier
2

Ich denke, Sie sollten beginnen mit: GECCO-Workshop zum Real-Parameter-Black-Box-Optimierungs-Benchmarking (BBOB 2016) http://numbbo.github.io/workshops/index.html

Sie werden viele verschiedene Algorithmen finden, die in früheren Wettbewerben verwendet wurden und die auf einer gemeinsamen Basis verglichen wurden. Wenn Sie anderswo anfangen, werden Sie bald in den Hunderten von Artikeln ertrinken, in denen behauptet wird, dass ihre Methoden und Algorithmen eine bessere Leistung erbringen als andere, ohne dass tatsächlich Beweise für diese Behauptungen vorliegen.

Bis vor kurzem war es, um ehrlich zu sein, ein schändlicher Zustand und jede Macht für INRIA, GECCO und viele andere für die Bemühungen, die sie unternommen haben, um einen Rahmen für rationale Vergleiche zu schaffen.

Lysistrata
quelle
-1

Ich möchte nur hinzufügen, dass einer der Schlüssel hier darin besteht, die Optimierungsmethode auf Multicore-CPUs zu skalieren . Wenn Sie mehrere Funktionsauswertungen gleichzeitig durchführen können, erhalten Sie eine Beschleunigung, die einer Anzahl der beteiligten Kerne entspricht. Vergleichen Sie dies mit der Verwendung eines etwas genaueren Antwortmodells, wodurch Sie etwa 10% effizienter sind.

Ich würde empfehlen, sich diesen Code anzusehen . Er kann für Benutzer nützlich sein, die Zugriff auf viele Kerne haben. Eine Mathematik dahinter ist in diesem beschriebenen Papier .

Paul
quelle
1
Diese Antwort ist zu kurz, um nützlich zu sein (und nützlich zu bleiben, da Links jederzeit verschwinden können). Bitte erwähnen Sie auch, dass Sie der Autor dieser Software sind .
Christian Clason