Daten für ein künstliches neuronales Netz vorbereiten
Menschen nehmen Sinneseindrücke etwa durch Augen, Ohren oder die Haut auf. Dabei werden diese in elektrische Impulse umgewandelt, die in unserem Gehirn oder wenn es schnell gehen muss, bereits im Rückenmark verarbeitet werden. Dabei nehmen wir nur einen Teil der Wirklichkeit wahr. So können wir etwa kein Ultraviolett sehen. Auch fallen uns manche Aspekte sehr schnell auf. So kann unser Gehirn Linien und Kanten sehr schnell zu geometrischen Figuren zusammensetzen oder bei einem Blick in die Wolken ein Gesicht erkennen.
Das gleiche Prinzip wollen wir jetzt auf unser Künstliches neuronales Netz übertragen. Dazu erschaffen wir eine schwache künstliche Intelligenz, welche folgende Aufgabe bewerkstelligen soll:
Es soll zu erkennen, ob eine Fläche glatt ist, ein Karomuster besitzt oder von einer Linie durchkreuzt wird.
Du siehst, die Bilder sind alle gleich groß und schwarzweiß. Wäre dem nicht so, müssten wir alle Bilder erst vereinheitlichen. Die Eingabemenge muss nämlich vergleichbar sein. In unserem Fall die gleichen Farben und die gleiche Größe. Unterschiedlich große Bilder könnte man zuschneiden oder erweitern und Graustufen umwandeln. Natürlich gehen auch HD-Fotos in HDR-Farbmodus - dann muss es nur ein anderes neuronales Netz sein.
Aufgabe
Arbeite die Schritte am besten gleich nach. Dazu lädst du dir das Tabellenkalkulationsdokument herunter und kannst dann alle Schritte mitrechnen.
Eingabe
Wir werden für das Beispiel mit dem folgenden Bild arbeiten:
Bild in Zahlenwerten
Dass der Rechner eigentlich keine Bilder kennt, weißt du bestimmt schon. In Wahrheit sind das alles Zahlenwerte, die geschickt auf dem Bildschirm dargestellt werden. Das machen wir hier auch:
Details
Informatiker:innen wundern sich, vielleicht, dass schwarz den Wert 255
und weiß den Wert 0
hat. Normalerweise ist das genau andersrum. Das könnte ich jetzt versuchen, mit dem Ausspruch "Wissen ist Nacht" von Professor Abdul Nachtigaller aus Kapitän Blaubär zu begründen, oder schlicht darauf verweisen, dass es egal ist. Hauptsache wir nehmen immer die gleichen Zahlen für gleiche Farben.
Aufgabe
Wie könnte bei farbigen Bildern verfahren werden?
Bild in normierten Zahlenwerten
Mathematiker:innen normieren gern aus den verschiedensten Gründen. Auch, weil es sich dann entspannter rechnen lässt. Wir setzen hier den größten Wert auf 1
und den kleinsten auf 0
.
zero-padding
Für den nächsten Schritt ziehen wir einen Rahmen um das ursprüngliche Bild und füllen diesen mit 0
auf. Wir ergänzen quasi einen leeren Rahmen.
Filter
Ein Filter reduziert das Bild auf die benötigten Informationen. In unserem Fall möchten wir ja Muster erkennen, daher werden wir mit dem folgenden Filter das Muster noch weiter verstärken:
Denkbar wäre auch, mit einem Filter etwa waagerechte Kanten oder in Musik nur sehr laute Töne zu finden.
Details
Mittlerweile werden Filter beim Lernprozess auch selbst gelernt. Wir gehen hier davon aus, dass diese durch einen Menschen vorgegeben sind.
Feature Map
Hier bilden wir aus dem Bild und dem Filter ein Summenprodukt.
Der graue Mittelpunkt des Filters wird nacheinander auf jedes Pixel des Bildes gelegt und anschließend auf den überlappenden Bereichen das Summenprodukt gebildet.
Legen wir hier den grauen Punk auf den ersten Wert des ursprünglichen Bildes:
Jetzt bilden von den beiden Matrizen des pro Frobenius-Skalarprodukt. Bitte was?! Okay, also wir nehmen die Zahlen, die an der gleichen Stelle stehen, multiplizieren diese und addieren anschließend das Ergebnis. Für die erste Zeile wäre das: 0 * 0 + -0,5*0 + 0,5*0 = 0
. Gar nicht schwer? Gut, mit ein wenig Nachdenken kommen wir darauf, dass wir hier eigentlich nur 1 *-0,5 +1 * -0,5 = -1
rechnen müssen. Das Ergebnis tragen wir dann in der Feature Map an dieselbe Stelle wie in der vorherigen Abbildung.
Das Ergebnis für alle Elemente können wir dann in die Feature Map eintragen. Dabei können wir den Rand aus dem zero-padding wieder entfernen:
Nur Bahnhof verstanden? Stell dir vor, du hast ein Foto vom Strand gemacht und suchst alle roten Regenschirme. Also legst du eine halbdurchsichtige rote Folie darüber und schon siehst du nur noch rote Regenschirme, der Rest ist ganz grau geworden. Das Gleiche haben wir hier mathematisch gemacht.
Aufgabe
Du kannst in dem Tabellenkalkulationsdokument die einzelnen Zellen mit folgender Formel berechnen: =SUMMENPRODUKT(C28:E30;$C$38:$E$40)
. Gib diese in das erste im obigen Screenshot angezeigte Feld ein und ziehe das Feld anschließend wie im folgenden Video zu sehen auf alle weiteren auszufüllenden Felder:
ReLU (Rectified Linaer Unit) Aktivierungsfunktion
Und wir normieren erneut. Diesmal lassen wir alle negativen Werte weg:
Aufgabe
In dem Tabellenkalkulationsdokument kannst du dafür etwa =MAX(0; D45)
für das erste Feld nutzen.
Die grauen Werte sind neu. Die benötigen wir für die nächste Aufgabe.
Max pool
Theoretisch könnten wir mit unserem Eingangsbild schon arbeiten. Das hätte aber den entscheidenden Nachteil, dass schon die Änderung in einem einzigen Pixel ein anderes Bild für den Rechner ergeben würde. Somit hätte man fast nie das gleiche Bild und der Rechenaufwand würde sehr stark steigen. Daher lassen wir Informationen weg (reduzieren quasi die Auflösung). Wir generalisieren also das Bild.
In unserem Fall fassen wir je 4 Pixel zusammen und übernehmen nur den größten Wert:
Flatten
Eigentlich gibt es keinen Grund, das Bild weiterhin zweidimensional darzustellen. Muster haben wir ja bereits mit der Feature Map herausgearbeitet. Also schreiben wir alle Werte in eine Zeile:
Neu hinzugekommen ist die Konstante -1
, welche für die BIAS-Berechnung benötigt wird. Der BIAS wird auch Schwellenwert genannt. Vielleicht erinnert ihr euch noch an das Video, dort wurde erklärt, dass damit eine notwendige Menge zusammenkommen muss, ehe das "Neuron" feuert. Genau das ist auch hier der Fall.