KI-Spielwiese SmileKI: Die KI lernt Binärzahlen
Mit der KI-Spielwiese SmileKI bringe ich einem künstlichen neuronalen Netz bei, Binärzahlen in Dezimalzahlen umzuwandeln.
Dieser Artikel bezieht sich auf das Tool SmileKI aus der KursBegleiter-Tool-Sammlung. Damit kannst du ein kleines neuronales Netz bauen, es mit verschiedenen Input-Arten ansteuern und das Ergebnis mit unterschiedlichen Output-Modulen anzeigen lassen.
Binärzahl in Dezimalzahl umwandeln
Das Modell soll erkennen um welche Zahl es sich bei einer dreistelligen Binärzahl handelt. Es soll also den Input entsprechend klassifizieren.
Schritt 1: Input einstellen
Als Eingang verwende ich ein 3 Pixel breites Bitmap. Ich wähle dazu das Input-Modul S/W-Bitmap, setze die Input-Größe auf 3 und über den Stift die Bitmap-Breite ebenfalls auf 3. Achtung: Schwarz bedeutet hier 0, weiß 1.
Schritt 2: Output einstellen
Da ich die Eingangsdaten klassifizieren möchte, wähle ich das Output-Modul Klassifikation Prozent und stelle die Output-Größe auf 8, denn eine dreistellige Binärzahl kann acht verschiedene Werte haben: 0 bis 7. Die Klassen werden automatisch mit 0 bis 7 beschriftet, ich kann aber über den Stift auch eigene Beschriftungen angeben.
Schritt 3: Neuronales Netz einrichten
Ich belasse die Einstellungen hier zunächst so wie sie sind mit einer versteckten Schicht aus zwei Neuronen.
Schritt 4: Trainings-Daten aufzeichnen
Ich wechsle auf der rechten Seite auf den Tab Daten. Hier ist eine leere Liste von Trainingsdaten zu sehen, die ich jetzt füllen werde.
Ich stelle im Input-Bereich nacheinander jede Binärzahl ein und wähle im Output-Bereich das entsprechende Label aus. Für jeden Datensatz klicke ich +, um ihn der Liste hinzuzufügen.
Die Trainings-Daten ansehen
Schritt 5: Test-Daten
In diesem Beispiel gibt es nur die Trainings-Daten. Es gibt keine anderen Daten, die darüber hinaus gehen würden. Ich kopiere daher die Trainings-Daten in den Bereich der Test-Daten.
Schritt 6: Das Modell trainieren
Ich wechsle wieder auf den Tab neuronales Netz. Dann klicke ich auf Trainieren. Ich setze Wiederholungen auf 1000 und belasse Lern-Rate und Fehlergrenze. Dann starte ich das Lernen.
Ich kann beobachten, wie der Fehler i.d.R. erst schnell runter geht und dann immer langsamer.
Schritt 7: Das Modell testen
Ich kann nun über das Bitmap selbst testen, ob das Modell richtige Ergebnisse liefert. Oder ich klicke Testing und lasse automatisch alle Test-Fälle durchlaufen. Ich bekomme dann eine Zusammenfassung, wie gut das Modell gearbeitet hat.
Schritt 8: Optimieren
Es kann sein, dass der Fehler irgendwie nicht mehr richtig runter geht und einige Zahlen einfach nicht richtig erkeannt werden. Dann kann es sein, dass man in der verdeckten Schicht mal ein Neuron mehr ausprobieren muss. Dazu klicke ich oberhalb vom Graphen die mittlere Schicht an und stelle 3 Konten ein. Danach muss ich den Trainigsvorgang erneut durchführen. Eventuell konvergiert das Netz jetzt besser.
Hier sieht man, dass der richtige Aufbau eines neuronalen Netzes ausschlaggebend sein kann für den Lern-Erfolg.
Zusammenfassung
Hier hat die KI die Eingangssignale klassifizieren gelernt. Ein berechtigter Einwand bei diesem Beispiel ist: Ein System könnte die 8 Zustände problemlos auswendig lernen. Und tatsächlich: Nichts anderes hat das neuronale Netz hier vermutlich auch getan, denn ich habe alle möglichen Eingaben für das Training vorgegeben.
Wenn ein KI-System genau die Eingabe-Ausgabe-Kombinationen »auswendig« lernt, handelt es sich im Allgemeinen um ein sogenanntes Overfitting, wodurch das System nur noch genau für die gelernten Eingaben richtige Ausgaben produziert.
Als Experiment könnte man versuchen, ein paar der Trainingsdaten zu entfernen um zu sehen, ob das System in der Lage sein wird, die Lücken selbst zu füllen…