Wie man Schrauben erkennt
Als nächstes wollen wir uns ein einfaches, fiktives Anwendungs-Szenario ansehen, um zu verstehen, wie man KI-Systeme - und speziell Neuronale Netze - zur Lösung von Problemen einsetzt. Dazu sei vorab gesagt, dass das Szenario sehr einfach ist und es auch Methoden gibt, wie man das vorgestellte Problem ohne Neuronale Netze lösen kann
Das Szenario
Es soll eine Maschine entwickelt werden in der zwei Arten von Schrauben sortiert werden, die sich nur durch ihre Länge unterscheiden. Dazu werden die Schrauben einzeln auf eine weiße, von unten beleuchtete Platte fallen gelassen. Je nach Länge der Schraube soll die Platte anschließend nach links oder rechts gekippt werden, damit die Schraube in den entsprechenden Sammelbehälter fällt.
Für die Ermittlung der Länge wird von einer senkrecht über der Fläche montierten Kamera ein Bild gemacht. Ein solches Bild ist rechts zu sehen. Durch den hohen Kontrast ist es sehr leicht möglich die Bounding Box der Schraube in dem Bild zu ermitteln, d.h. ein zu den Bildkanten paralleles Rechteck, dass die Schraube möglichst eng umschließt. ein solches Beispiel ist im unteren Bild zu sehen. Für das weitere Vorgehen benötigt man die Breite und Höhe dieser Bounding Box.
Das Problem
Um unser Problem zu lösen, benötigen wir eine Funktion , die die Breite und die Höhe der Bounding Box als Argumente erhält mit:


Ein erster Blick auf die Daten
Um ein Gefühl für die Daten zu erhalten, wurden eine Reihe von Aufnahmen gemacht, die Breite und Höhe der Boundingbox ermittelt und protokolliert ob es sich um eine kurze (laenge = 0) oder lange (laenge=1) Schraube handelt.
Um ein paar Symmetrien auszuschließen wurde außerdem
Eine einfache Lösung
Betrachtet man den Scatter Plot, kann man sofort eine Lösung für unser Problem ermitteln. Welche?
Aber wir wollen aus Prinzip ein Neuronales Netz verwenden (um sagen zu können, dass wir es mit KI gelöst haben).
Die Trainingsdaten
Um die Daten für das Training eines Neuronalen Netzes aufzuarbeiten, ist es günstig, dass wir die Input-Werte auf den Zahlenbereich von -1 bis 1 normieren. Das liegt einfach daran, dass der Computer in diesem Wertebereich am genauesten Rechnen kann. Größere Werte und das Verrechnen von großen und kleinen Zahlen, führen aus technischen Gründen zu größeren Ungenauigkeiten. (Das hängt im Wesentlichen damit zusammen, dass wir nur eine beschränkte Anzahl von Bits pro Zahl verwenden).
Betrachtet man alle Werte für die Breite und Höhe, sieht man, dass sie alle zwischen 1327 und 2307 liegen. Wir runden diese obere und untere Grenze etwas ab- bzw. auf und verwenden das Intervall von 1200 bis 2500.
Eine kurze Frage
Warum nehmen wir eine etwas kleinre untere und eine etwas größere obere Grenze?
Mit diesen beiden Grenzen Normieren wir die Werte der Datensätze nach der folgenden Formel:
Das Neuronale Netzwerk
Als nächstes legen wir das neuronale Netz fest. Es benötigt zwei Inputs und einen Output. Außerdem verwenden wir eine versteckte Schicht mit vier Neuronen. Diese Zahl ist ziemlich beliebig gewählt. Dabei sollte man darauf achten, dass es nicht zu wenige und auch nicht zu viele Neuronen sind.
Nimmt man zu wenige Neuronen kann das neuronale Netz unter Umständen gar nicht unsere Zielfunktion lernen (siohe XOR). Sind es zu viele Neuronen, dauert das Lernen unter Umständen viel länger.