Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Rekurrentes neuronales Netz

Bei einer direkten Rückkopplung (englisch direct feedback) wird der eigene Ausgang eines Neurons als weiterer Eingang genutzt. · Die indirekte Rückkopplung ( …

Inhalt5 Abschnitte
  1. 1. Grundidee und Eigenschaften
  2. 2. Elman- und Jordan-Netze
  3. 3. Verarbeitung einer Zeitreihe
  4. 4. Training und Aktivierungsfunktionen
  5. 5. Verlust-, Ziel- und Kostenfunktionen

Grundidee und Eigenschaften

Rekurrente beziehungsweise rückgekoppelte neuronale Netze sind neuronale Netze, bei denen Neuronen nicht nur mit der nächsten Schicht verbunden sind. Es gibt auch Verbindungen zu Neuronen derselben oder einer vorangegangenen Schicht. Dadurch können die Netze zeitlich codierte Informationen verarbeiten: Frühere Eingaben beeinflussen die aktuelle Eingabe und Ausgabe. Sie besitzen somit eine Art Gedächtnis und eignen sich besonders für Sequenzen.

Im Gegensatz zu Feedforward-Netzen, bei denen Eingaben und Ausgaben als voneinander unabhängig betrachtet werden, hängt die Ausgabe eines rekurrenten Netzes von vorherigen Elementen der Sequenz ab. Ein unidirektionales rekurrentes Netz kann jedoch zukünftige Ereignisse nicht für eine aktuelle Vorhersage verwenden.

Ein weiteres Merkmal ist die gemeinsame Nutzung von Parametern. Innerhalb einer Schicht verwenden rekurrente Netze dieselben Gewichtungsparameter, während Feedforward-Netze für jeden Knoten unterschiedliche Gewichtungen besitzen. Die Gewichtungen werden durch Backpropagation und Gradientenabstieg angepasst.

Rekurrente Netze werden unter anderem bei Handschrifterkennung, Spracherkennung und Maschinenübersetzung eingesetzt. Häufig verwendet werden LSTMs und ähnliche Varianten, die auf direkter Rückkopplung beruhen. Direkte Rückkopplung bedeutet, dass der eigene Ausgang eines Neurons wieder als Eingang dient. Bei indirekter Rückkopplung wird der Ausgang mit einem Neuron einer vorhergehenden Schicht verbunden. Seitliche Rückkopplung verbindet den Ausgang mit einem anderen Neuron derselben Schicht. Bei einer vollständigen Verbindung ist jeder Neuronenausgang mit jedem anderen Neuron verbunden.

Elman- und Jordan-Netze

Ein Elman-Netz ist ein einfaches rekurrentes künstliches neuronales Netz, das zeitliche Abhängigkeiten von Eingaben implizit verarbeitet. Die Architektur wurde 1990 von Jeffrey L. Elman vorgeschlagen.

Das Netz besteht aus einer Eingangsschicht, einer verborgenen Schicht und einer Ausgangsschicht. Zusätzlich gibt es Kontexteinheiten. Die verborgene Schicht ist mit diesen Einheiten in einer 1:1-Verbindung verbunden; deren Gewichte sind fest auf 1 gesetzt. Die Kontexteinheiten speichern eine Kopie der vorherigen Werte der verborgenen Einheiten. Ihre Ausgabe wird anschließend wieder in die verborgene Schicht eingespeist.

Die übrigen Schichten können vollständig verbunden sein, und ihre Gewichte sind veränderbar. Die Kontextschicht stellt ein Kurzzeitgedächtnis bereit. Die verborgenen Einheiten verarbeiten daher nicht nur die aktuelle Eingabe, sondern erhalten auch Informationen über ihren eigenen Zustand im letzten Zeitschritt. Der Einfluss früherer Zustände nimmt mit der Zeit ab. Wird dem Netz eine zeitliche Folge von Eingangsvektoren vorgelegt, kann es lernen, eine Ausgabe von der Abfolge mehrerer Eingaben abhängig zu machen, etwa bei der Sequenzvorhersage. Zum Anpassen der Gewichte können eine gewünschte Ausgabe und beispielsweise die verallgemeinerte Delta-Regel verwendet werden.

Jordan-Netze ähneln Elman-Netzen. Bei ihnen werden die Kontexteinheiten jedoch von der Ausgangsschicht statt von der verborgenen Schicht gespeist. Diese Einheiten heißen auch Zustandsschicht und besitzen eine wiederkehrende Verbindung zu sich selbst. Elman- und Jordan-Netze werden als einfache rekurrente Netze bezeichnet.

Verarbeitung einer Zeitreihe

Ein rekurrentes Netz verarbeitet eine Zeitreihe Schritt für Schritt. Gegeben sei eine Zeitreihe x mit der Länge sequence_length. Zu jedem Zeitpunkt erhält das Netz den aktuellen Eintrag x[i] sowie den bisherigen verborgenen Zustand hidden. Es gibt eine Vorhersage y_pred[i] und einen aktualisierten verborgenen Zustand zurück.

Der Ablauf ist:

  • Der verborgene Zustand wird mit Nullen initialisiert; außerdem wird ein Ausgabearray für die Vorhersagen angelegt.
  • Für jeden Eintrag der Zeitreihe wird x[i] zusammen mit dem aktuellen hidden-Zustand an das Netz übergeben.
  • Das Netz berechnet y_pred[i] und aktualisiert hidden.
  • Nach der Schleife wird die Sammlung aller Vorhersagen zurückgegeben.

In abstrakter Form lautet der Ablauf: hidden = zeros(size=hidden_size) und y_pred = zeros(size=sequence_length). Anschließend wird für i in range(sequence_length) jeweils y_pred[i], hidden = neural_network(x[i], hidden) ausgeführt. Danach wird y_pred zurückgegeben. Moderne Programmbibliotheken stellen dafür laufzeitoptimierte Implementierungen bereit oder beschleunigen die Schleife durch Just-in-time-Kompilierung. Die Implementierung kann beispielsweise in Python mit PyTorch erfolgen.

Training und Aktivierungsfunktionen

Beim Training wird zunächst ein Beispiel aus einem Datensatz eingegeben. Das Netz führt mit seinen zunächst zufällig initialisierten Variablen Berechnungen durch und erzeugt eine Vorhersage. Der Vergleich mit dem erwarteten Wert ergibt einen Fehler. Dieser Fehler wird entlang desselben Pfades zurückpropagiert, worauf die Variablen angepasst werden. Die Schritte werden wiederholt, bis die Variablen geeignete Werte angenommen haben.

Der Unterschied zu einem Feedforward-Netz besteht darin, dass bei der Bewertung auch vorherige Eingaben berücksichtigt werden. Ein rekurrentes Netz kann deshalb als Folge mehrerer Feedforward-Netze betrachtet werden, die Informationen untereinander weitergeben. Rekurrente Netze sind jedoch schwierig zu trainieren. Beim Reservoir Computing wird daher teilweise nur das Auslesen eines festen rekurrenten Netzes trainiert; das Netz selbst wird als Reservoir verwendet.

Bei LSTMs wird Backpropagation-Through-Time eingesetzt. Dabei wird das rekurrente Netz entsprechend der Sequenzlänge in ein Feedforward-Netz umgewandelt. Für eine Zeitreihe mit T Zeitschritten lautet die totale Verlustfunktion:

L = ∑ₜ₌₁ᵀ l(yₜ, oₜ(θ)).

Dabei vergleicht l die Ausgabe oₜ des Netzes zum Zeitpunkt t mit dem Ziel yₜ. θ ist der zeitinvariante Parametervektor. Durch die Kettenregel werden die totalen Ableitungen ∂L/∂θᵢ berechnet. Weil die Ausgabe vom verborgenen Zustand des vorherigen Zeitschritts abhängt, müssen auch diese früheren Zeitschritte in die Ableitung einbezogen werden. Schwierigkeiten entstehen durch verschwindende oder explodierende Gradienten. Teacher-Forcing kann diese Probleme umgehen, führt aber zum Bias-Exposure-Trade-off.

Häufig verwendete Aktivierungsfunktionen sind:

  • Sigmoidfunktion: g(z) = 1/(1 + e⁻ᶻ)
  • Tangens hyperbolicus: g(z) = (eᶻ − e⁻ᶻ)/(eᶻ + e⁻ᶻ)
  • Rectifier: g(z) = max(0, z)

Verlust-, Ziel- und Kostenfunktionen

Eine Verlustfunktion misst den Fehler des Netzes. Beim Training sollen Parameter gefunden werden, die diesen Fehler für die Trainingsdaten minimieren. Eine übliche Verlustfunktion ist die Kreuzentropie. Für n Trainingsbeispiele lautet sie in Bezug auf die Vorhersagen oᵢ und die wahren Labels yᵢ:

L(y,o) = −(1/n) ∑ᵢ₌₁ⁿ yᵢ log(oᵢ).

Bei bestimmten rekurrenten Modellen wird der Fehler sowohl für den Prognoseschritt als auch für einen Aktualisierungsschritt betrachtet. Der verborgene Zustand vor einer Aktualisierung heißt z(t−), danach z(t). Die Verlustfunktion des Prognoseschritts ist die negative logarithmische Wahrscheinlichkeit:

L_pred(yᵢ, θ) = −∑ᵢ₌₁ᴺ ∑ₜ₌ₜ₀,ᵢᵀᵢ log(p_θ(y|z(t−))).

Eine zusätzliche Funktion für den Aktualisierungsschritt lautet:

L_jump(yᵢ, θ) = −∑ᵢ₌₁ᴺ ∑ₜ₌ₜ₀,ᵢᵀᵢ mᵢ log(p_θ(y|z(t))).

mᵢ ist eine binäre Maske. Sie ist nützlich, wenn ein Aktualisierungsschritt erforderlich ist, die Beobachtung y(t) aber nicht gemessen wird oder fehlt. Bei fehlerbehafteten Beobachtungen kann für diesen Schritt auch die Kullback-Leibler-Divergenz verwendet werden:

L_jump(yᵢ, θ) = −∑ᵢ₌₁ᴺ ∑ₜ₌ₜ₀,ᵢᵀᵢ KL(p_θ(y|z(t)) || p_obs(y, σ²)).

Dabei bezeichnet p_obs(y, σ²) die angenommene Verteilung der Antwort y(t) bei einem mittleren Messfehler von Null und einer Varianz σ².

Das GloVe-Modell ist eine Worteinbettungstechnik, die eine Co-Occurrence-Matrix X verwendet. Xᵢ,ⱼ gibt an, wie oft ein Zielwort i zusammen mit einem Kontextwort j auftritt. Die Kostenfunktion lautet:

J(θ) = 1/2 ∑ᵢ,ⱼ₌₁|V| f(Xᵢ,ⱼ)(θᵢᵀeⱼ + bᵢ + b'ⱼ − log(Xᵢ,ⱼ))².

Die Gewichtungsfunktion f ist so definiert, dass f(Xᵢ,ⱼ) = 0 für alle Xᵢ,ⱼ = 0.

Lernvideos zu Rekurrentes neuronales Netz

Weiterlesen

Neuronales Netz Als neuronales Netz wird in den Neurowissenschaften eine beliebige Anzahl miteinander verbundener Neuronen bezeichnet, die als Teil eines Nervensystems … Künstliches Neuron Ein künstliches Neuron bildet die Basis für das Modell der künstlichen neuronalen Netze, ein Modell aus der Neuroinformatik, das durch biologische neuronale … Nervenzelle Eine Nervenzelle, auch Neuron (von altgriechisch νεῦρον neũron „Flechse, Sehne, Nerv“) genannt, ist eine auf Erregungsleitung und Erregungsübertragung … Gehirn Das Gehirn (auch Hirn; griechisch Encephalon, lateinisch Cerebrum) ist ein Organ des zentralen Nervensystems aller Wirbeltiere und einiger Wirbelloser, … Künstliches neuronales Netz Ein künstliches neuronales Netz besteht aus mehreren künstlichen Neuronen, die miteinander verbunden sind und in der Regel in Schichten organisiert werden. Im … Elman-Netz Ein künstliches neuronales Netz ist ein Modell aus der Neuroinformatik, das durch biologische neuronale Netze motiviert ist. Künstliche neuronale Netze … Backpropagation Fehlerrückführung bzw. Rückpropagierung ist ein verbreitetes Verfahren zum Einlernen künstlicher neuronaler Netze. Es gehört in der einfachen Form zur Gruppe … Bestärkendes Lernen Bestärkendes Lernen. Reihe von Methoden des maschinellen Lernens, bei denen ein Agent selbständig eine Strategie erlernt, um erhaltene Belohnungen zu maximieren. 1990 Das Jahr 1990 ist geprägt von zahlreichen politischen Neuerungen und markiert den Beginn der 1990er-Jahre. Als eines der prägendsten Ereignisse ging die … Python (Programmiersprache) Python ([ˈpʰaɪθn̩], [ ˈpʰaɪθɑn], auf Deutsch auch [ ˈpʰyːtɔn]) ist eine universell nutzbare, üblicherweise interpretierte, höhere Programmiersprache. Maschinelles Lernen Maschinelles Lernen (ML) entwickelt, untersucht und verwendet statistische Algorithmen, auch Lernalgorithmen genannt. Solche Algorithmen können lernen, … Kettenregel Die Kettenregel ist eine grundlegende Ableitungsregel. Mit ihr wird die Ableitung einer Verkettung zweier differenzierbarer Funktionen berechnet.