Neural networks

Neuronale Netze (neural networks) sind in der Informatik, Netzwerke aus künstlichen Neuronen. Sie sind als Nachbildung der Neuronenstruktur von menschlichen Gehirnen entwickelt worden.

Grundbaustein aller neuronalen Netzwerke ist das Perzeptron.

Perzeptron

In seiner einfachsten Ausführung ist ein Perzeptron vergleichbar mit einem Logikschalter. Es kann boolesche Werte (1 - wahr, 0 - falsch) als Eingabe aufnehmen und gibt selbst wieder einen booleschen Wert als Ergebnis aus. In der Grafik kann das Perzeptron die logische Und-Verknüpfung zweier Werte ausführen. X und Y sind jeweils Eingaben, das Perzeptron gibt als Ausgabe entweder 1 aus, wenn beide Eingaben 1 sind, andernfalls 0.

Genauer betrachtet, verfügt ein Perzeptron bzw. ein künstliches Neuron über Eingabegewichtungen (w), eine Eingabe Funktion (input function), sowie eine Aktivierungsfunktion g() (activation function). Die Eingabegewichtungen sorgen dafür, dass die einzelnen Eingabewerte unterschiedlich stark in die Ausgabe einfließen können. Dazu wird über die Eingabefunktion eine Summe über alle Eingabewerte mit ihren jeweiligen Gewichtungsfaktoren (w) gebildet. Der errechnete Wert wird der Aktivierungsfunktion übergeben, die beeinflusst, ob das Perzeptron eine Aktivierung weiterleitet.

Quelle: [[RUSS16]](#ref_russ16)

Die Ausgabe der input function an die activation function lässt sich folgendermaßen berechnen:

Wie in der Formel ersichtlich, erfolgt eine Weiterleitung von 1 an die activation function wenn die Summe über die Produkte, zwischen Eingabevektorwert mit dem jeweiligen Gewicht (w), größer bzw. gleich dem Bias Gewicht (w 0,i) ist, andernfalls wird 0 weitergegeben.

Aktivierungsfunktionen

Zuletzt entscheidet die Aktivierungsfunktion über eine Aktivierung des Perzeptrons. Verschiedene Aktivierungsfunktionen eignen sich für unterschiedliche Problemstellungen.

Die Sprungfunktion (step function) wurde bei der ursprünglichen Definition des Perzeptrons eingeführt und leitet eine Aktivierung des Perzeptrons (Ausgabe: 1) ein, sobald die Ausgabe der input function größer 0 ist. In neuronalen Netzen die nicht nur einfache Logikfunktionen berechnen, wird die Sprungfunktion aufgrund ihres extrem kleinen Ergebnisbereiches ( 0 oder 1) praktisch nicht mehr verwendet.

Im weiteren Verlauf wird genauer auf neuronale Netze eingegangen, die sich von der ursprünglichen Definition des Perzeptrons unterscheiden. Diese neuronalen Netze benötigen fein-granulare Aktivierungsfunktionen, damit einzelne Neuronen (Perzeptrons) auch geringe Aktivierungen weiterleiten können. Die Anwendung der Sprungfunktion würde deaktivierte (tote) Bereiche innerhalb des neuronalen Netzes begünstigen. Die meistgenutzen Aktivierungsfunktionen in modernen neuronalen Netzen sind die sigmoide Funktion (links) sowie die ReLU Funktion (rechts).

Limitierung

Ein einzelnes Perzeptron ist fähig die logischen Funktionen AND, OR und NOT abzubilden. Minsky und Papert wiesen 1969 nach, dass die XOR Funktion damit nicht abgebildet werden kann. Auch können nur linear separable Problemstellungen gelöst werden. Für komplexere Klassifizierungen ist ein mehrlagiges Perzeptron nötig, dieses kann erstmals als neuronales Netz bezeichnet werden.

Mehrlagiges Perzeptron

Mit einem mehrlagigem Perzeptron sind komplexere Funktionen berechenbar, in oben stehendem Beispiel die logische XOR Funktion welche mit einem 2-lagigem Perzeptron berechnet werden kann. Es kann hierbei auch von feed-forward neural network gesprochen werden, feed-forward deshalb, weil Aktivierungen nur Richtung Ausgabe weitergereicht werden und diese keine Veränderungen in vorherigen Schichten (layer) des neuronalen Netzes bewirken. Bei neuralen Netzwerken, die mehr als eine verdeckte Schicht (hidden layer) zwischen Eingabe- und Ausgabe-Neuron besitzen, wird die Bezeichnung deep neural network bzw. deep feed-forward network verwendet. Quelle: Fjodor van Veen, Asimov Institute

Fehlerfunktion / Kostenfunktion

Um die Ausgabe eines einzelnen Neurons mit dem gewünschten Ergebnis in der Trainingsphase zu vergleichen und darauf die Gewichte entsprechend anzupassen, bedarf es einer Fehlerfunktion, die eine Bewertung der Abweichung vom Idealwert angibt. Je nach Anwendungsfall eignen sich verschiedene Fehlerfunktionen, im folgenden wird die gebräuchlichste, die quadratische Fehlerfunktion beschrieben.

d: Anzahl Trainingsbeispiele

y(d): Ausgabe des Neurons zu Trainingbeispiel d

t(d): Erwarteter Wert zu Trainingbeispiel d

Die Quadratfunktion sorgt für einen, in jedem Fall, positiven Fehlerwert und somit für eine bessere Vergleichbarkeit, unabhängig davon ob der Ausgabewert unter- oder überschritten wird.

Für den Gesamtfehler eines neuronalen Netzes werden die Fehlerwerte jedes einzelnen Neurons summiert.

Backpropagation

Damit der Einfluss jedes einzelnen Neurons auf den Fehler gemessen und die Gewichte individuell angepasst werden können ist die Fehlerrückführung (back propagation) essentiell für das Training neuronaler Netze.

Ziel ist es, den individuellen Fehler zu verringern, dazu wird durch Differenzierung der Fehlerfunktion (Gradientenabstieg) jedes einzelnen Neurons die Steigung der Fehlerfunktion berechnet und das Gewicht so verschoben, dass die Steigung minimiert wird, bis schließlich nach einigen Iterationen jedes Neuron sein globales Minimum erreicht hat.

Quelle (Abb. bearbeitet): https://rasbt.github.io/mlxtend/user_guide/general_concepts/gradient-optimization/

In folgender Visualisierung wird deutlich wie das globale Minimum für ein Neuron mit zwei Gewichten (zwei Eingabewerten) durch Gradientenabstieg erfolgt.

Literaturverzeichnis

[RUSS16]:Russell, Stuart J., and Peter Norvig. Artificial intelligence: a modern approach. Malaysia; Pearson Education Limited,, 2016.