Aufbau und Funktion von neuronale Netzen
Ein neuronales Netz besteht mindestens aus drei Schichten, siehe die folgende Abbildung. Wir haben immer eine Eingabeschicht, mindestens eine versteckte Schicht und eine Ausgabeschicht. In jeder Schicht muss mindestens ein Neuron vertreten sein, aber in realen Anwendungsfällen sind es natürlich deutlich mehr. In der Eingabeschicht werden die Eingabewerte, beispielsweise die Anzahl der teilnehmenden Personen einer Veranstaltung, in je einem Neuronen verarbeitet. Diese Ausgabe des Neurons der Eingabeschicht ist dann die Eingabe für jedes Neuron in der ersten versteckten Schicht. Dort werden die internen Eingabewerte ebenfalls nach den jeweils eigenen Gewichtungsfaktoren und dem Bias eines jeden Neurons verarbeitet, also relativ viel multipliziert und addiert. In der Ausgabeschicht werden dann die Ausgabewerte aller Neuronen der letzten versteckten Schicht als Eingabewerte verwendet und eine Ausgabe generiert, ebenfalls durch die Verarbeitung mit den Gewichtungsfaktoren und dem Bias der Neuronen der Ausgabeschicht. Je nachdem, wie viele Ausgabegrößen benötigt werden, bestimmt sich auch hier die Anzahl der Neuronen in der Ausgabeschicht. Für unser Beispiel, der Kosten einer Veranstaltung, wird nur ein Neuron benötigt.
Nur wie kann ein solches neuronales Netz denn lernen bzw. sich an verschiedene Fragestellungen anpassen? Wie können also die Zusammenhänge zwischen Eingabe- und Ausgabegrößen erlernt werden? Hier kommen die Gewichtungsfaktoren der Neuronen ins Spiel. Diese werden bei einem neuronalen Netz zu Beginn zufällig initialisiert. Ähnlich wie die Steigung der Geradengleichung aus der linearen Regression anfangs einen zufälligen Wert aufweist und erst dann genauer bestimmt wird, so ist dies auch bei den Gewichtungsfaktoren der Fall. Der Vorgang der Anpassung der Gewichtungsfaktoren nennt sich hierbei das Training des neuronalen Netzes. Mehr zum Trainingsvorgang findet sich im nächsten Abschnitt.
Hier werden wir noch kurz die beiden am häufigsten verwendeten Strukturen der neuronalen Netze vorstellen. Die vorwärts gerichteten und die rekurrenten Netze. Vorwärts gerichtete Netze sind die in der obigen Abbildung dargestellten Netze. Hier wird der Informationsfluss innerhalb des neuronalen Netzen immer weiter vorwärts gegeben, von der Eingabe bis zur Ausgabe. Diese können also mit den nun bekannten Neuronen berechnet und verwendet werden.
Rekurrente Netze weisen dagegen mindestens ein Element auf, an dessen Stelle der Informationsfluss zurückgeleitet wird. Durch diese Rückkopplungen können zeitliche Abhängigkeiten der Daten oder auch Datensequenzen erlernt werden. Bei unserem Beispiel mit den Kosten der Durchführung einer Veranstaltung können beispielsweise steigende Preise über die letzten Jahre durch ein rekurrentes Netz verarbeitet werden. Auch bei Prognosen von beispielsweise Strommarktpreisen ist diese Fähigkeit der Einbindung zeitlicher Abhängigkeiten interessant. Rekurrente Netze können dann, anders als die vorwärts gerichteten Netze, bei gleichen Eingabewerten unterschiedliche Ausgabewerte errechnen, abhängig von den Eingabewerten der zuvorigen Rechnung. In der folgenden Abbildung sind diese rekurrenten Netze ebenfalls dargestellt.
Um rekurrente neuronale Netze verwenden zu können, werden nicht nur die bereits beschriebenen Neuronen verwendet, sondern in den meisten Fällen sogenannte Long Short-Term Memory (LSTM) Zellen, auf Deutsch etwas wie Lange Kurzzeit-Gedächtnis Zellen. Diese LSTM Zellen zeichnen sich dadurch aus, dass der innere Aufbau dieser Zellen im Vergleich zu den Neuronen durch einen Zellzustand erweitert wird. Die Eingabegrößen werden hierbei mit einer Aktivierungsfunktion aktiviert und anschließend mit dem Zellzustand der LSTM Zelle verrechnet. Der Zellzustand kann sich mit jedem Zeitschritt ändern, da dieser abhängig von den vorangegangenen Eingabewerten ist. Der innere Aufbau und die genaue Berechnung des Zellzustands ist etwas komplizierter, in der folgenden Abbildung ist der innere Aufbau zumindest dargestellt, wobei Sigmoid und tanh jeweils die Aktivierungsfunktionen darstellen.