neuronalen netze

Was sind künstliche neuronale Netze?

Künstliche neuronale Netze bilden die Grundlage der künstlichen Intelligenz. Doch was genau sind neuronale Netze? Wie funktionieren sie?

Wie wurden künstliche neuronale Netzz von den biologischen neuronalen Netzen inspiriert, die in unserem Gehirn zu finden sind? Und wie werden künstliche neuronale in der Praxis eingesetzt um bahnbrechende Leistung im Bereich der KI zu erreichen?

Alle diese Fragen werden nun ausführlich beantwortet.

Inhaltsverzeichnis

  1. Biologische neuronale Netze
  2. Künstliches Neuron
  3. Multilayer Perceptron
  4. Aktivierungsfunktionen
  5. Autoencoder

1. Biologische neuronale Netze

Die Funktionsweise der künstlichen neuronalen Netze ist von der Funktionsweise der biologischen neuronalen Netze inspiriert, die in den Gehirnen von Menschen und Tieren zu finden sind. Die biologischen neuronalen Netzen bestehen aus einer großen Ansammlung von Neuronen, die für die Verarbeitung der Informationen zuständig sind. Im menschlichen Gehirn wird ihre Anzahl auf ca. 86,6 Milliarden geschätzt.

Aufgrund der großen Komplexität der biologischen neuronalen Netze beschränkt sich die folgende Beschreibung hauptsächlich auf die Aspekte, die die Funktionsweise eines künstlichen neuronalen Netzes direkt inspiriert haben. Abb.1 stellt den vereinfachten Aufbau eines biologischen Neurons dar.

Vereinfachte Darstellung eines biologischen Neurons
Abb. 1 Vereinfachte Darstellung eines biologischen Neurons

Der Zellkern eines Neurons ist vom Zellkörper (Soma) umgeben. An dem Zellkörper befindet sich das Axon mit den Axonterminalen und die Dendriten.

Die Dendriten dienen als Eingänge in die Neuronen. Die Axonterminale führen zu den Dendriten anderer Neuronen, berühren diese aber nicht. Zwischen den Dendriten und den Axonterminalen befinden sich die Synapsen, die einen 0 nm bis 50 nm breiten, mit Flüssigkeit gefüllten Zwischenraum bilden. Der Zwischenraum wird auch als synaptischer Spalt bezeichnet.

Dieser dient der Informationsübertragung zwischen den Neuronen. Im Durchschnitt steht ein Neuron über seine Dendriten in Verbindung mit den Synapsen von ca. 14.000
anderen Neuronen.

An der Innenseite der Zellmembran befindet sich eine höhere Konzentration von negativ geladenen Ionen, während an der Außenseite eine höhere Konzentration von positiv geladenen Ionen zu findet ist. Der Unterschied dieses elektrischen Potentials (Membranpotential) beträgt im Ruhezustand ca. -70 mV. Signale, die über die Synapsen in die Neuronen gelangen, verursachen entweder eine Depolarisation oder eine Hyperpolarisation des Membranpotentials.

Aufgrund der Depolarisation kann eine Schwellenspannung von ca. -55 mV überschritten werden. Dies führt zur Auslösung eines elektrochemischen Signals, das als Aktionspotential bezeichnet wird; das Neuron feuert.

Die Aktivität eines Neurons folgt dabei dem sog. Alles-oder-Nichts Prinzip. Unter der Schwelle von -55 mV wird kein Aktionspotential ausgelöst; erst wenn diese Schwelle überbrückt ist, feuert das Neuron. Es existieren keine Zwischenzustände.

Der Informationsgehalt eines Neurons drückt sich in der Frequenz aus, mit der dieser einen Aktionspotential auslöst. Üblicherweise beträgt die Frequenz 250 Hz (maximal 1000 Hz). Der Aktionspotential breitet sich entlang des Axons aus und endet in den synaptischen Verbindungen. Das Aktionspotential löst an den Synapsen die Freisetzung der Neurotransmitter aus. Die Neurotransmitter werden von den Dendriten der benachbarten Neuronen aufgenommen.

Die Aufnahme dieser Trägersubstanz löst ihrerseits eine chemische Reaktion in den benachbarten Neuronen aus. Der Neurotransmitter wirkt sich auf das Membranpotential entweder als hemmend (inhibitorisch) oder verstärkend (exzitatorisch) aus. Die an einem Neuron anliegenden (erregenden und hemmenden) Signale summieren sich auf. Wenn die Schwellenspannung von ca. -55 mV überschritten wird, feuert das Neuron ein Aktionspotential. Der Kreislauf beginnt von vorn.

Nach dem heutigen Stand der Kenntnis sind die Anpassungen der Synapsen zwischen den Neuronen für die Lernprozesse im menschlichen Gehirn verantwortlich. Beim Lernen verändert sich die Stärke der synaptischen Verbindungen zwischen den Neuronen. Die Stärke der Verbindungen nimmt zu, je mehr Signale übertragen werden und umgekehrt. Bestimmte Aufgaben, die erlernt werden, erfordern eine bestimmte Stärke und Anzahl der synaptischen Verbindungen zwischen den Neuronen in einem biologischen neuronalen Netz.

Dieses Konzept des Lernens kann sowohl auf Computer als auch künstliche neuronale Netze übertragen werden und wird im nächsten Abschnitt erläutert.


2. Künstliches Neuron

Der grundlegende Baustein der künstlichen neuronalen Netze sind die künstlichen Neuronen. Es existieren unterschiedliche Architekturen von künstlichen neuronalen Netzen, in denen die Neuronen auf unterschiedliche Art und Weise angeordnet sind.

Jedes künstliche Neuron erhält Eingabedaten und gibt eine Ausgabe zurück. Abb. 2 zeigt eine schematische Darstellung der Funktionsweise eines künstlichen Neuron.

Schematische Darstellung eines künstlichen Neurons
Abb.2 Schematische Darstellung eines künstlichen Neurons.

Das Neuron erhält die Eingabewerte x = (x_1, x_2, …, x_n), die mit den sog. Gewichten w = {w_1, w_2, … , w_n} multipliziert (gewichtet) werden. Die einzelnen Produkte x_i \cdot w_i werden aufsummiert. Auf die Summe der Produkte wird eine nichtlineare Funktion f angewandt. Diese wird auch als Aktivierungsfunktion bezeichnet. Das sogenannte McCulloch-Pitts-Neuron, das 1943 vorgestellt wurde, benutzt als Aktivierungsfunktion eine Rechteckfunktion.


Moderne künstliche Neuronen greifen dagegen auf die Sigmoid Funktion, Tangens Hyperbolicus und Rectified Linear Unit Unit (ReLU) als Aktivierungsfunktion zurück. Das Ergebnis der Aktivierungsfunktion ist der Ausgabewert y des Neurons. Dieser Ausgabewert kann als Eingabewert x_i für das darauf folgende künstliche Neuron verwendet werden. Die Berechnung des Ausgabewertes y für Eingabewerte x = (x_1, x_2, …, x_n) lässt sich wie folgt zusammenfassen:

Die Berechnung des Ausgabewertes y für Eingabewerte x

An dieser Stelle kann eine Parallele zu dem biologischen Neuron gezogen werden. Die Eingabewerte x = (x_1, x_2, … , x_n) stellen die Signale dar, die das biologische Neuron über die synaptischen Verbindungen von anderen Neuronen erhält.

Die Werte der Gewichte w = {w_1, w_2, …, w_n} repräsentieren die hemmende (inhibitorische) oder verstärkende (exzitatorische) Wirkung der Neurotransmitter. Damit bestimmen die Gewichte, wie stark die Neuronen miteinander vernetzt sind.

Beim Lernprozess eines künstlichen neuronalen Netzes verändern sich die Werte der Gewichte und damit die Stärke der Verbindungen zwischen den Neuronen. Ein ähnlicher Prozess wird beim Lernen in einem biologischen neuronalen Netz beobachtet (vgl. Abschnitt 1).


3. Multilayer Perceptron

Wie bereits erwähnt, besteht ein künstliches neuronales Netz aus einer Ansammlung von künstlichen Neuronen. Es existieren diverse Architekturen der künstlichen neuronalen Netze, in denen die Neuronen auf unterschiedliche Art und Weise angeordnet sind, wie z.B. die Boltzmann Maschinen, Hopfield Netze oder rekurrente Netze.

In diesem Artikel wird das Multilayer Perceptron vorgestellt. Die Neuronen in diesem neuronalen Netz sind in parallelen Schichten angeordnet. Typischerweise besteht ein Multilayer Perceptron aus einer Eingabeschicht, einer Ausgabeschicht und einer beliebigen Anzahl von sog. versteckten Schichten, die sich zwischen der Eingabe- und Ausgabeschicht befinden.

Abb. 3 zeigt die Architektur eines Multilayer Perceptrons mit einer Eingabeschicht, welche die Eingabewerte x = (x_1, …, aufnimmt, drei versteckten Schichten und einer Ausgabeschicht, welche die Werte y = (y_1, …, y_4) ausgibt.

Schmematische Darstellung eines Multilayer Perceptrons mit
drei versteckten Schichten
Abb. 4 Schmematische Darstellung eines Multilayer Perceptrons mit
drei versteckten Schichten.

Der Multilayer Perceptron zeichnet sich durch die Eigenschaft aus, dass eine Schicht immer nur mit der nachfolgenden Schicht verbunden ist. Die Informationen fließen dabei nur in eine Richtung: Von der Eingabe zu der Ausgabeschicht.

In der Eingabeschicht werden Informationen/Eingabedaten entgegengenommen. Die Ausgabeschicht gibt das endgültige Ergebnis des neuronalen Netzes aus. Zwischen der Eingabe- und der Ausgabeschicht kann sich eine beliebige Anzahl von versteckten Schichten befnden.

Die Eingabeschicht muss die gleiche Anzahl von Neuronen enthalten wie die Anzahl der Eingabewerte x_i im Eingabevektor x. Alle anderen Schichten des Multilayer Perceptrons können dagegen eine beliebige Anzahl von Neuronen enthalten.

Die Gewichte, die die Verbindungen der Neuronen zwischen zwei Schichten eines Netzes realisieren, werden in einer Matrix zusammengefasst, der sog. Gewichtsmatrix. Die folgende Gewichtsmatrix in Gl. 1 realisiert die Verbindung zwischen zwei Schichten eines neuronalen Netzes mit jeweils n und m Neuronen:

Gewichtsmatrix zwischen zwei Schichten
Gl. 1 Gewichtsmatrix zwischen zwei Schichten.

Die einzelnen Gewichte w_{ij} in der Matrix werden durch Indices charakterisiert. Der Index i steht für das Neuron in der Schicht mit m Neuronen, zu dem die Verbindung führt und der Index j steht für das Neuron in der Schicht mit n Neuronen, von dem die Verbindung ausgeht.

Der Wert y_i eines Neurons ergibt sich durch die Anwendung der Aktivierungsfunktion f auf die Summe der Produkte zwischen den Eingabedaten x_j und den entsprechenden Gewichten w_{ij}, die die Verbindungen zu diesen Neuronen realisieren (Gl. 2).

Eine Aktivierungsfunktion f bestimmt den Wertebereich der Aktivierung eines künstlichen Neurons. Diese wird angewandt auf die Summe der gewichteten Eingangsdaten des Neurons.

Eine Aktivierungsfunktion stellt eine nicht-lineare Funktion, wie Sigmoid-Funktion, Tangens Hyperbolicus oder ReLU dar. Der Wert eines Neurons in einer versteckten Schicht wird dabei auch als Aktivierungswert bzw. Aktivierung bezeichnet.

Berechnung der Aktiverungs eines Neurons.
Gl. 2 Berechnung der Aktiverungs eines Neurons.

4. Aktivierungsfunktionen

Neuronale Netze können als Funktionsapproximatoren angesehen werden. Die Netze lernen dabei eine multivariate Funktion g, die eine Abbildung von Eingabewerten x auf Ausgabewerte y realisiert, g: x \rightarrow y.

Dabei stellen die Gewichte des neuronalen Netzes die Parameter der Funktion g dar. Durch die Anzahl der versteckten Schichten und die Anzahl der Neuronen kann die Komplexität von g verändert werden. Die Anwendung der nicht-linearen Aktivierungsfunktion führt zu einer Nicht-Linearität des künstlichen neuronalen Netzes und damit zu einer Nicht-Linearität der Funktion g, die das neuronale Netz approximiert.

Im Folgenden werden die Aktivierungsfunktionen nur kurz erläutert. Eine detailliertere Erklärung der Aktivierungsfunktionen finden Sie in meinem Artikel „Aktivierungsfunktionen in neuronalen Netzen: Sigmoid, tanh, ReLU„.

Sigmoid

Die Aktivierungsfunktion Sigmoid ist wie folgt defniert:

Sigmoid Funktion
Gl. 3 Sigmoid Funktion

Die Funktion nimmt einen Eingangswert x entgegen und gibt eine Ausgabe im Intervall (0, 1]) zurück.

Tangens Hyperbolicus (tanh)

Die Ausgabe der tanh-Aktivierungsfunktion liegt im Intervall (-1, 1). Die Funktion ist deniert als:

Tangens Hyperbolicus
Gl. 4 Tangens Hyperbolicus.

Rectifed Linear Unit (ReLU)

ReLU
Gl. 5 ReLU.

Die Aktivierungsfunktion ReLU weist einen Wertebereich von [0, ∞) auf. Die Ausgabe der Funktion beträgt 0 für einen Eingangswert x < 0, sonst beträgt die Ausgabe x.


5. Autoencoder

Autoencoder (deutsch: Autokodierer) stellt neben dem Multilayer Perceptron eine weitere, weitverbreitete Architektur der künstlichen neuronalen Netze dar. Die Eingab,- und Ausgabeschicht eines Autoencoders weisen die gleiche Anzahl von Neuronen auf.

Genau wie ein Multilayer Perceptron kann der Autoencoder eine beliebige Anzahl von versteckten Schichten enthalten. Abb. 5 zeigt eine schematische Darstellung eines Autoencoders mit jeweils sechs Neuronen in der Eingabe- und Ausgabeschicht sowie einer einzelnen versteckten Schicht mit drei Neuronen.

Schematische Darstellung eines Autoencoders mit einer einzelnen versteckten Schicht
Abb. 5 Schematische Darstellung eines Autoencoders mit einer einzelnen versteckten Schicht.

Ein Autoencoder besteht aus einem Encoder (deutsch: Kodierer) und einem Decoder (deutsch: Dekodierer). Die Anzahl der Neuronen im Encoder nimmt mit der zunehmenden Tiefe des Netzes ab. Mit dem Encoder werden die Eingabedaten x = (x_1, x_2, …, x_n) kodiert, d.h. die Daten werden auf eine Schicht mit einer geringeren Anzahl von Neuronen als in der Eingabeschicht abgebildet. Damit findet eine Dimensionsreduktion der Eingabedaten statt.

Im Decoder nimmt die Anzahl der Neuronen hingegen wieder zu. Die kodierten Daten werden mit dem Decoder in der Ausgabeschicht wieder rekonstruiert.

Der Encoder kann als eine Funktion f(x) = z aufgefasst werden, der die Eingangsdaten x nach z abbildet. Der Decoder dagegen kann als die inverse Funktion von f betrachtet werden. Der Autoencoder berechnet damit

Formel

\hat{h} bezeichnet dabei die rekonstruierten Eingabedaten x.

Der Autoencoder dient dazu, die Informationen in dem höher dimensionalen Eingabevektor x auf möglichst wenige Neuronen zu kodieren. Die abstrakte Repräsentation z der Eingabedaten wird benutzt, um die Eingabedaten wieder rekonstruieren zu können. Beim Training eines Autoencoders gilt es, den Fehler zwischen den Eingabedaten x = (x_1, x_2, … , x_n) und ihrer Rekonstruktion \hat{h}= ( \hat{h}_1 , \hat{h}_2 , … , \hat{h}_n) zu minimieren.

In meinem Artikel „Deep Autoencoder in TensorFlow 2.0“ zeige ich Ihnen wie Sie Autoencoder in der Praxis in TensorFlow implementieren können.

In „Identifikation von betrügerischen Kreditkartentransaktionen mittels KI“ zeige ich Ihnen anhand eines praktischen Beispiels wie mit Autoencodern betrügerische Kreditkartentransaktionen identifiziert werden können.

Wenn Sie verstehen möchten, wie künstliche neuronale Netze in der Praxis zum Lösen von Problemen eingesetzt werden, empfehle ich Ihnen meinen Artikel „Was ist Deep Learning?“.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert