Lass mich am Leben

Following this, the pong paddle went on a mission to destroy Atari headquarters and, due to a mixup, found himself inside the game The Matrix Reloaded.  Boy, was THAT ever hard to explain to him. Computer können nicht lernen. Sie haben Werte, sie haben Speicher, sie haben Regeln. Addieren, subtrahieren, in diesen Gebieten gibt es nichts, was einen Computer übertrifft. Es ist also einfach, mit ihnen einen Weg zu gehen. Ihn mit Eingaben zu füttern, das Rezept zu geben und den Kuchen zu erwarten.

 

Doch es gibt auch Probleme für die gibt es kein Rezept, oder es ist das Ziel, dieses zu entwickeln. Eventuell existieren aber auch ungenaue Eingaben? Zum Beispiel bei der Schrifterkennung, bei der Erkennung von Fingerabdrücken oder bei der Spracherkennung. Nun, das sind alles Probleme, welche wir Menschen einfach lösen könnten. Wir automatisieren sie lediglich, um mit unserem Smartphone sprechen zu können und dem Polizisten das Los zu ersparen, 3 Millionen Fingerabdrücke per Hand zu vergleichen. (Huh? Wurde der Witz überhaupt bemerkt?). Aber vielleicht kann uns der PC ja auch inspirieren? Nicht nur dumm das machen, was ihm gesagt wurde, sondern uns helfen zu entwickeln?

Nun. Tatsächlich tut er das schon.

Lass mich am Leben

Hier möchte ich euch eine kleine Simulation vorstellen. In dieser befinden sich mehrere Zellen, welche lernen, in ihrer Umgebung zurechtzukommen. Ich habe diese Simulation programmiert und die Umwelt so angepasst, dass die Zellen sich so entwickeln, wie ich es gerne hätte. Nun, natürlich haben sie das nicht, ohne es zu wissen, war der PC schlauer. Ausgebootet, nicht von einem intelligenten Algorithmus, sondern von Math#random(). Aber fangen wir vorne an.

Die Simulation könnt ihr euch hier runterladen. Eine Applet-Version gibt es hier. Aus Performance-Gründen empfehle ich die jar-Version. Zum Abspielen müsst ihr Java 1.7 oder höher installiert haben. (src, github)

Wenn man die Simulation laufen lässt, kann man feststellen, dass die Zellen nach kurzer Zeit Strategien entwickeln, an Nahrung zu kommen. Welche das auch immer sein werden, beim Programmieren habe ich ihnen nicht gesagt, dass sie so handeln sollen. Nun, ich habe die Umgebung etwas angepasst. Am Anfang hatten die Zellen noch Fühler, um andere wahr zu nehmen, was allerdings dazu führte, dass eine Zelle die Nächste verfolgte und schließlich alle auf einem Fleck hockten. Dann haben sie gewartet, bis eine starb und sie das Futter nur noch einsammeln mussten. Nun, das mag schlau sein, beim Entwickeln habe ich nicht daran gedacht. Später sind sie dann einfach schnell herumgesaust und haben versucht, in möglichst geringer Zeit mit möglichst viel Fläche in Berührung zu kommen. Erst als ich die Anzahl der Futterpatikel reduziert habe, schien sich die Taktik nicht mehr gelohnt zu haben.

Aber wie kommt das, dass diese Zellen lernen, Futter zu sammeln? Das ist in dieser Simulation geradezu naiv umgesetzt. Durch Selektion und Mutation.

Die Simulation beginnt, indem mehrere zufällige Zellen generiert werden. Zufällig sowohl im Aussehen, wie auch im Verhalten. Sollte eine Zelle versterben, wird geguckt, welche andere Zelle den besten sogenannten Fitnesswert hat. Selbige wird dann geklont und zufällig mutiert zurück in die Simulation gesetzt. Das hat zur Folge, dass eine Zelle welche durch zufällige Mutation besser ist als die Restlichen, sich entwickeln darf. Theoretisch entstehen also immer fittere, immer angepasstere Zellen. Man könnte sagen, der Computer lernt.

Following this, the pong paddle went on a mission to destroy Atari headquarters and, due to a mixup, found himself inside the game The Matrix Reloaded.  Boy, was THAT ever hard to explain to him.