Evolutionäre Algorithmen | 28.07.2009
Die Gewichtsfaktoren der neuronalen Verknüpfungen sind zunächst reine Zufallswerte, d.h. die Bewertungen der neuronalen Netze sind am Anfang ebenfalls rein zufällig. Die Optimierung der Gewichtsfaktoren erfolgt durch einen evolutionären Prozess. Hierzu wird zunächst eine Generation von 20 Programmen mit zufälligen aber jeweils unterschiedlichen neuronalen Gewichtsfaktoren erzeugt. Jedes Programm spielt nacheinander gegen 10 zufällig ausgewählte Gegner und zwar 5 Mal mit den weißen Figuren und 5 Mal mit den schwarzen. 10 der erfolgreichsten Programme werden dann als Elterngeneration für Tochterprogramme verwendet, wobei die neuronalen Gewichtsfaktoren jeweils um ihren Ausgangswert geringfügig verändert werden (Mutation). Nach einer Selektion der besten Tochterprogramme werden daraus wieder Programme der nächsten Generation erzeugt und so weiter. Insgesamt wurden 50 Generationen durchgerechnet, die eine Gesamtrechenzeit von 36 Stunden auf einem Computer mit einem 2,2 GHz Celeron Prozessor und 128 MB RAM erforderten.
Die Spielstärke eines Schachspielers wird nach der internationalen Schach-Organisation USCF, FIDE nach Punkten angegeben. So entspricht z.B. eine Punktzahl von 2000 bis 2199 einem Experten, der Bereich von 2200 bis 2399 einem Meister und der Bereich ab 2400 einem Großmeister. Die besten kommerziellen Schachprogramme erreichen Spielstärken um 2800. Vor der Optimierung (d.h. ohne effektive Wirkung der neuronalen Netze) erreichte das oben beschriebene Programm eine Spielstärke um 2000. Nach der Optimierung war die beste Variante um etwa 400 Punkte besser und erreichte somit das Niveau eines Großmeisters.
Dieses Beispiel zeigt eindrucksvoll, wie effektiv eine Kombination von neuronalen Netzen und einem evolutionären Algorithmus sein kann. Zu beachten ist hierbei, dass die Zahl der in diesem Beispiel verwendeten Neuronen ausgesprochen klein ist (ca. 500). Mit einer größeren Tiefe der neuronalen Netze kann die Leistungsfähigkeit des Programms sicher noch weiter gesteigert werden. Ein wesentlicher Punkt des Verfahrens ist, dass die Leistungsfähigkeit des Programms die Fähigkeiten des Programmierers zur Lösung eines bestimmten Problems weit übersteigen kann. Auf der anderen Seite bleibt dem Programmierer weitgehend verborgen, was das Programm eigentlich treibt. Durch das Verfolgen der neuronalen Gewichtsfaktoren wird er z.B. kaum seine eigenen Fähigkeiten im Schachspielen verbessern können.
Damit ist gezeigt, dass die Gesetze der Evolution tatsächlich in der Lage sind, ohne einen intelligenten Schöpfer, Intelligenz zu erzeugen bzw. zu verbessern. Das Argument der Kreationisten ist damit widerlegt. Der Mensch ist (mit an Sicherheit grenzender Wahrscheinlichkeit) das Produkt von Naturgesetzen und dem reinen Zufall.
Bernd Vowinkel
Quelle:
Das Programm ist hier stark vereinfacht beschrieben. Die Originalveröffentlichung ist hier zu finden:
Fogel, D.|B., Hays, T.|J., Hahn, S.|L., Quon, J., A Self-Learning Evolutionary Chess Program, Proceedings of the IEEE,Vol.92, No.12, Dezember 2004, S. 1947–1954