Deep Learning Cars
Eine 2D Simulation, in der Autos, unter der Verwendung von Neuronalen Netzwerken und einem Evolutionären Algorithmus, von selbst lernen sich durch einen Parkour zu manövrieren. Der gesamte Quellcode dieses Projekts ist Open-Source und auf meinem Github Repository zu finden.
Beschreibung
Zu Anfang einer jeden Generation werden 20 Autos erzeugt. Jedes dieser Autos hat sein eigenes Neuronales Netzwerk, welches die "Intelligenz" des Autos ausmacht. Ebenso haben die Autos 5 nach vorne gerichtete Sensoren, welche die Distanz zu Hindernissen abtasten und als Input für das Neuronale Netz dienen. Wenn ein Auto eine Wand berührt stirbt es.
Sobald alle Autos gestorben sind, wird eine neue Generation mit Hilfe eines Evolutionären Algorithmus' geschaffen. Die "Gene" der zwei Autos mit der besten Fitness werden gekreuzt und 20 neue "Kinder" werden geboren. Zusätzlich werden diese Kinder noch leicht mutiert. Schlussendlich versuchen diese Kinder wieder den Parkour zu durchqueren.
Die Fitness eines Autos wird durch dessen Fortschritt im Parkour berechnet. Die "Gene" eines Autos sind die Gewichtungen des Neuronalen Netzwerks. Die Neuronalen Netzwerke sind einfache Feed-Forward Netzwerke und bestehen aus 5 Input-Nodes, 2 Output-Nodes und 2 versteckten Schichten mit 4 and 3 Nodes.
Display
Die Kreuze vor den einzelnen Autos symbolisieren die derzeitigen Lesungen der Sensoren. Die Kamera folgt immer dem Auto mit der derzeit besten Fitness. Das beste Auto wird in Grün dargestellt, das zweitbeste in Beige.
Im linken oberen Eck werden die derzeitigen Outputs und die derzeitige Fitness des fokussierten Autos dargestellt. Im oberen rechten Eck wird das Neuronale Netzwerk des Ziel-Autos visualisiert. Die breite der Verbindungen zwischen den Nodes symbolisiert die stärke des Gewichts, die Farbe sein Vorzeichen (Grün: positiv, Rot: negativ).
Im linken unteren Eck wird die Zahl der derzeitigen Generation angezeigt.
Entwicklungszeit:
Ende 2016