Ein einfacher Einstieg in künstliche neuronale Netze – Einführung in den Aufbau und die Notation von KNN

February 14, 2021
5 min
Machine Learning
Credits to David Schwarzenberg from pixabay.com

Nachdem wir in den vorherigen Artikeln jeweils eine kurze Einführung in die Machine Learning Algorithmen k-Nearest-Neighbor, Support Vector Machine und Decision Trees gegeben haben, befassen wir uns nun mit dem Bereich, der den Meisten in den Sinn kommt, wenn es um Machine Learning geht: künstliche Neuronale Netze (KNN). In diesem Artikel sind wir auf die drei Gründe eingegangen, warum der Bereich des Natural Language Processing in den letzten Jahren so große Erfolge erzielt hat. Diese Gründe waren bessere Modelle, mehr Rechenleistung und größere Mengen an Text. Zwei der drei Gründe sind ebenfalls die Hauptgründe dafür, warum KNN in den letzten Jahren immer häufiger im Bereich des Machine Learning eingesetzt werden: Mehr Rechenleistung und mehr Daten. Denn wenn KNN zwei Sachen benötigen, sind dies viele Daten und viel Rechenleistung.

Eine kurze Geschichte der künstlichen neuronalen Netze

Die grundlegenden Ideen für KNN jedoch bestehen schon seit vielen Jahren und gehen auf die 1940er Jahre zurück. Nachdem die Methoden damals große Begeisterung ausgelöst haben, wurde die Forschung später zunächst eingestellt, da die Ergebnisse nicht mehr vielversprechend waren. Dies lag vor allen an mangelnden Daten und nicht ausreichender Rechenleistung. Ab 2009 erlebten die KNN jedoch wieder einen neuen Hype und die alten Methoden wurden wieder eingesetzt. Die nun verfügbare Rechenleistung und immer mehr Daten sorgten dafür, dass neuronale Netze nun gute Ergebnisse in verschiedenen Bereichen erzielten [1]. Als Pioniere auf dem Gebiet der KNN gelten Yoshua Bengio, Geoffrey Hinton und Yann LeCun [2], die für ihre Arbeiten 2018 den Turing-Preis erhalten haben. Und hier nun das Bild, was den meisten Menschen in den Sinn kommt, wenn sie an KNN denken.

Ein Künstliches Neuronales Netz mit einem Hidden Layer
Künstliches Neuronales Netz mit einem Hidden Layer

Dieses Bild kann variieren, insbesondere was den mittleren Teil betrifft, den Hidden Layer Teil. Dieser kann mal aus mehreren Layern bestehen, oder die einzelnen Layer aus mehr Hidden Units. Was es mit diesen Begriffen auf sich hat, erfahrt ihr in diesem Beitrag.

Für viele sind KNN eine Art Black Box: Man wirft Daten hinein, diese werden verarbeitet und am Ende wird eine magische Vorhersage ausgegeben. Um das Mysterium der KNN aufzulösen, erläutern wir in diesem und den folgenden Artikeln Schritt für Schritt den Aufbau von KNN und wie diese funktionieren. In diesem Beitrag starten wir mit der Notation von künstlichen neuronalen Netzen, da es häufig zu Verwirrungen führt, wenn diese nicht klar definiert ist. Bei der Notation verwenden wir die Notation nach [3].

Die Notation innerhalb eines künstlichen neuronalen Netzes

Basis eines neuronalen Netzes sind Daten. Zum einen benötigen wir Daten als Eingänge (Inputs), zum anderen gibt es Ausgänge (Outputs). Die Gesamtheit der Eingänge wird als X, die Ausgänge als Y bezeichnet. Die Eingänge bezeichnen wir im Folgenden auch als Trainingsdaten.

Ein einzelner Eingang wird als Vektor dargestellt. Angenommen wir möchten mal wieder den Ausfall einer Pumpe auf Basis von Messwerten vorhersagen. Als Messwerte haben wir die Laufzeit, die Drehzahl und die Leistungsaufnahme, also drei Parameter. Dann würden wir unseren einzelnen Eingangsparameter als Vektor mit einer Spalte und drei Reihen darstellen.

Eingangsparameter x als Vektor mit drei Werten

Allgemeiner geschrieben sieht das Ganze so aus, wobei nx die Dimension unseres Vektors, hier drei, darstellt:

x allgemein mathematisch dargestellt

Da für das Training unseres neuronalen Netzes jedoch nicht nur ein einzelnes Trainingsbeispiel verwendet wird, sondern mehrere benötigt werden, schreiben wir die Gesamtheit unserer Trainingsdaten als Matrix.

Gesamtheit aller Trainingsbeispiele x als Matrix

Die Matrix umfasst nun 100 Trainingsbeispiele mit jeweils drei Werten. Die Anzahl der Trainingsbeispiele wird hierbei durch die Anzahl der Spalten, die Anzahl der Parameter pro Trainingsbeispiel als Anzahl der Reihen dargestellt. Die Nummer der Trainingsbeispiele wird auch als m bezeichnet, sodass allgemein gilt:

X mathematisch allgemein dargestellt

Der Ausgang unseres neuronalen Netzes für ein Trainingsbeispiel wird als y bezeichnet. Zu Beginn betrachten wir eine binäre Klassifikation. Unser Modell soll erlernen, ob eine Pumpe ausfällt oder nicht. Dies entspricht einer binären Klassifikation. Unser y kann also zwei Werte annehmen: 0 (Pumpe ok) oder 1 (Pumpe ausgefallen). Allgemein geschrieben bedeutet dies für ein einzelnes Trainingsbeispiel:

y mathematisch geschrieben

Schreiben wir die Gesamtheit aller Ausgänge der Trainingsbeispiele als Matrix wird dies allgemein so dargestellt:

Gesamtheit aller y mathematisch dargestellt

Da es pro Trainingsbeispiel nur ein einziges y gibt, verfügt die Matrix nur über eine Zeile und m (Anzahl der Trainingsbeispiele) Spalten. Wir haben nun also unsere X als Eingangsparameter und unsere Y als Ausgangsparameter definiert. Nun fehlt noch der Wert der Vorhersage. Unser KNN soll auf Basis der Eingangsparameter und der gegebenen Ausgangsparameter die Zusammenhänge zwischen den einzelnen Parametern (Laufzeit etc.) und erfolgten Ausfällen erlernen. Es soll erlernen wie hoch die Wahrscheinlichkeit ist, dass eine Pumpe ausfällt, je nachdem was für Werte die einzelnen Eingangsparameter annehmen. Anders ausgedrückt: Das Ziel ist es die Wahrscheinlichkeit für y = 1 auf Basis von x zu erhalten. Unser vorhergesagtes y bezeichnen wir hierbei als y mit einem Dach (y Dach) oben drauf. Als mathematischer Ausdruck sieht dies wie folgt aus:

y Dach

Jetzt kommt der spannende Teil: Der Bereich im inneren eines neuronalen Netzes.

Die Hidden Layer eines neuronalen Netzes

Hier noch einmal ein Bild eines etwas größeren KNN.

Künstliches neuronales Netz mit zwei Hidden Layern

Im Vergleich zum ersten Bild ist nun ein weiterer Hidden Layer dazugekommen. KNN setzen sich grundsätzlich aus drei Arten an Layern zusammen: dem Input Layer, dem Output Layer und den Hidden Layern. Woher der Begriff Hidden Layer kommt, wird in verschiedenen Quellen unterschiedlich beschrieben. Wir erklären uns es so: Während die Parameter des Input Layers, die Eingänge, und die Parameter des Output Layer, die Ausgänge, bekannt und beobachtbar sind, ist dies bei den Hidden Layern nicht der Fall. In diesen Layern finden die einzelnen Berechnungen statt, und diese sind für den Betrachter meist unsichtbar oder versteckt. Daher der Begriff Hidden (versteckte) Layer. Während die Anzahl des Input und Output Layers immer gleich eins ist, kann die Zahl der Hidden Layer variieren. Je mehr Hidden Layer man hat, desto tiefer ist ein neuronales Netz. Hierher kommt auch der Begriff, der häufig im Kontext von neuronalen Netzen verwendet wird: Deep Learning. Die Hidden Layer setzen sich aus Hidden Units zusammen [4]. Diese Units sind unsere Neuronen. Die zwei Hidden Layer der Abbildung setzen sich jeweils aus fünf Neuronen zusammen. Diese Neuronen sind letztendlich die Black Box eines neuronalen Netzes, denn hier spielen sich die ganzen Berechnungen ab. In unserer Notation werden die Neuronen als a bezeichnet. Ein Neuron hat immer eine höhergestellte und eine tiefergestellte Zahl. Die höhergestellte Zahl, in eckigen Klammern, gibt die Nummer des Layers an. Hierbei muss beachtet werden, dass der Input Layer nicht mitgezählt wird. Diese Notation hat sich so eingebürgert und wird auch meistens eingehalten. Der Output Layer hingegen wird mitgezählt. Das neuronale Netz in der unteren Abbildung wird als Netz mit drei Layern bezeichnet: Zwei Hidden und ein Output Layer.

Die tiefergestellte Zahl ist die Nummer des Neurons im jeweiligen Layer, startend bei eins.

Jetzt haben wir erstmal die notwendige Notation eingeführt, die wir in den späteren Artikeln benötigen. Wir wissen nun was Hidden Layer und Units sind und kennen so die Grundbausteine von neuronalen Netzen. Im nächsten Artikel betrachten wir, was sich innerhalb eines einzelnen Neurons abspielt.

Referenzen
Portrait of Blogger
Maximilian Both
<  Previous
Decision Trees einfach erklärt
Next  >
Der Kern künstlicher neuronaler Netze – Was sich innerhalb eines einzelnen Neurons abspielt

Kommentare