Ich wurde kürzlich durch diesen MSDN-Artikel mit genetischen Algorithmen bekannt gemacht , in dem er sie als kombinatorische Evolution bezeichnet, aber es scheint dasselbe zu sein, und ich habe Mühe zu verstehen, wie die Kombination zweier möglicher Lösungen immer eine neue Lösung ergibt, die mindestens genauso ist gut wie seine Eltern.
Warum ist das so? Sicherlich könnte das Kombinieren etwas Schlimmeres hervorbringen.
Soweit ich es verstehe, basiert der Algorithmus auf dem Konzept, dass, wenn ein Männchen und ein Weibchen einer Art Nachkommen zeugen, diese Nachkommen Merkmale beider Eltern haben. Manche Kombinationen sind besser, manche schlechter und manche genauso gut. Diejenigen, die besser sind (für was auch immer die Definition von "besser" angemessen ist), haben mehr Chancen zu überleben und Offpsring zu produzieren, der die verbesserten Eigenschaften aufweist. Es wird jedoch Kombinationen geben, die schwächer sind. Warum ist das kein Problem mit GA?
quelle
However, there will be combinations that are weaker. Why isn't this an issue with GA?
- Weil die schwächeren Kombinationen verworfen werden.Why isn't this an issue with GA?
Nun, es ist oder genauer, es könnte sein. Einer der vielen (vielen) Parameter zur Optimierung mit GAs ist die Populationsgröße: Wenn sie zu niedrig ist, können Sie möglicherweise nur schwächere Individuen produzieren. Wenn sie zu hoch ist, ist die mit der Fitnessfunktion verbundene Rechenzeit möglicherweise zu hoch.Antworten:
Ein genetischer Algorithmus versucht, sich bei jeder Generation zu verbessern, indem er die Population aussortiert. Jedes Mitglied wird nach einer Fitnessfunktion bewertet, und nur ein Teil von ihnen mit hoher Punktzahl darf sich fortpflanzen.
Sie haben jedoch Recht: Es gibt keine Garantie dafür, dass sich die nächste Generation im Vergleich zum Vorgänger verbessern wird.
Betrachten Sie Dawkins 'Wieselprogramm : "Entwickeln" Sie die Saite
"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 zu erzeugen. Mit einer einfachen Crossover-Reproduktion könnten zwei Saiten mit hoher Punktzahl, die kombiniert werden, sehr leicht Nachkommen mit niedriger Punktzahl hervorbringen. Selbst "asexuelle" zufällige Mutationen einer einzelnen High-Fitness-Saite können die Fitness des Kindes beeinträchtigen.Es ist erwähnenswert, dass dies nicht unbedingt ein Fehler ist. Bei dieser Art der Suche gibt es die Idee der lokalen Maxima . Ein Mitglied der Bevölkerung könnte eine Lösung darstellen, die nicht das optimale Ergebnis ist, sondern die beste, die erreicht werden kann, ohne sich auf dem Weg zu verschlechtern.
Stellen Sie sich vor, dass die Fitnessfunktion für das Wieselprogramm nicht nur die Bearbeitungsentfernung ermittelt, sondern auch eine Vorstellung von "Wort" hat und testet, ob das letzte Wort der Zeichenfolge der Name eines Tieres ist. Jeder Tiername punktet gut,
"weasel"
bekommt aber einen großen Bonus.Was passiert nun, wenn
"Methinks it is like a walrus"
sich weiterentwickelt? Es punktet gut. Nicht so gut wie die ultimative Zielkette, aber besser als"Methinks it is like a walrut"
oder andere enge Variationen, die durch einen einzigen Mutationsschritt erreicht werden könnten.Die Walross-Zeichenfolge ist ein lokales Maximum, und die Suche kann dort hängen bleiben, sofern das Programm nicht zulässt, dass die Punktzahl der nächsten Generation schlechter wird.
quelle
Wir wissen nicht, dass es besser wird, wir wissen, dass es nicht schlimmer wird.
Besteht in jeder Generation nicht nur aus dem Ursprung der besten Elemente, sondern umfasst auch die besten Elemente selbst - wenn Sie so wollen, Klone. Da sie noch anwesend sind, erzielen sie die gleichen Ergebnisse wie zuvor. Das heißt, wenn keiner der Nachkommen besser ist, gewinnen die Gewinner der vorherigen Generation erneut - und werden re-mutiert / gezüchtet.
Bedenken Sie: Wenn ein Stammvater ein Buchstabe ist, z. B.
A
ein mutiertes Kind definiert wird, indem eine Zahl hinzugefügt wird, z.A1
B.(A1B2)
Kreuzbrotlösungen mit Klammern um den Elternteil geschrieben werden[12]
Zur Demonstration betrachten wir einen Pool von 5, in dem wir den 2. besten behalten und mit jeweils 1 Mutanten plus einer Kreuzung füllen
Generation 1
A
[10]B
[5]C
[4]D
[3]E
[1]Behalten Sie
A
,B
wie sie die besten zwei sind, und füllen Sie andere 3 Steckplätze mit ihren Nachkommen aufGeneration 2
A
[10]B
[5](AB)
[7]A1
[12]B1
[4]Halten Sie
A
und(AB)
, da sie die besten 2 sind - Dies bedeutet, dass OpaA
immer noch im Pool ist, da die meisten Kinder schwächer arbeitenGeneration 3
A
[10](AB)
[12](A(AB))
[14]A2
[8](AB)1
[13]Halten
(AB)1
und(A(AB))
- diesmal wurden keine Großeltern unterhalten, als zwei ihrer Kinder sie schlugen. Aber wenn(AB1)
es nur ein bisschen schlechter gelaufen wäre, hätten wir es(AB)
stattdessen gehalten .Dies wird fortgesetzt, bis sich die Punktzahl stabilisiert hat. Was darauf hinweist, dass Sie eine Art lokales Maxima (möglicherweise ein globales Maxima) erreicht haben. Ein Grund, dies zu erkennen, wäre, wenn dieselben Individuen weiterhin in die nächste Generation "geklont" werden. (obwohl für hochdimensionale Probleme, die zu lange dauern könnten, besser, nur die Verbesserung <eine bestimmte Toleranz zu überprüfen)
quelle
Im Allgemeinen funktionieren genetische Algorithmen, indem sie eine Reihe von (zufälligen) Variationen bei den 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 in Kombination mit der Selektion erhalten Sie eine Verbesserung im Laufe der Zeit.
quelle
Als ich am College genetische Algorithmen studierte, wurde das folgendermaßen erklärt:
Stellen Sie sich vor, eine Lösung besteht aus einer Kombination von "Genen", wobei jedes Gen beeinflusst, wie gut die Lösung insgesamt ist. Wenn zwei Lösungen gepaart sind, werden sie zufällig von jedem Elternteil ausgewählt.
Wenn nun ein Gen im Allgemeinen zu einer guten Lösung führt, nimmt seine Häufigkeit im Genpool zu. 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 die Gene verloren gehen.
Es gibt auch eine Idee von Elitismus in genetischen Algorithmen. Dies bedeutet, dass die beste (n) Lösung (en) immer über Generationen hinweg beibehalten wird (werden). Dies kann die Konvergenz des Algorithmus beschleunigen, es ist jedoch für den Algorithmus einfacher, in lokalen Optima zu stecken.
quelle
GA-Algorithmen sind nicht deterministisch, sie garantieren keine Verbesserung in jeder Generation und sie garantieren auch nicht, ein Gesamtoptimum zu finden. Durch die Auswahlphase eines GA mit einer Fitnessfunktion ist es jedoch wahrscheinlicher, dass "gute Lösungen" überleben.
quelle