Return to site

Neuronale Netze

Wie vom Gehirn inspirierte Algorithmen komplexe Funktionen lernen

· ML Algorithmen

Einleitung

Neuronale Netze, genauer Künstliche Neuronale Netze, sind ein Machine Learning Verfahren, das sich an der Struktur unseres Gehirns bzw. der Struktur von Biologischen Neuronalen Netzen orientiert. In den 50er Jahren fanden sie erstmals Anwendung in der Finanzbranche und sind sowohl für Regressions- als auch für Klassifikationsprobleme geeignet.

Künstliche Neuronen

Neuronen bilden die atomare Einheit, aus der Neuronale Netze aufgebaut sind, und sind in Aufbau und Funktion ziemlich simpel. Ein Neuron hat Eingänge (Inputs), die gewichtet addiert werden. Aus der Summe der Eingänge wird mit Hilfe einer sogenannten Aktivierungsfunktion das Ergebnis (Output) des Neurons errechnet. Dieses Ergebnis wird an andere Neuronen weitergegeben, die auf die gleiche Weise funktionieren.

So entsteht ein Netz aus Neuronen, die Neuronen sind dabei in Schichten organisiert. Es gibt eine Eingangsschicht und eine Ausgangsschicht, dazwischen befinden sich sogenannte Hidden Layers, also versteckte Schichten. Ist in dem Netz eine Schleife vorhanden, sprechen wir von einem Recurrent Neural Network, andernfalls von Feed Forward Neural Networks.

Beispiel: Bildklassifizierung

Wie ein Neuronales Netz zu einem gegebenen Input einen bestimmten Output erzeugt, wird über die Gewichtungen der Eingänge definiert. Nehmen wir als Beispiel ein Neuronales Netz, das handgeschriebene Ziffern klassifizieren soll. Um ein solches Netz zu trainieren gibt es den bekannten MNIST Datensatz, der tausende Bilder von handgeschriebenen Ziffern mit Beschriftung enthält. Liegt ein Bild einer handgeschriebenen Neun in der Auflösung 20 Pixel mal 20 Pixel vor, so besteht das Bild insgesamt aus 400 Pixeln, die alle einen Graustufenwert beinhalten. Diese 400 Graustufenwerte bilden die Eingangsschicht unseres Netzes. Jeder dieser Werte wird an alle Neuronen der nächsten Schicht weitergegeben. Dies geschieht jedoch gewichtet, und diese Gewichte werden während des Trainings angepasst, um einen gewünschten Output zu erzeugen. Nehmen wir an, die zweite Schicht hat 10 Neuronen, so ergeben sich insgesamt 400 mal 10, also 4000 Gewichtswerte, die angepasst werden können.

Gradient Descent

Es stellt sich die Frage, wie die Gewichte im Trainingsverlauf angepasst werden. Intuitiv wird die Ausgabe des Netzes mit dem gewünschten Label verglichen. Der beobachtete Fehler der Vorhersage wird dann rückwärts durch das Netz propagiert und die Gewichte Schicht für Schicht angepasst. Mathematisch gesehen sind die Eingangswerte Variablen einer Funktion und die Gewichte Parameter. Die Gewichte werden anfangs zufällig gewählt, wodurch das Neuronale Netz eine zufällige Ausgabe erzeugt. In Abhängigkeit davon, ob das Netz eine richtige Vorhersage trifft oder nicht, werden die Gewichte solange angepasst, bis das Netz auf den Trainingsbeispielen die richtigen Vorhersagen trifft.

Vor- und Nachteile

Neuronale Netze sind in ihrer Struktur sehr flexibel und haben den Vorteil, dass sie komplexe Zusammenhänge erlernen können. Deshalb eignen sie sich gut für Aufgaben, bei denen "Intuition" gefordert ist, z.B. Bilderkennung. Dies erfordert jedoch viele Trainingsdaten, weshalb bei kleineren Datenmengen einfachere Machine Learning Verfahren von Vorteil sind.
Außerdem sind Neuronale Netze intransparent, d.h. sie geben keine Auskunft über den Weg der Entscheidungsfindung. Um den Entscheidungsfindungsprozess greifbar zu machen, werden funktionierende Neuronale Netze beispielsweise dazu verwendet, Trainingsdaten für einen Entscheidungsbaum zu erzeugen. Dieser Entscheidungsbaum hätte die gleiche Vorhersagefunktion, wäre wahrscheinlich nicht so genau, aber würde erklären, wie das Neuronale Netz seine Vorhersage trifft.

Genau wie andere Verfahren kann es bei Neuronalen Netzen zu Overfitting kommen. Beobachtet man das Training des Netzes jedoch sorgfältig, kann das Training einfach abgebrochen werden, sollten sich die ersten Anzeichen von Overfitting zeigen.

Heutzutage können Neuronale Netze auch ohne ein tiefgehendes mathematisches Verständnis implementiert werden. Die bekanntesten Frameworks sind TensorFlow und SciKit Learn. Mehr zu diesen Tools erfahren Sie auch in unserer Übersicht.

All Posts
×

Almost done…

We just sent you an email. Please click the link in the email to confirm your subscription!

OKSubscriptions powered by Strikingly