Neuronales Netz

Als neuronales Netz eines Bots zum Spielen von Snake verwenden wir folgendes Layout:

Dieses neuronale Netz wird in jedem Simulationsschritt ausgewertet, um sich jeweils für eine Richtung zu entscheiden:

Das Ausgangsneuron mit dem größeren Wert entscheidet darüber, in welche Richtung sich die Schlange bewegen soll.

Von zentraler Bedeutung sind aber natürlich die Werte der zwölf Eingangsneuronen. Diese sind so aufgebaut, dass für alle vier Richtungen jeweils drei Informationen bereitgestellt werden:

  1. Abstand zur Wand
  2. Abstand zum Apfel (falls in der Richtung überhaupt vorhanden)
  3. Abstand zum eigenen Schwanz (falls in der Richtung überhaupt vorhanden)

Deutlicher wird dies anhand eines Beispiels:

Die zugehörigen Abstände (und damit die Werte der Eingangsneuronen bzw. Sensoren) sind folgende:

SensorRichtungAbstand zuim BeispielWert des Neurons
1NordenWand9 Felder9/n = 9/16 = 0.5625
2NordenApfelnicht vorhanden1.0
3NordenSchwanz1 Feld1/n = 1/16 = 0.0625
4OstenWand8 Felder8/n = 8/16 = 0.5
5OstenApfel3 Felder3/n = 3/16 = 0.1875
6OstenSchwanznicht vorhanden1.0
7SüdenWand6 Felder6/n = 6/16 = 0.375
8SüdenApfelnicht vorhanden1.0
9SüdenSchwanznicht vorhanden1.0
10WestenWand7 Felder7/n = 7/16 = 0.4375
11WestenApfelnicht vorhanden1.0
12WestenSchwanz4 Felder4/n = 4/16 = 0.25

Wie üblichen müssen die Werte der Eingangsneuronen auf einen Wert zwischen 0 und 1 skalieren werden. Daher teilen wir die Abstände (Anzahl der Felder) jeweils durch die Spielfeldgröße (im Beispiel n = 16). Zudem kodieren wir ein Nichtvorhandensein eines Abstands als 1.

Damit sind die zwölf Werte der Eingangsneuronen bzw. Sensoren in jedem Schritt eindeutig definiert.

Quiz
Training