it-swarm.com.de

Woher wissen wir, dass die nächste Generation besser sein wird?

Ich wurde kürzlich von diesem MSDN-Artikel in genetische Algorithmen eingeführt, in dem er sie kombinatorische Evolution nennt, aber es scheint dasselbe zu sein, und ich habe Schwierigkeiten zu verstehen, wie die Kombination zweier möglicher Lösungen immer zu a führt neue Lösung, die mindestens so gut ist wie ihre Eltern.

Warum ist das so? Sicherlich könnte das Kombinieren etwas Schlimmeres bewirken.

Soweit ich es verstehe, basiert der Algorithmus auf dem Konzept, dass, wenn ein Männchen und ein Weibchen einer Art Nachkommen hervorbringen, diese Nachkommen Merkmale beider Elternteile aufweisen. Einige Kombinationen sind besser, andere schlechter und andere genauso gut. Diejenigen, die besser sind (für welche Definition auch immer "besser" angemessen ist), haben eine größere Chance zu überleben und Offpsring zu produzieren, die die verbesserten Eigenschaften aufweisen. Es wird jedoch Kombinationen geben, die schwächer sind. Warum ist das kein Problem mit GA?

32
Avrohom Yisroel

Ein genetischer Algorithmus versucht, sich bei jeder Generation zu verbessern, indem die Population ausgesondert wird. Jedes Mitglied wird nach einer Fitnessfunktion bewertet, und nur ein Teil von ihnen mit hoher Punktzahl darf sich reproduzieren.

Sie haben jedoch Recht: Es gibt keine Garantie dafür, dass die nächste Generation die Punktzahl ihres Vorgängers verbessern wird.

Betrachten Sie Dawkins 'Wieselprogramm : "Entwickeln" der Zeichenfolge "Methinks it is like a weasel". Ausgehend von einer Population zufälliger Zeichenfolgen wertet die Fitnessfunktion die engste Textübereinstimmung aus, die gestört wird, um die nächste Generation hervorzubringen. Mit einer einfachen Crossover-Reproduktion könnten zwei Saiten mit hoher Punktzahl, die kombiniert werden, sehr leicht Nachkommen mit niedrigerer Punktzahl hervorbringen. Selbst eine "asexuelle" zufällige Mutation einer einzelnen High-Fitness-Saite könnte die Fitness des Kindes beeinträchtigen.

Ich denke, es ist erwähnenswert, dass dies nicht unbedingt ein Fehler ist. Bei dieser Art der Suche gibt es die Idee von lokalen Maxima . Ein Mitglied der Bevölkerung könnte eine Lösung darstellen, die nicht das optimale Ergebnis ist, aber das Beste ist, das erreicht werden kann, ohne sich auf dem Weg zu verschlechtern.

Stellen Sie sich vor, die Fitnessfunktion für das Wieselprogramm findet nicht nur den Bearbeitungsabstand, sondern hat auch den Begriff "Wort" und testet, ob das letzte Wort der Zeichenfolge der Name eines Tieres ist. Jeder Tiername punktet gut, aber "weasel" bekommt einen großen Bonus.

Was passiert nun, wenn "Methinks it is like a walrus" ist weiterentwickelt? Es punktet gut. Nicht so gut wie die ultimative Zielzeichenfolge, aber besser als "Methinks it is like a walrut" oder andere enge Variationen, die durch einen einzelnen Mutationsschritt erreicht werden könnten.

Die Walross-Zeichenfolge ist ein lokales Maximum, und die Suche kann dort hängen bleiben, es sei denn, das Programm erlaubt Die Punktzahl der nächsten Generation ist schlechter.

43
jscs

Wir wissen nicht, dass es besser wird, wir wissen, dass es nicht schlechter wird.

Besteht in jeder Generation nicht nur aus der Quelle der besten Elemente, sondern umfasst auch die besten Elemente selbst - Klone, wenn Sie so wollen. Da sie noch vorhanden sind, erzielen sie die gleichen Ergebnisse wie zuvor. Das heißt, wenn keiner der Nachkommen besser ist, gewinnen die Gewinner der vorherigen Generationen erneut - und werden neu mutiert/gezüchtet.

Bedenken Sie: Wenn eine Vorläufer-Person ein Buchstabe ist, z. B. A Ein mutiertes Kind, das durch Hinzufügen einer Zahl definiert wird, z. B. A1, Werden Kreuzbrot-Lösungen mit Klammern um das Elternteil geschrieben, z. B. (A1B2) Und der Fitness-Kern eines jeden danach geschriebenen Individuums - höher ist besser [12]

Betrachten Sie zur Demonstration einen Pool von 5, in dem wir die besten 2 behalten und jeweils 1 Mutat plus eine Kreuzung füllen

Generation 1

  • A [10]
  • B [5]
  • C [4]
  • D [3]
  • E [1]

Behalten Sie A, B bei, da dies die besten zwei sind, und füllen Sie die anderen 3 Slots mit ihren Nachkommen auf

Generation 2

  • A [10]
  • B [5]
  • (AB) [7]
  • A1 [12]
  • B1 [4]

Behalten Sie A und (AB), Da sie die besten 2 sind. Dies bedeutet, dass Opa A immer noch im Pool ist, da die meisten Kinder schwächer arbeiten

Generation 3

  • A [10]
  • (AB) [12]
  • (A(AB)) [14]
  • A2 [8]
  • (AB)1 [13]

Behalten Sie (AB)1 Und (A(AB)) - diesmal wurden keine Großeltern unterhalten, da zwei ihrer Kinder sie schlugen. Aber wenn (AB1) Etwas schlechter abgeschnitten hätte, hätten wir stattdessen (AB) Behalten.

Dies wird fortgesetzt, bis sich die Punktzahl stabilisiert hat. Dies zeigt an, dass Sie lokale Maxima erreicht haben (möglicherweise globale Maxima). Ein Grund, dies zu erkennen, wäre, wenn dieselben Personen weiterhin in die nächste Generation "geklont" werden. (obwohl bei hochdimensionalen Problemen, die möglicherweise zu lange dauern, es besser ist, nur die Verbesserung <einer bestimmten Toleranz zu überprüfen)

6
Lyndon White

Im Allgemeinen funktionieren genetische Algorithmen, indem sie eine Reihe von (zufälligen) Variationen der Eltern in jeder Generation erzeugen. Dann wird eine Auswahlfunktion angewendet, und der Nachwuchs, der gemäß dieser Funktion am besten geeignet ist, überlebt. Der Nachwuchs ist also nicht unbedingt besser, da die Variation zufällig ist, aber kombiniert mit der Auswahl erhalten Sie eine Verbesserung im Laufe der Zeit.

4
JacquesB

Als ich im College genetische Algorithmen studierte, wurde dies folgendermaßen erklärt:

Stellen Sie sich vor, eine Lösung ist eine Kombination von "Genen", wobei jedes Gen die Qualität der gesamten Lösung beeinflusst. Wenn zwei Lösungen gepaart werden, werden ihre Gene zufällig von jedem Elternteil ausgewählt.

Wenn das Gen im Allgemeinen zu einer guten Lösung führt, steigt seine Häufigkeit im Genpool. Im Extremfall wird das Gen die Bevölkerung dominieren.

Wenn Sie also an genetische Algorithmen (und die Evolution im Allgemeinen) denken, sollten Sie nicht an Individuen denken. Sie sollten über Gene und Populationen als Ganzes nachdenken. Selbst wenn eine "beste" Lösung verloren geht, bedeutet dies nicht, dass ihre Gene verloren gehen.

Es gibt auch eine Idee des Elitismus in genetischen Algorithmen. Dies bedeutet, dass die besten Lösungen immer über Generationen hinweg aufbewahrt werden. Dies könnte die Konvergenz des Algorithmus beschleunigen, aber es ist für den Algorithmus einfacher, in lokalen Optima stecken zu bleiben.

4
Euphoric

GA-Algorithmen sind nicht deterministisch, sie garantieren keine Verbesserung in jeder Generation und sie garantieren auch nicht, ein Gesamtoptimum zu finden. Die Auswahlphase einer GA unter Verwendung einer Fitnessfunktion erhöht jedoch die Wahrscheinlichkeit, dass "gute Lösungen" überleben.

2
Doc Brown