Technische Universität München Fakultät für Informatik Forschungs- und Lehreinheit Informatik IX Künstliche Evolution: Die Experimente von Karl Sims und die Bedeutung von Wettbewerb Hauptseminar Andreas Mühling Betreuer: M. Sc. Freek Stulp Abgabetermin: 23.11.2005 Inhaltsverzeichnis 1 Einleitung 2 2 Die „virtuellen Kreaturen“ von Karl Sims 2.1 Mechanismen der künstlichen Evolution . 2.2 Die Phänotypen bei Karl Sims . . . . . . 2.3 Die Kontrolle der Kreaturen . . . . . . . 2.4 Die Codierung des Genotyps . . . . . . . 2.5 Der genetische Algorithmus auf Graphen 2.6 Experimentelle Ergebnisse . . . . . . . . . . . . . . 2 2 3 4 5 7 8 3 Die Bedeutung von Wettbewerb in der Evolution 3.1 Wettbewerb in der natürlichen Evolution . . . . . . 3.2 Wettbewerb in der künstlichen Evolution . . . . . . 3.2.1 Experimentelle Ergebnisse . . . . . . . . . 10 10 11 12 4 Diskussion 12 . . . . . . . . . . . . . . . . . . . . . . . . 1 EINLEITUNG 1 2 Einleitung Das Phänomen der Evolution ist in der Biologie bereits seit der Zeit Charles Darwins bekannt und auch seit Längerem gemeinhin als die einzige Erklärung zur Entwicklung des hochkomplexen Lebens auf der Erde anerkannt. Alleine durch die Anwendung einiger sehr grundlegender Prinzipien entstanden demnach aus einfachsten Strukturen letztlich alle Lebewesen. Obwohl es im Bereich der Evolutionsbiologie noch einige offene Frage gibt, reicht bereits ein sehr einfaches Modell der Evolution, um damit in Computer-Simulationen beeindruckende Ergebnisse zu erzielen. Der „genetische Algorithmus“ gehört im Bereich der künstlichen Intelligenz bei der Problemlösung heutzutage zu einem Standard Verfahren. Probleme, wie das bekannte „Travelling Salesman Problem“, die sich - sehr wahrscheinlich - nur durch Heuristiken effizient lösen lassen, können oftmals sehr gut mit dem genetischen Algorithmus behandelt werden. Neben diesen Anwendungen, gibt es aber natürlich auch weitere Forschungsarbeiten, die sich, vor allem im Bereich „Artificial Life“, genauer mit den Details der simulierten Evolution befassen. Im Folgenden soll die Arbeit von Karl Sims näher vorgestellt werden. Auch wenn seine Arbeiten ein ganz konkretes, praktisches Ziel verfolgten, kann man dadurch Erkentnisse über die Mechanismen der Evolution, insbesondere auch über die Bedeutung des Wettbewerbs innerhalb von (oder zwischen) Spezies gewinnen. Der erste Teil dieser Arbeit stellt ein Projekt von Karl Sims vor, mithilfe Dessen im zweiten Teil näher auf die Thematik „Wettbewerb in der Evolution“, anhand von experimentellen Ergebnissen eingegangen wird. 2 Die „virtuellen Kreaturen“ von Karl Sims Die Arbeit von Karl Sims um die es im Folgenden geht, versucht, vereinfacht gesagt, „virtuelle Kreaturen“ durch die Simulation einer Evolution zu erschaffen. Als Anwendungsfeld seiner Arbeit sieht Sims dabei den Bereich der Computergraphik und der Animation von Lebewesen im Computer [Sim94b]. Das bestehende Problem ist dabei, seiner Meinung nach, dass animierte Wesen, die ein bestimmtes (nicht triviales) Verhalten zeigen sollen (man denke dabei etwa an Wesen die sich tier- oder menschenähnlich fortbewegen) normalerweise eine sehr komplexe algorithmische Steuerung benötigen. Noch dazu ist es mühsam und oftmals nur wenig erfolgsversprechend, die Steuerung, oder auch nur das Erscheinungsbild solcher Kreaturen manuell zu erzeugen. Sims verfolgte daher den Ansatz, solche Wesen komplett automatisch durch simulierte Evolution entstehen zu lassen, also sowohl deren Aussehen, wie auch die für die Steuerung notwendigen Mechanismen. Ein solches Vorgehen spart zum Einen den Aufwand, der für ein manuelles Erzeugen nötig wäre, zum Anderen lassen sich durch dieses Verfahren auch Wesen erzeugen, die ein menschlicher „Schöpfer“ sehr wahrscheinlich so kaum hätte erdenken können. Als Beispiel für die Realisierbarkeit des Systems versuchte Sims zunächst mit sehr einfach aufgebauten Kreaturen verschiedene Fortbewegungsarten zu erzielen. 2.1 Mechanismen der künstlichen Evolution Der genetische Algorithmus, wie er auch von Karl Sims verwendet wird, basiert auf einem einfachen Modell der natürlichen Evolution. Eine Menge von Genotypen, der Gen-Pool einer Population, unterliegt im Laufe der Zeit einer beständigen Weiterentwicklung. In der Natur be- 2 DIE „VIRTUELLEN KREATUREN“ VON KARL SIMS 3 schreiben dabei DNS-Sequenzen den „Bauplan“ von Lebewesens, beim genetischen Algorithmus beschreibt, ganz allgemein, ein „Genotyp“ die Codierung einer möglichen Lösung eines Problems für das der Algorithmus - wenn man den genetischen Algorithmus als Optimierungswerkzeug betrachtet - eine möglichst optimale Lösung bestimmen soll. Der Phänotyp beschreibt in der Biologie die äußere Erscheinung eines Lebewesens, also das, was durch die Interpretation der DNS-Sequenzen tatsächlich entsteht. Im genetischen Algorithmus wird, analog dazu, eine tatsächliche Lösung, die durch die Decodierung eines Genotyps entsteht, als „Phänotyp“ bezeichnet. Aus einer Menge an Genotypen entstehen, wie in der Natur, durch Paarung, oder auch durch asexuelle Fortpflanzung, neue Genotypen. Die Mechanismen der Natur, wie zum Beispiel das „Crossing Over“, sind dabei vereinfacht auch in der künstlichen Evolution zu finden, genauso wie zufällige Mutationen an den Genotypen, die für eine zusätzliche Veränderung des Gen-Pools sorgen. Trotzt dieser Gemeinsamkeiten besteht in einem Punkt ein grundlegender und bedeutender Unterschied zwischen der natürlichen Evolution und dem genetischen Algorithmus: Die natürliche Evolution arbeitet nie zielgerichtet, der genetische Algorithmus im Allgemeinen schon. In der natürlichen Evolution ist das „Ziel“ lediglich das Überleben einer Spezies oder, folgt man der Logik von R. Dawkins in [Daw99], eines Gens. Der Gen-Pool verändert sich in jeder Generation also ganz einfach dadurch, dass nur die Genotypen erhalten bleiben, deren Phänotypen im Überlebenskampf bestehen. Ein darüber hinausgehendes Ziel ist nicht vorhanden. Im gentischen Algorithmus hingegen findet im herkömmlichen Sinne kein Überlebenskampf zwischen den Phänotypen statt, solche „Kämpfe“ müssen, wenn sie stattfinden, natürlich nach wohldefinierten Kriterien ausgeführt werden, und damit exisitert bereits wieder implizit ein generelles Ziel, nämlich die Optimierung hin zur bestmöglichen Erfüllung dieser Kriterien. Die Optimierung stellt sich beim genetischen Algorithmus also ganz automatisch dadurch ein, dass ein „Survival of the fittest“ Prinzip angewandt wird, das in jeder Generation, jedem Genotyp einen „Fitness-Wert“ zuweist. Dieser Wert hat direkten Einfluss darauf, ob ein Genotyp überlebt und sich fortpflanzen darf, oder ob er verschwindet. Alleine die Einführung dieses Mechanismus, der Generation für Generation nach denselben Regeln die Genotypen überprüft, bedingt dann aber bereits, dass der genetische Algorithmus Genotypen hervorbringen wird, die im Laufe der Generationen - normalerweise - immer bessere Fitness-Werte aufweisen und damit immer optimaler die Kriterien der Auswertung erfüllen. Das „Überleben als Selbstzweck“ der Natur kann im genetischen Algorithmus also so, per definitionem, ohne grundlegende Veränderungen am Prinzip der Fitness-Wert Bestimmung nicht stattfinden. 2.2 Die Phänotypen bei Karl Sims Das Ziel von Karl Sims in [Sim94b] war es, Wesen zu erschaffen, die sich in einer simulierten 3D-Welt fortbewegen können. Die Wesen besitzen einen Körper aus „Blöcken“, die durch Gelenke verbunden sind. Dabei ist zu beacheten, dass die grundsätzliche Struktur eines Wesens, also die Anzahl und der Aufbau der Blöcke, keineswegs fest vorgeschrieben ist, sondern der Evolution unterliegen soll. Aus Gründen der Codierung des Genotyps, die weiter unten beschrieben wird, existiert unter den Blöcken eine Hierarchie. Zwei durch ein Gelenk verbundene Blöcke stehen dabei immer in einer „Vorgänger-Nachfolger“ Beziehung, wobei die Blöcke letztlich aber direkt miteinander verunden sind und lediglich die Art dieser Verbindung das „Gelenk“ zwischen ihnen definiert - ohne das dieses explizit als „Bauteil“ vorhanden ist. Die 2 DIE „VIRTUELLEN KREATUREN“ VON KARL SIMS 4 möglichen, von Sims verwendeten Gelenktypen sind unter Anderem starr, rotierbar, beugbar, oder auch Kugelgelenke. Je nach Art des Gelenks existieren dazu noch einige Parameter, die die Beweglichkeit in die einzelnen Richtungen festlegen beziehungsweise beschränken können. Zwei Blöcke verbinden neben der Information über ihre Gelenk-Verbindung auch noch Informationen wie etwa die Position der Blöcke zueinander. Desweiteren existieren zu jedem Block noch eine Anzahl weiterer Informationen, die nur jeweils einen Block betreffen, wie etwa seine Größe. In Abbildung 1 kann man einige, allerdings von Sims per Hand erstellte, Wesen sehen, die sehr gut verdeutlichen, was das Ziel war: Kreaturen zu erzeugen, die sehr tier- oder menschenähnlich wirken. Spätestens bei der später folgenden Beschreibung des Genotyps wird klar, dass das System, genau auf dieses, von Sims erklärte, Ziel hin „erdacht“ wurde. Abbildung 1: Zwei von Sims manuell erzeugte Kreaturen. Quelle: [Sim94b] 2.3 Die Kontrolle der Kreaturen Da sich die Wesen später in einer 3D Welt bewegen sollen, müssen sie neben ihrem Körperbau auch noch über eine Steuerung verfügen, die die möglichen Bewegungen veranlassen kann. Dazu verwendet Sims ein komplexes Modell aus Sensoren und verschachtelten neuronalen Netzen, die über Aktoren Kräfte auf die Gelenke ausüben. Es liegt nahe, diese Steuerung mithilfe neuronaler Netze zu implementieren, da ein solches neuronales Netz wie geschaffen ist für die Verwendung in einem evolutionären Entwicklungsprozess und es außerdem genau die gewünschte Funktionalität - die Reaktion auf Sensordaten - bereitstellt. Jedem Block einer Kreatur kann ein Sensor zugeordnet werden, der Informationen über den Block selbst, oder die Welt außerhalb übermittelt. Die verschiedenen Sensortypen, die Sims verwendet, messen dabei den Winkel zwischen zwei benachbarten Blöcken sowie Kontakt mit anderen Blöcken (nicht notwendigerweise derselben Kreatur). Da die 3D Welt auch Lichtquellen simulieren kann, gibt es daneben auch noch Photosensoren. Diese drei Typen stellen bereits genug Funktionalität zu Verfügung, um das gewünschte Ziel der Fortbewegung (und später auch der Interaktion) zu erreichen. Zu Recht weist Sims allerdings auch darauf hin, dass eine Erweiterung der Liste ohne Probleme 2 DIE „VIRTUELLEN KREATUREN“ VON KARL SIMS 5 möglich wäre [Sim94b]. Alle diese Sensoren liefern, wie bei neuronalen Netzen üblich, numerische Werte an die Eingänge des Netzes. So liegen Werte für den Kontakt-Sensor etwa bei 1.0 falls ein Kontakt vorliegt und bei -1.0 falls kein Kontakt vorliegt. Die anderen Sensoren arbeiten ganz ähnlich dazu. Genauso wie der Körperbau der Kreaturen, sollte auch den Aufbau der neuronalen Netze dem Lauf der Evolution unterliegen. Dabei verwendet Sims, wie Eingangs erwähnt, eine Hierarchie von Netzen. Grundsätzlich kann, genauso wie bei den Sensoren, jedem Block der Kreatur ein neronales Netz zur Steuerung zugeordnet werden. Diese „lokale“ Steuereinheit kann dabei mit den Steuereinheiten der benachbarten Blöcke verbunden werden. Rückkopplungen innerhalb eines Netzes sind ebenfalls erlaubt. Zusätzlich gibt es neben diesen lokalen Netzen auch noch ein zentrales Netz, das keinem Block zugeordnet ist und eine Art „Gehirn“ darstellt, das, im Optimalfall, die lokalen Steuereinheiten koordinieren soll. Dazu kann es an seinen Eingängen die Signale von einem beliebigen Sensor oder Neuron der Kreatur empfangen und die Ausgänge können ebenso mit allen anderen Neuronen und Aktoren der Kreatur verbunden sein. Die Aktoren sind dabei, wie die Gelenke, nur implizit vorhanden - es wird lediglich eine gerichtete Kraft einer bestimmten Stärke auf einen der Blöcke, beziehungsweise auf das verbindende Gelenk zweier Blöcke, ausgeübt. Dieses sehr komplizierte System von verschiedenen hierarchisch angeordneten Steuerungen, die allesamt einer evolutionären Entwicklung unterliegen können ermöglicht natürlich eine ungeheure Vielfalt an möglichen Verhaltensweisen. Die neuronalen Netze, die dabei zum Einsatz kommen, wurden von Sims zusätzlich über die „normale“ Funktionalität eines neuronalen Netzes hinaus erweitert. Während es normalerweise für die Neuronen nur die Funktionen „Summe“ und „Schwellwert“ gibt, verwendet Sims in seiner Arbeit eine ganze Reihe weiterer möglicher Funktionen, wie zum Beispiel Produkt, Vorzeichen, Ableitung oder auch Oszillatoren. Das Ziel der Erweiterungen war, die Entwicklung von „interessanten Verhaltensweisen“ [Sim94b] zu unterstützen. Die von Sims erdachte Steuerung ist ein unglaublich komplexes System und es zeigt sich in seinen Experimenten auch, dass es für Menschen praktisch unmöglich ist, die Funktionsweise einer speziellen, „fertigen“ Steuerung nachzuvollziehen. 2.4 Die Codierung des Genotyps Generell hat man bei der Verwendung des genetischen Algorithmus das Problem, das der Genotyp einen möglichst einfach im Rechner zu verarbeitenden Aufbau besitzen sollte, um die Evolution effizient ausführen zu können. Optimalerweise sollte der Genotyp zum Beispiel nur eine Folge von Zahlen darstellen. Je einfacher aber der Genotyp ist, umsomehr Aufwand muss normalerweise darin investiert werden, den Phänotyp aus dem Genotypen zu berechnen. Vor allem, wenn man, wie Karl Sims, einen sehr komplexen Phänotyp anstrebt. Des Weiteren stellt sich die Frage, wie detailliert man einen Genotyp entwirft und wieviel Freiheit man der „Evolution“ lässt. In der Natur besteht der Genotyp eines jeden Lebewesen nur aus den 4 Grundbausteinen der DNS. Das lässt eine enorme Freiheit, wie man leicht an der Vielfalt des Lebens erkennen kann. Andererseits benötigt viel Freiheit im Normalfall auch viel mehr Zeit, bis ein gewünschtes Ergebniss auftritt. Da Sims ein klares Ziel verfolgte, verwendete er einen Genotyp, der Freiheiten nur in einem engen Rahmen erlaubt, und der so eine sehr viel kompaktere Darstellung der oben beschriebenen Phänotypen ermöglicht. Trotzdem sind die Freiheiten innerhalb des gesteckten Rahmens durchaus beachtlich, wie man bei der Beschreibung der Steuerung be- 2 DIE „VIRTUELLEN KREATUREN“ VON KARL SIMS 6 reits sehen konnte. Aus den Anforderungen an den Genotyp, vor allem aus der Anforderung, dass praktisch alle Teile einer Kreatur nicht unveränderlich in ihrem Aufbau sein sollen, ergibt sich fast zwingend die Notwendigkeit einer „genetischen Sprache“. Eine herkömmliche Codierung für ein bestimmtes Problem stellt häufig nich mehr als eine „Kurzschreibweise“ für eine bestimmte Lösung, die aus einem endlichen Lösungsraum stammt, dar. Der Lösungsraum kann sehr groß werden, trotzdem bleibt er endlich. Bei der Verwendung einer „genetischen Sprache“ hingegen, beschreibt ein Genotyp eine Lösung aus einem unendlichen Raum an möglichen Lösungen. Ohne eine formale Definition einer genetischen Sprache geben zu wollen, sei als intuitives Beispiel die Verwendung von Quelltexten einer Programmiersprache als Genotyp erwähnt. Die Menge der möglichen Computerprogramme ist, praktisch, unendlich. Entsprechende Versuche wurden im Feld des „Artificial Life“ bereits zum Beispiel mit LISP Programmen gemacht. Solche Genotypen können sich in ihrer Komplexität im Laufe der Evolution beliebig verändern. Das stellt auf der einen Seite natürlich ein ungleich mächtigeres System dar, auf der anderen Seite wird es im Normalfall aber auch wesentlich teurer, die „Fitness“ Werte für spezielle Lösungen zu bestimmen, oder auch nur den Phänotyp zu erzeugen. Die genetische Sprache, die Sims für seine Kreaturen verwendet, besteht aus gerichteten Graphen. Mithilfe dieser Graphen lässt sich sowohl der Aufbau des Körpers als auch der Aufbau der Steuerung sehr elegant beschreiben. Ein Knoten codiert jeweils einen Block, eine Kante führt von einem Knoten immer zum Knoten des Nachfolge-Blocks in der Hierarchie. Dabei ist es erlaubt, dass von einem Knoten aus mehrere Kanten zu demselben Nachfolgeknoten führen, um die mehrfache Verwendung von Teilgraphen zu ermöglichen, die bei der Interpretation dann gleiche Körperteile mehrfach erzeugen. Genauso ist es auch erlaubt, dass Knoten auf sich selbst verweisen oder dass Kreise im Graph auftreten. Alle relevanten Information, die zur Erstellung eines Blocks beötigt werden - also Größe, Gelenkverbindnug, etc. sind dabei direkt in den Knoten gespeichert. Die Information über das Gelenk ist jeweils nur einmal, beim Nachfolger, gespeichert. Daneben gehören zu jedem Knoten auch die Informationen über die lokale Steuerung die zu dem Block gehört. Diese wird ebenfalls als gerichteter Graph repräsentiert. Sowohl die Sensoren, als auch die Neuronen und die Aktoren treten dabei als Knoten auf, Kanten repäsentieren die Vernetzung. Da, wie oben erwähnt, die Steuerung in sich ebenfalls hierarchisch aufgebaut sein kann, können neuronale Verbindungen auch zwischen den Steuerungs-Graphen der einzelnen Blöcken verlaufen. Daneben gibt es noch einen seperaten Graph für die zentrale Steuerung, die ja keinem speziellen Block zugeordnet ist. Insgesamt ergibt sich damit ein System aus ineinander verschachtelten Graphen, die letztlich den Körperbau und das gesamte Steuerungssystem einer Kreatur beschreiben. Zur Interpretation des Genotyps braucht man nun noch einen Startpunkt, der in diesem Fall einfach ein speziell markierter Knoten des Graphen ist. Davon ausgehend kann dann der Graph traversiert werden und an jedem Knoten anhand der darin gespeicherten Informationen ein entsprechender Block erstellt werden, eventuell mit der dazugehörigen Gelenkverbindung (wenn man diese erzeugt, ist der dazugehörige zweite Block bereits erstellt, da die Informationen immer beim Nachfolger gespeichert werden) sowie den eventuell vorhandenen Sensoren und neuronalen Netzen. Damit das Verfahren algorithmisch funktionieren kann, muss natürlich für rekurisve Teilgraphen - beziehungsweise für Kreise innerhalb des Graphen - eine maximale Schachtelungstiefe vorgegeben sein, diese ist allerdings für jeden Knoten gesondert festgelegt und unterliegt auch der Evolution. In Abbildung 2 kann man gut die Wiederverwendung von Teilgraphen anhand des - vereinfacht dargestellten - Gra- 2 DIE „VIRTUELLEN KREATUREN“ VON KARL SIMS 7 phen erkennen. Abbildung 3 zeigt einen Ausschnitt eines - ebenfalls vereinfacht dargestellten - Graphen, der die Verschachtelung der neuronalen Netze mit dem Graphen für den Körperbau zeigt. Die fetten Kreise sind dabei Knoten des Graphen für dem Körper, die neuronalen Netze sind den einzelnen Blöcken zugeordnet. Der gestrichelte Kreis beinhaltet das neuronale Netz des zentralen „Gehirns“. Abbildung 2: Die Interpretation eines rekursiven Graphen. Quelle: [Sim94b] Abbildung 3: Ein Ausschnitt aus einem Graph mit zugeordneten neuronalen Netzen Quelle: [Sim94b] 2.5 Der genetische Algorithmus auf Graphen Im Folgenden werden einige Lösungsansätze vorgestellt, die Sims für die Benutzung des genetischen Algorithmus mit Graphen als Genotyp verwendete. Es geht dabei nicht um die tatsächliche Implementierung, als vielmehr um die Idee, wie man mit Graphen als Genotyp arbeiten kann. Die Interpretation eines Genotyps wurde bereits beschrieben. In jeder Generation des Algorithmus, müssen alle Genotypen interpretiert werden, um den zugehörigen Phänotypen einen Fitness-Wert zuweisen zu können. Näheres dazu findet sich im nächsten Abschnitt. Daneben 2 DIE „VIRTUELLEN KREATUREN“ VON KARL SIMS 8 muss aber auch die Fortpflanzung inklusive des Crossing Over, sowie das zufällige Mutieren des Genotyps in jeder Generation durchgeführt werden. Für das Mutieren verwendet Sims dabei folgenden Ablauf: Zunächst wird jeder Parameter innerhalb eines Knotens unabhängig voneinander, und jeder mit eigener Wahrscheinlichkeit, verändert. Für skalare Werte unterliegen die Änderungen dabei einer Verteilung „ähnlich der Normalverteilung“ [Sim94b], die sich außerdem an der Größenordnung des bisherigen Werts orientiert, um sowohl drastische Änderungen, wie auch „Feintuning“ zu ermöglichen, jenachdem, in welcher Größenordnung der Wert vorher war. Dann wird ein zufälliger neuer Knoten generiert und bisherige Kanten werden mit einer gewissen Wahrscheinlichkeit verändert. Dannach werden zufällige neue Kanten generiert und auch zufällig Kanten gelöscht. Schließlich werden solche Knoten entfernt, die neu dazugefügt wurden und keine Verbindung zum Rest besitzen. Ähnlich verläuft der Prozess für die Graphen der Steuerung, hier wird von „außen nach innen“ durch die Verschachtelung vorgegangen. Da alle Neuronen eine feste Anzahl an Ein- und Ausganskanten besitzen, werden hier allerdings keine neuen Kanten dazugefügt oder gelöscht. Da dieses Verfahren Knoten für Knoten behandelt, nehmen die Mutationen mit der Größe des Genotyps stark zu. Um das einzudämmen, wird die Größe des Graphen in der Mutationswahrscheinlichkeit berücksichtigt. Es ist außerdem zu beachten, dass es vorkommen kann, das Knoten im Graph verbleiben, die keine Kanten besitzen. Solche Knoten stellen im Grunde „parasitäre Gene“ [Daw99] dar, die auf den Phänotyp keinen Einfluss nehmen - allerding eventuell in späteren Generationen wieder an den Rest „angeschlossen“ werden können. Bei der sexuellen Fortpflanzung muss aus zwei Graphen ein Neuer entstehen. Dabei wird, wie häufig bei der Verwendung des genetischen Algorithmus, das Verfahren des Crossing Over aus der Natur angewandt. Dazu werden bei Sims einfach die Knoten der Genotypen, die der Reihe nach gespeichert sind, nacheinander von einem Elternteil übernommen. Ab einem bestimmten „Crossing Over-Punkt“, werden dann die Knoten des anderen Elternteils genommen, es kann dabei auch mehrere solcher Punkte geben. Die Kanten werden genauso einfach übernommen, sie zeigen - relativ - zum selben Knoten innerhalb der Reihe wie bisher. Ungültige Kanten werden durch zufällige Zielauswahl repariert. Daneben hat Sims auch noch eine weitere Methode der Fortpflanzung benutzt. Beim sogenannten „Grafting“ wird zunächst der Graph eines Elternteils komplett übernommen, dann wird eine zufällig ausgewählte Kante mit einem zufällig ausgewählten Knoten des anderen Elternteils verbunden und der Graph um alle jetzt nicht mehr verbundenen Knoten bereinigt. In seinen Experimenten verwendete Sims außerdem eine einfache asexuelle Fortpflanzung, wobei ein neuer Graph einfach durch die Mutation eines alten Graphen entsteht. Die Mutationswahrscheinlichkeit ist dabei allerdings um ein Vielfaches höher als bei der regulären Mutation die überlebende Genotypen erfahren können. Insgesamt kam ein Mix aus diesen drei Fortpflanzungsmöglichkeiten zum Einsatz. Für jeden Genotyp wurde einzeln entschieden wie die Nachkommen erzeugt werden. Dabei wurden 40% asexuell, und je 30% auf eine der beiden sexuellen Arten erzeugt. 2.6 Experimentelle Ergebnisse In [Sim94b] testete Karl Sims, wie oben beschrieben, ob sich spezielle Fortbewegungsarten entwickeln ließen. Im Speziellen untersuchte er, ob sich aus einer zufällig generierten Startpopulation mithilfe des genetischen Algorithmus Kreaturen erzeugen ließen, die laufen, schwimmen, 2 DIE „VIRTUELLEN KREATUREN“ VON KARL SIMS 9 springen oder einer Lichtquelle folgen können. Dazu wurde eine 3D Welt benutzt, in der die erzeugten Kreaturen auf ihre Fitness-Werte hin überprüft werden können. Die Simulation arbeitet in diskreten Zeitschritten und simuliert die neuronalen Netze der Kreaturen, sowie die daraus resultierenden Bewegungen. In einem Schritt der Simulation werden dabei zwei Fortschaltungen der Netze simuliert, damit diese schneller ein Ergebniss liefern können. Da in der 3D Welt auch Reibung, Erdanziehung und - für die Schwimmmodelle - das Verhalten von Flüssigkeit simuliert werden ergibt sich ein realistisches Szenario in dem die Kreaturen bestehen müssen. Nach einer vordefinierten Zeitspanne wird dann überprüft, wie gut die Kreatur die Aufgabe erfüllt hat und auf diese Weise ein Fitness-Wert berechnet. Für die Aufgaben „Laufen“ und „Schwimmen“ wurde dabei einfach die zurückgelegte Distanz für die Berechnung verwendet, bei „Springen“ die höchste erreichte Höhe und bei „Folgen“ die Durchschnittsgeschwindigkeit mit der sich eine Kreatur auf die Lichtquelle zubewegt hat. Daneben wurden einige kleine Tricks verwendete, um spezielle, dem eigentlichen Ziel nicht zuträgliche, „Auswüchse“ zu vermeiden - wie zum Beispiel Kreaturen, die einfach nach vorne umfallen und so eine Strecke zurücklegen. Alles in Allem sind die Ergebnisse aber durchaus erstaunlich, es wurde in allen Aufgabenbereichen eine Vielzahl an verschiedenen Lösungswegen gefunden mit zum Teil sehr naturähnlichen, zum Teil auch sehr technisch anmutenden Kreaturen. Bild 4 zeigt eine kleine Auswahl der entwickelten Kreaturen. Der Schwimmer bewegt sich dabei durch das Rotieren der sechs „Paddel“ vorwärts, während der Läufer sich mit den zwei „Armen“ nach vorne ziehen kann. Abbildung 4: Links eine der erzeugten Kreatur für „Schwimmen", rechts für „Laufen“. Quelle: [Sim94b] 3 3 DIE BEDEUTUNG VON WETTBEWERB IN DER EVOLUTION 10 Die Bedeutung von Wettbewerb in der Evolution Im Zweiten Teil dieser Arbeit soll nun die Bedeutung von Wettbewerb in der Evolution etwas näher beleuchtet werden. Nach einigen grundsätzlichen Erkenntnissen, soll auf die Ergebnisse einer Reihe von Experimenten, die Karl Sims mithilfe des oben vorgestellten Systems durchgeführt hat, eingeegangen werden. 3.1 Wettbewerb in der natürlichen Evolution Wettbewerb ist in der natürlichen Evolution praktisch überall vorhanden. Zunächst ist mit dem „Survival of the fittest“ Prinzip, auch wenn der Name es impliziert, nicht speziell das Bestehen in Wettbewerben gemeint, sondern lediglich das Bestehen im alltäglichen Überlebenskampf, dem eine Spezies ausgesetzt ist. Andererseits ist es aber unrealistisch anzunehmen, dass eine Spezies nur für sich exisitert, oder dass innerhalb dieser Spezies keine Wettbewerbe entstehen. Vielmehr existieren Wettbewerbe in der Natur in allen erdenklichen Situationen sowohl zwischen als auch innerhalb von Spezies. Sei es der Kampf um eine gemeinsame, oftmals sehr knappe, Resource (wie etwa Nahrung), die einen Wettbewerb zwischen Spezies, oder besser, zwischen Individuen erzeugt, oder eine Jäger-Beute Beziehung, die oftmals eine spezielle Art des Wettbewerbs, ein „Wettrüsten“ (engl. arms race) nach sich zieht. Auch innerhalb von Spezies ist mit der geschlechtlichen Fortpflanzen oftmals ein Wettbewerb verbunden, indem sich Individuen das „Recht“ zur Paarung erkämpfen müssen. Man kann also davon ausgehen, dass Wettbewerbe in der natürlichen Evolution eine große Rolle dabei spielen, die Überlebenschance bestimmter Gene zu bestimmen. Mehr noch, Wettbewerbe beleben die Evolution [Daw96], da sie Spezies praktisch dazu zwingen, sich fortzuentwickeln. Änderungen in der Umgebung einer Spezies, sei es durch Änderungen des Biotops, oder durch Änderungen in Form von besser angepassten Konkurrenten erzeugen einen Selektionsdruck, der die Entwicklung einer Spezies fördert. Ändert sich nichts, ist auch die Rate der evolutionären Entwicklung schwächer, da neue Entwicklungen häufig keinen Vorteil besitzen. Das „Wettrüsten“ stellt dabei eine extreme Form des Wettbewerbs dar, indem sich typischerweise zwei Spezies in immer extremeren Weiterentwicklungen gegenseitig zu übertrumpfen versuchen. Beispiele dafür gibt es unzählige, ein sehr bekanntes ist wohl das Beispiel von Gazellen und Geparden, die sich in einem Wettrüsten gegenseitig zu immer neuen Geschwindigkeitsrekorden gedrängt haben, bis letztlich eine obere Schranke erreicht ist, ab der keine sinnvolle Weiterentwicklung mehr erreichbar ist. An diesem Punkt kommen solche Wettrüsten häufig zu einem eher abrupten Ende. Aufgrund der hoch komplexen Interaktion von Lebewesen in ihren jeweiligen Ökosystemen, ist die tatsächliche Wirkung des Wettbewerbs aber nur schwer zu entschlüsseln. In Populationen können sich Strategien entwicklen, um in Wettbewerbssituationen zu bestehen. Diese Strategien unterliegen einer eigenen Dynamik. In [Daw99] findet sich eine Erklärung von „Evolutionär Stabilen Strategien“, die sich in Populationen durchsetzen und auf Dauer halten können, obwohl es nicht die Optimalste aller denkbaren Strategie ist. 3 3.2 DIE BEDEUTUNG VON WETTBEWERB IN DER EVOLUTION 11 Wettbewerb in der künstlichen Evolution Es liegt nahe, die Frage nach der Bedeutung von Wettbewerben auch für die künstliche Evolution zu stellen. Zum Einen wäre es durchaus hilfreich, wenn Wettbewerbe hier, genauso wie in der Natur, die Geschwindigkeit der evolutionären Entwicklung erhöhen würden, zum Anderen findet im genetischen Algorithmus, wie Eingangs erwähnt, sowieso immer schon ein impliziter Wettbewerb statt - nämlich die Bestimmung der Fitness-Werte. Oftmals wäre es nur mit einem relativ geringen Mehraufwand verbunden, diese Bestimmung im Rahmen eines echten Wettbewerbs zwischen Individuen durchzuführen. Eine ähnliche Fragestellung verfolgte auch Karl Sims, als er im Zuge der Entwicklung der virtuellen Kreaturen auch Wettbewerbssituationen untersuchte. Sein Schwerpunkt lag dabei auf der Fragestellung, ob sich durch Wettbewerb „interessantere Verhaltensweisen“ [Sim94a] erzeugen ließen. Seine Idee bestand darin, jeweils zwei Individuen in einer „Arena“ um eine gemeinsame Resource kämpfen zu lassen, in diesem Fall eine Art „Kiste“ die es in Besitz zu nehmen gilt. Mithilfe der Resultate wurde dann der Fitness-Wert eines Individuums bestimmt. Anhand dieses Szenarios können nun einige Details näher erläutert werden. Zunächst muss die Bestimmung des Fitness-Wertes so angepasst werden, dass er der Wettbewerbs-Situation Rechnung trägt. Das bedeutet, dass es nicht nur belohnt werden soll, dass eine Kreatur die Kiste erreicht, sondern dass es genauso belohnt werden soll, wenn eine Kreatur es schafft, seinen Gegner von der Kiste fernzuhalten. Da der Fitness-Wert aus der Distanz der Kreaturen zu der Kiste bestimmt wird, kann dieses Ziel leicht durch eine geeignete Verrechnung der beiden Werte miteinander erreicht werden, auch wenn aus diesem Wert noch nicht hervorgeht, ob es der Verdienst der einen Spezies oder die Unfähigkeit der anderen Spezies war. Als nächstes gibt es natürlich eine Reihe verschiedener Möglichkeiten, den Wettbewerb durchzuführen. Bei der herkömmlichen, nicht Wettbewerbs-basierten Auswertung gibt es nur eine sinnvolle Lösung, nämlich alle Individuuen nacheinander zu evaluieren, bei einem Wettkampf gibt es hingegen verschiedene sinnvolle Lösungen. Zunächst können Wettbewerbe innerhalb einer Spezies stattfinden, oder man kann die Population in zwei Spezies aufteilen (also in 2 disjunkte Teilmengen, deren Genotypen nur untereinander verpaart werden können) und Wettbewerbe nur zwischen diesen stattfinden lassen. In den Experimenten von Karl Sims ging es nicht darum Spezialisierungen zu erzeugen - alle Individuuen sollten von beiden Seiten der Arena aus starten können, und beide hatten das gleiche Ziel. In einer asynchronen Situation, wo sich die Ziele der Wettkämpfer unterschieden (man denke an eine Jäger-Beute Situation), könnte der Ansatz über zwei Spezies bei der Entwicklung hilfreich sein, da so auf beiden Seiten eine Spezialisierung eintreten kann. Natürlich können auch mehr als zwei Spezies verwendet werden. Unabhängig von der Anzahl der Spezies bleibt aber das Problem, nach welcher Strategie man die Wettkämpfe durchführt. Am Gerechtesten ist natürlich ein „Alle gegen Alle“ Wettkampf, wo also jedes Individuum gegen jedes Andere (oder im Falle von zwei Spezies, jedes Individuum einer Spezies gegen jedes Individuum der anderen Spezies) kämpft. Das Problem an diesem Ansatz ist sein enormer (quadratischer) Zeitbedarf. Da das Evaluieren oftmals sowieso schon der aufwendigste Teil der künstlichen Evolution ist, wirkt sich dieser Ansatz besonders stark auf die Laufzeit aus. Daher bietet es sich an, die Anzahl der nötigen Vergleiche zu reduzieren. Andere Möglichkeiten wären, jedes Individuum lediglich in einem einzigen Wettkampf zu testen und den jeweiligen Partner zufällig auszuwählen, oder auch durch ein „Tournament“ aus allen Individuuen einen Sieger zu ermitteln. Die zufällige Partnerwahl reduziert das Problem in beiden Fällen (das Tournament beruht ebenfalls auf einer zufälligen Startanordnung der Wett- 4 DISKUSSION 12 kämpfer) zu linearem Zeitaufwand, allerdings ist die Lösung nicht besonders gerecht und die Ergebnisse können daher verfälscht werden. Das Verfahren, das die „interessantesten“ Lösungen [Sim94a] produzierte war ein Anderes. Bei der „Alle gegen den Besten“ Strategie tritt jedes Individuum gegen das aktuell beste Individuum der Spezies (oder der Gegner-Spezies) an. Das benötigt ebenfalls nur linearen Zeitaufwand und hat den Vorteil, dass relativ gerechte FitnessWerte erzeugt werden, da ein Kampf gegen den „Besten“ im Gegensatz zu einem Kampf gegen einen zufälligen Gegner wesentlich mehr Aussagekraft über die tatsächliche Fitness eines Individuums besitzt. 3.2.1 Experimentelle Ergebnisse Sims beschränkte sich bei seinen Versuchen auf das oben beschriebene „Alle gegen den Beste“ Verfahren. Die verwendete Spielarena ist in Abbildung 5 gezeigt. Die schrägen Linien deuten an, dass die Kreaturen entsprechend ihrer Größe näher an dem Würfel, oder weiter von ihm weg plaziert wurden. Wie schon bei den Versuchen zur Entwicklung der Fortbewegungsarten, wurden einige „Tricks“ angewendet um spezielle, unerwünschte, Strategien (wie das einfache nach vorne Umfallen) zu vermeiden. Dannach wurden, analog zu den vorherigen Versuchen, die 3D Welt und die Kreaturen mit ihren neuronalen Netzen simuliert. Nach 8 Sekunden wurde der Wettkampf beendet, die kürzeste Entfernung der Kreaturen zu dem Würfel gemessen und der Fitness-Wert berechnet. Die meisten Versuche verwendeten dabei eine Evolution mit zwei Spezies. Die Ergebnisse zeigen leider kein besonders klares Bild. In vielen Fällen konnte sehr schnell eine erfolgreiche Strategie entwickelt werden, in anderen Fällen erst nach sehr vielen Generationen. Es gab Fälle in denen die zwei Spezies sich in ihren Fitness-Werten ständig übertrafen und Fälle in denen eine Spezies von Anfang an immer dominierte. Zwei dieser Fälle sind in den Diagrammen in Abbildung 6 dargestellt. Dabei ist der Fitness-Wert der beiden Spezies (der von Sims so normiert wurde, dass er stets zwischen 0.0 und 2.0 lag) über den Verlauf der Evolution abgetragen. Im unteren Diagramm erkennt man sehr schön wie sich ein beständiges hin- und her zwischen den Spezies entwickelt, eine Situation die sehr an ein Wettrüsten erinnert. Trotzdem war es auch bei diesen Experimenten wieder erstaunlich, wie natürlich die entwickelten Kreaturen und ihre Strategien wirkten. Eine immer wieder auftretende, sehr erfolgreiche Strategie war es, Arme zu entwickeln, die den Würfel zur Seite schieben konnten. Aber auch wurmartige Kreaturen, die sich um den Würfel wickeln und sogar Kreaturen die in der Lage sind, dem Würfel, mithilfe von Photosensoren, aktiv zu folgen sind entstanden. Die Endsituationen für zwei Wettkämpfe sind in Abbildung 7 und Abbildung 8 zu sehen. Der Sieger sowie die verwendete Strategie ist dabei offensichtlich. In den meisten Fällen waren die entstandenen Strategien fest, das heißt die Kreaturen verhielten sich immer gleich, unabhängig von dem Verhalten des Gegners. Sims nimmt an, dass man die Entwicklung von Strategien, die ein „reaktiveres“ Verhalten zeigen durch mehr Spezies fördern könnte, da sich alle Kreaturen dann mit mehreren verschiedenen Gegnern messen müssten [Sim94a], was aber natürlich auch wieder einen erhöhten Zeitbedarf für die Austragung der Wettbewerbe nach sich ziehen würde. 4 Diskussion Wie Aussagekräftig sind die Ergebnisse von Karl Sims Arbeit? Zunächst ist dazu zu sagen, dass es Sims nie um grundlegende Forschungsarbeit ging, sondern um ein konkretes Ziel im Bereich 4 DISKUSSION 13 Abbildung 5: Die Arena die für die Wettbewerbe simuliert wurde. Quelle: [Sim94a] der Computergraphik. Daher ist es nicht verwunderlich, wenn man nicht viele grundlegende Erkentnisse aus seinen Experimenten ziehen kann. Der genetische Algorithmus ist bereits vielfältig erprobt und untersucht worden, Sims verwendete ihn lediglich als „Mittel zum Zweck“. Genauso wurde auch die Verwendung von genetischen Sprachen als Genotyp bereits in vielen anderen Arbeiten untersucht. Auch hier ging es Sims mehr darum, seinem Ziel entgegenzukommen und dafür war die Verwendung einer genetischen Sprache unerlässlich. Neu an seiner Arbeit war mit Sicherheit die komplexe Steuerung durch die neuronalen Netze, sowie die konsequente Anwendung des genetischen Algorithmus auf alle Bereiche der Kreatur, so dass sich eine Ko-Evolution von Aussehen und Verhalten einstellen konnte. Es bleibt aber zu bemerken, dass selbst die relativ einfachen Kreaturen, die Sims verwendete bereits einen enormen Rechenaufwand benötigten. Die Experimente wurden auf einer „Connection Machine“ einem hochparallel arbeitenden Rechner durchgeführt und die Algorithmen waren speziell dafür optimiert. Ein System, dass realistische Figuren erzeugt, die so tatsächliche Verwendung in dem Bereich der Computergraphik finden könnten, benötigt natürlich auch einen ungleich höheren Rechenaufwand. Andererseits sind die Fähigkeiten der verfügbaren Rechner immernoch in einem ständigen Fortschritt und daher ist fehlende Rechnenkapazität oft nur eine Frage der Zeit, wenn die grundsätzliche Machbarkeit und Berechenbarkeit, wie in diesem Falle, bereits gezeigt wurde. Über die Bedeutung von Wettbewerb für die künstliche Evolution lassen sich leider nur schwer Aussagen treffen, da entsprechende Vergleiche kaum zu ziehen sind. Anscheinend verstärkt der Wettbewerb die Vielfalt der möglichen Lösungen sowie die Geschwindigkeit der evolutionären Entwicklung. Andererseits fördert Wettbewerb auch das Entstehen von Spezialisierungen, beziehungsweise das Besetzen von „Nischen“ - eine Tendenz die, je nach Situation, nicht immer gewünscht ist. Auch das Wettrüsten zwischen Spezies, so eindrucksvoll es auch erscheinen mag, kann wegen seines explosiven und schwer vorhersagebaren Charakters nur bedingt Vorteile für den Einsatz des genetischen Algorithmus bringen. Auch sind Wettbewerbe nicht in allen Situationen denkbar, in denen der genetische Algorithmus einsetztbar ist, daher ist eine generelle Etablierung von Wettbewerben als Mittel zur Steigerung der Effizienz wohl nicht sinnvoll. Nichtsdestotrotz ist es ein mächtiges Werkzeug das auch außerhalb von bloßer Grundlagenforschung auf dem Gebiet der künstlichen Evolution seine Berechtigung hat. Sobald man allerdings Wettbewerbe in der künstlichen Evolution einführt, führt man zwangsläufig auch mehr 4 DISKUSSION 14 Abbildung 6: Oben die Entwicklung einer dominierenden Spezies, unten die Entwicklung von zwei gleich starken Spezies. Quelle: [Sim94a] Komplexität und daher schlechtere Vorhersagbarkeit in das System ein. Die natürliche Evolution ist ein hoch komplexes System, nicht zuletzt wegen den unendlich vielschichtigen Interaktionen zwischen den beteiligten Lebewesen. In der herkömmlichen Simulation einer Evolution ist keinerlei Interaktion zwischen den Mitgliedern der Population gegeben. Zwar ist eine Vorhersagbarkeit aufgrund der eingebauten Zufälligkeit sowieso schon sehr schwer, aber man kann die Entwicklung der Population und den Ablauf des Algorithmus trotzdem relativ gut überblicken. Die Wettbewerbe bringen, wie oben erwähnt, eine Eigendynamik in das System, die eine Analyse nochmals deutlich erschwert. Sims berichtet in [Sim94a] davon, dass sich die Strategie der Besten oftmals plötzlich änderte und unter den Arbeiten die zitiert werden und die sich mit ähnlichen Probleme befassen, findet sich auch die Simulation des „Gefangenendilemmas“, die R. Axelrod durchführte und deren Ergebnisse für die Erforschung der Evolutionär Stabilen Strategien wichtige Einsichten lieferte (vgl. [Daw99]). 15 LITERATUR Abbildung 7: Eine Kreatur mit Armen. Quelle: [Sim94a] Abbildung 8: Eine alternative Strategie. Quelle: [Sim94a] Literatur [Daw96] Richard Dawkins. The blind watchmaker. W. W. Norton & Company Inc., 1996. [Daw99] Richard Dawkins. The selfish gene. Oxford university press, 1999. [Sim94a] Karl Sims. Evolving 3D morphology and behaviour by competition. In R. Brooks and P. Maes, editors, Artificial Life IV Proceedings, pages 28–39, MIT, Cambridge, MA, USA, 6-8 July 1994. MIT Press. [Sim94b] Karl Sims. Evolving virtual creatures. In Computer Graphics, Annual Conference Series, (SIGGRAPH 1994 Proceedings), pages 15–22, July 1994.