Wie Computer lernen können zu denken. Eine Einführung in neuronale Netze mit praktischen Beispielen aus meinen Projekten.
Grundlagen
Ein neuronales Netz ist ein Computermodell, das vom menschlichen Gehirn inspiriert ist. Genau wie unser Gehirn aus Milliarden von Neuronen besteht, die miteinander verbunden sind, besteht ein künstliches neuronales Netz aus vielen kleinen Recheneinheiten.
Diese "künstlichen Neuronen" sind in Schichten organisiert und lernen durch Anpassung ihrer Verbindungen. Je mehr Daten sie sehen, desto besser werden sie darin, Muster zu erkennen und Vorhersagen zu treffen.
Das Besondere: Man programmiert nicht explizit, WAS das Netz tun soll, sondern es lernt selbstständig aus Beispielen!
Architektur
Die Eingabeschicht empfängt die Rohdaten. Bei einem Bild wäre das jeder einzelne Pixel, bei einem Spiel wie FlappyBird die Position des Vogels und der Röhren.
Die versteckten Schichten sind das "Gehirn". Hier werden komplexe Muster erkannt und Zusammenhänge gelernt. Je mehr Hidden Layers, desto komplexere Probleme können gelöst werden.
Die Ausgabeschicht liefert das Ergebnis. Bei FlappyBird: "Springe" oder "Nicht springen". Bei Bilderkennung: Die erkannte Kategorie mit Wahrscheinlichkeit.
Training
Die Eingabedaten werden durch das Netzwerk geschickt. Jedes Neuron berechnet seinen Output basierend auf den Inputs und seinen Gewichten. Am Ende kommt eine Vorhersage heraus.
Die Vorhersage wird mit dem tatsächlichen Ergebnis verglichen. Der Unterschied ist der "Fehler". Je größer der Fehler, desto mehr muss das Netzwerk noch lernen.
Der Fehler wird rückwärts durch das Netzwerk propagiert. Dabei wird berechnet, welche Gewichte wie stark zum Fehler beigetragen haben.
Die Gewichte werden so angepasst, dass der Fehler kleiner wird. Dieser Prozess wird tausende Male wiederholt, bis das Netzwerk gute Vorhersagen macht.
Praxis
Eine selbstgeschriebene Neural Network Library in C++. Von Grund auf implementiert, um die Mathematik hinter neuronalen Netzen wirklich zu verstehen.
Ein neuronales Netz lernt selbstständig FlappyBird zu spielen. Durch genetische Algorithmen werden die besten "Vögel" ausgewählt und ihre Strategien weitervererbt.
Schau dir den Code auf GitHub an oder folge mir für mehr Projekte rund um Machine Learning und Elektronik.