Neuronale
Netzwerke in a
Nutshell

Spricht man von neuronalen Netzen in der IT, sind meist künstliche neuronale Netze, kurz kNN gemeint, welche vom menschlichen Gehirn inspiriert sind. Dieser kNN stellen eine Form des maschinellen Lernens dar und dadurch lässt sich eine ganze Reihe an Problemstellungen computerbasiert lösen.

Doch wie kann man sich so ein Modell vorstellen, welches auf unserem Gehirn basieren soll?

Einfach gesagt, ist es ein Netz aus Neuronen und Kanten. Diese Neuronen werden in mehreren Schichten zusammengefasst, und zwar in Input Layer, Hidden Layer und Output Layer. Die Neuronen der unterschiedlichen Schichten sind mit Kanten miteinander verbunden. Die Neuronen im Input Layer nehmen, wie der Name bereits vermuten lässt, Informationen auf. Diese Information kann je nach Modell etwa ein Bild oder eine Datenreihe von verschiedenen Messwerten sein.

Die Information wird dann durch die Neuronen im Hidden Layer durchgeschickt, welches mit dem Lernprozess eines menschlichen Gehirns verglichen werden kann, jedoch viel langsamer und ressourcenaufwendiger.

Die Neuronen im Output Layer geben die Informationen schlussendlich als Ergebnis weiter. Der Output kann verschiedene Formen, je nach Art des kNN, annehmen. Es gibt Binäre Outputs von 0 oder 1, ergo ja oder nein. Oder aber auch Outputs wie ein bestimmtes „Label“ sprich eine Kategorie, welcher die Input-Information angehören soll. Noch ein Beispiel wäre eine konkrete Vorhersage eines Wertes basierend auf den vorherig gelernten Werten.

Ein künstliches neuronales Netz versucht also mit Lernmaterial, welches beispielsweise in Form von Bildern, welche mit einem Label versehen sind, ein Konzept oder Modell zu erlernen. Mithilfe dieses Modells sollen anschließend Werte vorhergesagt oder etwas in eine Kategorie eingeordnet werden. Es wird im Vorhinein trainiert – das heißt es lernt – um später dann einen möglichst korrekten Output zu liefern.

 

Wie lernt dieses künstliche neuronale Netz aber nun?

Hier kommen die Kanten des kNN ins Spiel. Eine Kante verbindet zwei Neuronen aus zwei verschiedenen Layers, oder auch je nach Art des kNN innerhalb eines Layers, miteinander. Dabei hat jede Kante ein eigenes Gewicht, welches man sich als eine positive oder negative Zahl vorstellen kann. Dieses Gewicht gibt vor, wie der Wert aus dem vorherigen Neuron an das nächste Neuron weitergegeben wird. Wird daher etwas mit 0 gewichtet, so hat der zugehörige Eingabewert keinen Einfluss auf den Output.

Als Beispiel nimmt man ein neuronales Netz, welches zwischen Hund oder Katze aufgrund von Bildern entscheiden soll. Damit kann ein Netz anhand eines Identifikators, welcher etwa spitze Ohren darstellt, selbstständig erlernen, ob es sich um eine Katze handelt. Dementsprechend würden somit die Pixel, welche sich bei eher spitz zulaufenden Ohren finden, hoch gewichtet werden, während rund zulaufende Ohren niedrig gewichtet werden. So verändern sich die Gewichte während des Trainings.

Womit die Frage nun aufkommt: Mit welchen Gewichten startet man denn?

Das ist immer eine sehr schwierige Frage und fast schon eine Wissenschaft für sich. Die allgemeine Herangehensweise bei der Initialisierung eines kNN ist, dass die Gewichte zufällig, aber gleichverteilt und mit einem Mittelwert von 0 verteilt werden. Also gibt es positive und negative Gewichtungen.

Wird ein neuronales Netz trainiert, wird der Input genutzt um nach und nach die Gewichte der einzelnen Kanten zu definieren, während in den Neuronen die Zwischenergebnisse gespeichert werden. Demnach nutzt das kNN den Input, multipliziert diesen mit dem Gewicht der Kanten, speichert das Zwischenergebnis im Neuron und gibt dieses Ergebnis dem nächsten Gewicht weiter, bis es im Output Layer ankommt. Dieser Prozess nennt sich Forward Propagation.

Nun ist also die Information durch das künstliche neuronale Netz durchgerauscht, doch wie verändern sich die Gewichte?

Dafür wird der Output genutzt, beispielsweise das Label, welches dem Bild vom neuronalen Netz zugewiesen wurde. Dieses wird mit dem ursprünglichen Label, mit welchem das Bild versehen war, verglichen, um einen Fehler festzustellen. Die Information, wie „falsch“ das Ergebnis war, wird dann rückwärts durch das Netz geschickt, um daraus zu lernen, sprich die Gewichte anzupassen. Dieser Prozess nennt sich Back Propagation, ist aber für diesen Beitrag zu umfangreich, um näher darauf einzugehen.

Allgemein kann gesagt werden, dass das kNN versucht die Gewichte so zu justieren, dass am Ende im Output Layer der korrekte Vorhersagewert, wie etwa das Label eines Bildes erreicht wird.

Wozu können diese künstlichen neuronalen Netze nun eingesetzt werden?

Es gibt verschiedene Arten von kNN, etwa welche zur Bilderkennung (Convolutional Neural Networks, CNN) oder welche zur Analyse von Sprache (Recurrent Neural Networks) genutzt werden können. Spezielle Arten von kNN können auch Fehlern in Bildern beheben (Denoising Autoencoder).

Generell können mithilfe von künstlichen neuronalen Netzen unterschiedliche Problemstellungen in den Bereichen der Statistik, Informatik und Wirtschaft umgesetzt werden. Eigentlich sind wir bereits von kNN umgeben. Alleine wenn wir unser Smartphone mit Face ID entsperren, so geschieht dies mithilfe eines kNN welches zuvor auf genau unser Gesicht trainiert wurde.

Quellen:

  • https://datasolut.com/neuronale-netzwerke-einfuehrung/

  • https://datadrivencompany.de/kuenstliche-neuronale-netze-und-deep-learning-einfach-erklaert/#Einfach_erklart_Ein_kunstliches_neuronales_Netz_lernt_abstrakte_Konzepte

Lisa Rost

Studentin Data Science an der FH St. Pölten