Was genau ist ein „Löser“ in der Optimierung?


8

Ich bin wirklich verwirrt über die Verwendung von Solver bei der Computeroptimierung. Ich habe mich einen Monat lang umgesehen, um zu sehen, ob ich ein gutes Gefühl dafür bekommen kann, was dieser Begriff bedeutet, aber ich habe immer noch kein gutes Verständnis dafür.

Es scheint, dass ich, wenn ich ein Optimierungsproblem beim maschinellen Lernen oder anderswo lösen möchte, das genaue Berechnungsverfahren als Algorithmus anstatt als Löser bezeichnen würde. Wenn ich beispielsweise ein quadratisches Programm hätte, würde ich die Quadprog-Funktion von MATLAB verwenden, um den QP zu lösen.

Ich persönlich würde die Quadprog-Funktion nicht als QP-Solver bezeichnen, da es sich nur um eine MATLAB-Funktion oder ein Skript handelt. Ich würde den genauen Algorithmus hinter Quadprog nicht als QP-Löser bezeichnen. Es ist mir egal, ob es sich um Gradientenabstieg, Innenpunktmethode, Newton Raphson handelt. Für mich sind das alles Algorithmen. Schließlich würde ich MATLAB nicht als QP-Löser bezeichnen, da dies nicht der einzige Zweck von MATLAB ist. Es scheint also, dass das Wort "Löser" in meinem alltäglichen Wortschatz fehlt, obwohl ich routinemäßig mit Optimierung arbeiten muss. Das verwirrt mich ziemlich, es fühlt sich einfach so an, als wäre ich mit dem Jargon nicht auf dem neuesten Stand.

Nach meiner Überlegung sind Algorithmen und MATLAB also keine Löser. Angenommen, ich habe einige Software wie Gurobi oder YALMIP heruntergeladen, um Optimierungsprobleme zu lösen. Werden diese Software als Löser bezeichnet? Ich habe oft gehört, dass Leute darauf verweisen, welchen "Löser" Sie verwenden, und zwar in demselben Ton wie welche "Software" Sie verwenden. Was unterscheidet Optimierungssoftware und -löser?

Ich weiß, das klingt nach einer wirklich rudimentären Frage, aber ich habe nur in MATLAB optimiert.


Ich habe unter "Löser" einen Optimierer für Probleme mit einzigartigen Lösungen verstanden, aber vielleicht bin ich falsch informiert.
Sycorax sagt Reinstate Monica

Im Allgemeinen ist ein Löser für die Optimierung ähnlich wie ein Motor für das Fahren. Ich würde Gurobi einen Löser nennen, es ist wie ein Motor. MATLAB ist wie eine Automarke, es ist der Name für die gesamte Umgebung.
Matthew Gunn

Normalerweise höre ich "Solver", der zur Beschreibung von Software verwendet wird , was bedeutet, dass er für die Implementierung eines Algorithmus gilt. Im Allgemeinen wird der Begriff für mathematische Probleme mit einer "genau definierten Lösung" reserviert. Eine einzigartige Lösung ist ausreichend, wie @Sycorax sagt, und die Gurobi- Löser scheinen für Probleme in dieser Klasse zu sein. Ich denke jedoch nicht, dass eine eindeutige Lösung erforderlich ist. Beispielsweise können sowohl lokale als auch globale Optimierungsprobleme klar definierte, aber nicht eindeutige Lösungen haben.
GeoMatt22

Antworten:


4

Ich schlage vor, ein Löser ist:

  • ein Softwarepaket
  • das beinhaltet einen oder mehrere Algorithmen
  • um Lösungen für eine oder mehrere Problemklassen zu finden

Die Problemklassen sind Teil davon. Es ist ein X-Löser.

Damit

  • Ich würde Gurobi "einen MIP / LP-Löser" nennen .
  • Und ich würde sagen "Matlab enthält einen QP-Solver, den es über die Quadprog-Funktion verfügbar macht." In diesem Fall kann der tatsächliche "QP-Löser" als eigenständiges Produkt existieren oder nicht.
  • Concorde ist ein TSP-Löser
  • Concorde enthält QSopt, einen LP-Löser

Ich denke, diese Verwendung entspricht (zum Beispiel) der JuMP-Dokumentation

JuMP ist eine domänenspezifische Modellierungssprache für die mathematische Optimierung, die in Julia eingebettet ist. Derzeit werden eine Reihe von Open-Source- und kommerziellen Lösern (siehe unten) für eine Vielzahl von Problemklassen unterstützt, darunter lineare Programmierung, gemischte Ganzzahlprogrammierung, konische Programmierung zweiter Ordnung, semidefinite Programmierung und nichtlineare Programmierung.

Hier ist eine Liste von Dingen, die JuMP als Löser bezeichnet . Keiner von ihnen ist ein Algorithmus, alle sind spezifische Programme


5

Ein Löser ist eine Routine zum Finden genauer numerischer Antworten für bestimmte Systeme. Zum Beispiel, wenn Sie Newton-Raphson verwenden , um Wurzeln zu finden. Wenn ein System überbestimmt ist, verwendet man im Allgemeinen Näherungslösungen, zum Beispiel Regression. Man würde Regression im Allgemeinen nicht als Löser bezeichnen, obwohl vorhersehbar Sprache missbraucht werden kann und viele Routinen, die ungefähr sind, lose als Löser bezeichnet werden . Zum Beispiel enthält das CUTEr- Optimierungssoftwarepaket Algorithmen, von denen mindestens einige für überbestimmte Systeme und einige Löser sind, so dass es leicht zu sagen ist, dass ich einen "Löser" herunterlade. Sowohl Löser als auch Regressionsmethoden sind Beispiele für Optimierungsmethoden.


Warum muss das System bestimmt werden? Kann es nicht unterbestimmt sein? Z.B. Wenn Sie fast jede lineare Systemlösungsroutine für aufrufen, wird eine Lösung zurückgegeben. x+y=1
Matthew Gunn

@MatthewGunn Vielleicht, aber für könnte man einen Zufallszahlengenerator verwenden, da jedes zufällige ein erzeugt . Jetzt könnte man einen Zufallszahlengenerator als "Löser" bezeichnen. Ich denke jedoch, Sie würden zugeben, dass es eine Strecke ist, dies zu tun. Normalerweise würde ein Löser mit Zufallszahlen etwas Organischeres tun, wenn er sie überhaupt verwendet. x+y=1xy
Carl

2
Ein Löser gibt eine Lösung. Wenn das Problem "LÖSEN " ist, dann ist eine Lösung und es kann diese Lösung (oder eine andere Lösung) zurückgeben! Anders ausgedrückt: Ist Python kein linearer Systemlöser, weil es unbestimmte Systeme lösen kann? x+y=1x=1,y=0lstsq
Matthew Gunn

@MatthewGunn Außerdem können iterative Regressionsmethoden programmiert werden, um bestimmte Systeme zu lösen. Dies würde sie jedoch nicht zu Lösern machen, da sie hauptsächlich für überbestimmte Systeme verwendet werden.
Carl

1
Ja, ich bin damit einverstanden, dass ich pingelig bin und entschuldige mich dafür. Wenn ich die Antwort schreiben würde, würde ich den Text "für bestimmte Systeme" nicht einfügen. Ansonsten aber gute Antwort! (ZB ein anderes Beispiel ... Löser für boolesche Erfüllbarkeitsprobleme haben fast immer eine Vielzahl von Lösungen und das Ziel ist, einfach eine davon zu finden (bei diesen Problemen sind die Systeme fast immer unbestimmt).
Matthew Gunn

1

Normalerweise höre ich "Solver", der zur Beschreibung von Software verwendet wird, was bedeutet, dass er für eine bestimmte Implementierung eines Algorithmus gilt. Dies scheint beispielsweise für die meisten mit SciComp.SE gekennzeichneten Fragen zu gelten .

Im Allgemeinen scheint der Begriff mathematischen Problemen mit einer "genau definierten Lösung" vorbehalten zu sein. Eine einzigartige Lösung würde als "gut definiert" ausreichend gelten, wie von Sycorax in den Kommentaren angegeben. (Die Gurobi- Löser scheinen für Probleme in dieser Klasse zu sein; für was es wert ist, sieht Gurobi für mich wie eine Suite oder Bibliothek von Lösern aus).

Aber ich denke nicht, dass einzigartig notwendig ist . Beispielsweise können sowohl lokale als auch globale Optimierungsprobleme genau definierte, aber nicht eindeutige Lösungen haben (z. B. hat die Funktion ein globales Minimum für ).f[x]=sin[πx]2f[k]=0kZ

Ich bin mit dieser Antwort nicht einverstanden , bei der es anscheinend eher um "Gleichungssystemlöser" als um "Optimierungslöser" geht. Beispielsweise ist in linearen kleinsten Quadraten das lineare Algebra- Problem überbestimmt, aber das Optimierungsproblem ist konvex mit einer eindeutigen Lösung (in nicht entarteten Fällen). Beachten Sie auch, dass die in dieser Antwort verlinkte Wikipedia-Seite "Löser " unter ihren Beispielen "Probleme mit linearer und nichtlinearer Optimierung, Probleme mit kürzesten Pfaden, Probleme mit minimalen Spannbäumen" auflistet.


Als Antwort auf den Kommentar werde ich klarstellen, was ich im Fall "Regression" meine.

Bei gegebener Funktion ist eine Lösung des durch angegebenen Gleichungssystems ein Vektor so dass alle Komponenten von Null sind. In Abhängigkeit von der Funktion kann es keine Lösung sein, eine einzelne einzigartige Lösung, oder viele Lösungen ( in der Regel unendlich viele), abhängig von der Dimension des Nullraumes von . In dem Fall, in dem linear ist, dh für einige , dann nein Eine Lösung kann existieren, es sei denn,F:RnRm

F[x]=0
xRnmF[x]FFFF[x]=AxbARm×n,bRmmrank[A]n.

Andererseits für eine gegebene Zielfunktion und mögliche Menge , die von abhängt , eine Lösung für die Optimierung Problem angegeben durch ist ein Vektor so dass für alle .EF:RnR ΩFRnF

ϵ=minxΩFEF[x]
xΩFEF[x]EF[y]yΩF

Bei der Optimierung der "kleinsten Quadrate" ist die Funktion eine Summe von Quadraten. Die zwei häufigsten Probleme der kleinsten Quadrate sind 1) wobei einem überbestimmten Gleichungssystem entspricht, und 2) wobei entspricht ein unterbestimmtes Gleichungssystem.EF

EF[x]=F[x]2 , ΩF=Rn
F
EF[x]=x2 , ΩF={yRn F[y]=0}
F

Gängige lineare Algebra-Plattformen wie Matlab können diese drei unterschiedlichen mathematischen Probleme "unter der Haube" in Convenience-Funktionen wie linsolve () kombinieren . Low-Level-Bibliotheken ("Solver") wie LAPACK werden dies jedoch nicht tun .

Zwei abschließende Klarstellungspunkte:

  • Ein "Löser" entspricht normalerweise einem genau definierten, aber abstrahierten mathematischen Problem. Zum Beispiel sind "statistische Inferenz" oder "erfolgreiche Vorhersage" keine solchen Probleme. In der Sprache der Computational Science verifizieren Sie einen Löser und validieren ein Modell.

    • Die Ideen von einzigartig / nicht einzigartig oder genau / ungefähr sind nicht vollständig eindeutig. Nehmen wir an, wir konzentrieren uns nur auf den Fall quadratischer Gleichungssysteme, die die meisten Streitpunkte beseitigen sollten. Es ist allgegenwärtig, in diesem Bereich von "iterativen Lösern" zu sprechen (z. B. ~ 600.000 Treffer bei Google Scholar ). Die De-facto- Definition von "Löser" muss also diese Klasse von Algorithmen enthalten, die per Definition im Wesentlichen ungenau sind.

Für lineare gewöhnliche kleinste Quadrate gilt jedoch . Die Lösung mag eindeutig sein, liefert jedoch eine Schätzung des geringsten Fehlers von , was häufig unangemessen ist und im Allgemeinen nicht mit einer bivariaten Erzeugungsgleichung unter Verwendung der Monte-Carlo-Simulation übereinstimmt, während die schlechter korrelierte Deming-Regression diese Erzeugungslinie plus oder minus der Regression wiederherstellen würde Error. OLS(x)OLS(y)y
Carl

Ich halte es für einen schlechten Dienst, lineares OLS in aufzurufen . Eine Annäherung, die nur unter restriktiven Bedingungen gültig ist, die normalerweise als "Lösung" ignoriert werden, da sie einen irreführenden Mythos aufrechterhält. y
Carl

@ Carl Ich habe aktualisiert, um zu versuchen, zu klären. Ich verstehe Ihre Kommentare nicht vollständig, aber sie scheinen sich auf die Lösung von Problemen der "angewandten Wissenschaft" zu beziehen, wie statistische Inferenz oder Vorhersage des maschinellen Lernens. Nach meiner Erfahrung (in der Computerwissenschaft ziemlich weit gefasst) bezieht sich "Löser" auf Software zur Lösung eines rein mathematischen Problems. Sie können einen Solver überprüfen, dies entspricht jedoch nicht der Validierung eines Modells. Wenn Ihr angewandtes wissenschaftliches Problem die Annahmen des gewählten mathematischen Problems nicht erfüllt, ist ein Validierungsfehler nicht auf den Löser zurückzuführen.
GeoMatt22

Du bist ein schlauer Keks! Zweifle niemals daran. Ich werde Ihre Antwort durchlesen und dazu beitragen, wenn ich kann. In Ihrem obigen Kommentar können Solver leicht validiert werden, Regression nicht so leicht. Sie implizieren ein Paradoxon: "Was ist Wissenschaft, die nicht angewendet wird?" Wissenschaft ist das Ergebnis der Prüfung von Hypothesen, sei es durch Beweis oder Versuch und Irrtum. Antwort: Alle Wissenschaft wird angewendet.
Carl

V & V-Begriffe sind Standard, z. B. Verifikation, Validierung und Vorhersagefähigkeit in Computertechnik und Physik. "Kurz gesagt, Verifikation ist die Bewertung der Genauigkeit der Lösung eines Rechenmodells. Validierung ist die Bewertung der Genauigkeit einer Computersimulation durch Vergleich mit experimentelle Daten. Bei der Verifizierung ist die Beziehung der Simulation zur realen Welt kein Problem. Bei der Validierung ist die Beziehung zwischen der Berechnung und der realen Welt, dh experimentellen Daten, das Problem. "
GeoMatt22

0

Ich denke, dass das Wort Solver von der ähnlichen Funktionalität zum Lösen einer möglichen Lösung stammt, wie es im Solver-Add-On von Excel die Option "value of" gibt, die versucht, so zu finden , dass und einige mehr Gleichheit und Ungleichheit Einschränkungen. In der Mathematik macht die Funktion lösen dasselbe.Xf(X)=Y

Englisch (besonders dank der Medien der USA) neigt dazu, sich durch Fehler zu entwickeln, die wie "Cracker" ~ "Hacker" kopiert werden. Solver könnte ähnlich sein. Es ist schön abstrakt genug, um die Namen der tatsächlichen Optimierungsalgorithmen zu verbergen. Oft sind die tatsächlichen Implementierungen nicht nur ein einziger Algorithmus.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.