Künstliches Neuronales Netzwerk (KNN)

Neuronales Netzwerk

Ein Neuronales Netzwerk ist der Funktionsweise eines Gehirns nachempfunden und besteht alleine aus einzelnen Neuronen und ihren Verbindungen untereinander.

Seine Stärken sind die Muster- und Gesichtserkennung. Ein klassischer Computer hat Schwierigkeiten damit, Gesichter von Individuen korrekt zuzuordnen und ist auf vielerlei Bedingungen angewiesen z.B. eine gute Bildqualität, das kennt man vom biometrischen Passfoto. Dieses muss aus einer bestimmten und optimalen Perspektive das Gesicht zeigen. Zusätzlich können Emotionen und damit einhergehende Gesichtsverzerrungen die Erkennungswahrscheinlichkeit negativ beeinflussen. Wir Menschen dagegen, können ein Individuum in allen Gefühlslagen, auch bei Dunkelheit und von der Seite zuverlässig erkennen.

Der Aufbau eines Neuronalen Netzes

Es gib drei verschiedene Typen von Neuronen, auch Units genannt.

Input-Units: Nehmen das Eingangs-Signal entgegen. Im Falle der Bilderkennung wird dort die digitale Signatur (Eingangs Vector) des Bildes angelegt.

Hidden-Units: Sind beliebig viele Schichten von Neuronen zwischen dem Input- und den Output-Neuronen. Die Informationen die dort liegen, sind von außen nicht sichtbar.

Output-Units: Sie liegen außen und repräsentieren das Endergebnis, welches nach außen getragen wird. (Ausgangs Vector)

Das Wissen steckt in den Verbindungen!

Das Entscheidende in einem Neuronalen Netzwerk sind allerdings die Verbindungen zwischen den einzelnen Neuronen. So wie auch im menschlichen Gehirn die Stärke der Verbindungen zwischen den Neuronen ausschlaggebend dafür ist, ob und wie oft sie zünden, so beeinflussen sie auch im Künstlichen Neuronalen Netz die Signalverarbeitung und das Ergebnis. Wie „stark“ eine Verbindung zwischen zwei Neuronen ist, entscheidet eine Wichtung:

Ein positiver Wert bedeutet, dass ein Signal zum Nachbar Neuron ergänzend weitergetragen wird - das Signal wird also stärker.

Ein negativer Wert hemmt den Signalfluss in seiner Stärke zum Nachbar Neuron - das Signal wird hier also schwächer.

Der Wert Null besagt, dass kein Einfluss zwischen den beiden Neuronen besteht - ein Signal würde an der Stelle nicht weitergetragen werden.

Das gesamte Wissen bzw. Können eines Neuronalen Netzes ist also in den Wichtungen der Verbindungen gespeichert. Denn diese entscheiden, wie die Eingangssignale durch das Netz weiterlaufen und was am Ende rauskommt. Damit das Neuronale Netz auch lernen kann und sich verbessert, bestimmen Lernregeln welche Wichtungen verändert werden sollen.

Wie lernt das Neuronale Netzwerk?

Es gibt zwei Grundarten des Lernens, zum einen das überwachte bzw. beaufsichtigte Lernen. Hierbei ist das Endergebnis für bestimmte Testdaten bekannt und der Output des Neuronalen Netzes wird mit dem Soll verglichen. Durch die Unterschiede zwischen Ist und Soll, werden die Gewichte der Verbindungen so optimiert, bis das gewünschte Output erzeugt wurde. Zum anderen gibt es das unbeaufsichtigte Lernen, bei dem kein Soll-Output bekannt ist. Hierbei entscheidet die Ähnlichkeit zu den Gewichten der Inputreize, wie die Gewichtsveränderung innerhalb des Neuronalen Netzes angepasst werden soll.

Um eine Anpassung der Wichtung zu errechnen, werden die Aktivitäten einzelner Neuronen mit einer Aktivitätsfunktion beschrieben. Sie berücksichtigt die Inputsignale aller anliegenden Neuronen, auch Netzinput genannt. Es gibt verschiedene Funktionen (Linear, Linear mit Schwelle, Binär und Sigmoide) die den Aktivitätslevel eines einzelnen Neurons beschreiben. Nehmen wir wieder das Einfachste und zwar die lineare Funktion, d.h. dass der Aktivitätslevel eines Neurons linear abhängig vom Netzinput ist.

Die Art und Weise wie ein Neuronales Netzwerk seine Verbindungsgewichte verändert, also wie es lernt, wird von den entsprechenden Lernregeln bestimmt. Auch hier gibt es wieder viele verschiedene Regeln. Ich stelle nur die einfachste Regel dar, die allerdings ohne Hidden-Units auskommen muss. Die Hebb-Regel vom Psychologen Donald Olding Hebb, dessen Theorie über den menschlichen Geist der Grundstein für die modernen Neurowissenschaften und der Entwicklung Neuronaler Netzwerke ist. Sie besagt, dass die Wichtung zwischen zwei Neuronen dann verändert wird, wenn beide gleichzeitig aktiv sind (positive Verstärkung). Wie groß die Gewichtsveränderung ist, entscheiden drei Faktoren:

  • Der Aktivitätslevel des sendenden Neurons, wird mit dem Aktivitätslevel des empfangenden Neurons multipliziert.
  • Dazu wird ein individuell einstellbarer Lernparameter multipliziert.
  • Das Ergebnis wird dann auf den Wert der Verbindung zuaddiert.

Entscheidungen die getroffen werden müssen

Um die Komplexität und Variationsmöglichkeiten deutlich zu machen, fasse ich hier nochmal zusammen welche Entscheidungen ein Erbauer eines Neuronalen Netzwerkes fällen muss.

Zunächst stellt sich die Frage, ob es Testdaten mit bekanntem Soll-Vector gibt, anhand dessen das Neuronale Netzwerk bewerten kann, ob sein Output korrekt ist oder nicht. Dann je nach Komplexität des Problems, muss entschieden werden ob es Hidden-Units geben soll und in wie vielen Schichten. Dann können die Verbindungen zwischen einzelnen Neuronen in jeweils nur eine Richtung verlaufen, sie können aber auch Rückkopplungen haben, in denen das Empfänger-Neuron ein Feedback seines Aktivitätslevels an das Sender-Neuron zurückliefert. Dann muss man sich für eine Lernregel entschieden, die auch davon abhängt, ob es ein Netzwerk mit Hidden-Units ist und ob es ein beaufsichtigtes Lernen mit bekannten Testdaten ist oder nicht. Die Aktivitätslevel-Berechnung eines Neurons kann anhand verschiedener Aktivitätsfunktionen stattfinden. Außerdem müssen die Schwellwerte, ab wann eine Trainingsphase als abgeschlossen gilt, und der Lernparameter mit Bedacht gewählt werden. All diese Entscheidungen muss ein IT-Architekt treffen um ein bestimmtes Problem zu lösen.

Da stellt sich einem die Frage, wie man die perfekte Kalibrierung eines solchen Netzes findet? Es beruht auf der Erfahrung des Erbauers und der Kategorisierung des zu lösenden Problems. Das sind im Übrigen genau die Stärken eines Künstlichen Neuronalen Netzwerkes! Und siehe da, schon kommt Google auf die Idee, eine KI darauf zu trainieren Neuronale Netze zu entwerfen. Der erste Erfolg ist ein Neuronales Netzwerk zum Erkennen von menschlicher Sprache. Bei gleicher Aufgabenstellung hat die KI von Google ein effizienteres Netz entwickelt als die menschlichen Gegenspieler.

Das sind natürlich alles noch Anfänge, aber sie sind bereits geschehen und dies ist der erste Schritt das Ruder aus der Hand zu geben, denn die Ergebnisse, bzw. die Entscheidungsgrundlage der KI, die KI’s entwirft, kann nicht nachvollzogen werden. D.h. wir werden uns eines Tages darauf verlassen was eine KI entscheidet, da wir keine Chance haben zu verstehen, warum ein Neuronales System auf ein bestimmtes Ergebnis kommt.

Punkte-Klassifizierung durch eine eigens entwickelte Künstlich Intelligenz (KI)

Hier könnt ihr eine KI einmal live ausprobieren und testen. Anhand eurer Punkte die ihr in dem unteren Feld platziert, wird die KI sie in 2 Klassen unterteilen und diese farblich einfärben. Das Netzwerk lernt unbeaufsichtigt, das Bedeutet es muss selbst herausfinden welche Punkte zu welcher Klasse gehören. Denn es hat keine Testdaten mit der bereits vorhandenen Klassifizierung, die dem Netzwerk dann bei jeden Trainingsdurchlauf richtig oder falsch als Feedback geben. Es lernt alleine aus den vom Benutzer erstellten Punkten die zum Zeitpunkt des Trainierens auf dem Feld existieren.

Als Orientierung erstellt einfach 2 räumlich von einander getrennte Punktewolken mit ca. 20 Punkten pro Wolke durch klicken in das Feld. Dann benutzt den 1. Button zum Trainieren des Netztes. Anschließend könnt ihr auf dem 2. Button die Punkte durch das trainierte Netz bewerten lassen. Viel Spaß!