logo

Gated Recurrent Unit Networks

Gated Recurrent Unit (GRU) ist eine Art wiederkehrendes neuronales Netzwerk (RNN), das von Cho et al. eingeführt wurde. im Jahr 2014 als einfachere Alternative zu Long Short-Term Memory (LSTM)-Netzwerken. Wie LSTM kann GRU sequentielle Daten wie Text, Sprache und Zeitreihendaten verarbeiten.

Die Grundidee von GRU besteht darin, Gating-Mechanismen zu verwenden, um den verborgenen Zustand des Netzwerks bei jedem Zeitschritt selektiv zu aktualisieren. Die Gating-Mechanismen werden verwendet, um den Informationsfluss innerhalb und außerhalb des Netzwerks zu steuern. Die GRU verfügt über zwei Gating-Mechanismen, das sogenannte Reset-Gate und das Update-Gate.



wie man ein Skript unter Linux ausführt

Das Reset-Gate bestimmt, wie viel vom vorherigen verborgenen Zustand vergessen werden soll, während das Update-Gate bestimmt, wie viel von der neuen Eingabe zum Aktualisieren des verborgenen Zustands verwendet werden soll. Die Ausgabe der GRU wird basierend auf dem aktualisierten verborgenen Zustand berechnet.

Die zur Berechnung des Reset-Gates, des Update-Gates und des verborgenen Zustands einer GRU verwendeten Gleichungen lauten wie folgt:

Tor zurücksetzen: r_t = Sigmoid(W_r * [h_{t-1}, x_t])
Update-Gate: z_t = Sigmoid(W_z * [h_{t-1}, x_t])
Ausgeblendeter Status des Kandidaten: h_t’ = tanh(W_h * [r_t * h_{t-1}, x_t])
Verborgener Zustand: h_t = (1 – z_t) * h_{t-1} + z_t * h_t’
Dabei sind W_r, W_z und W_h lernbare Gewichtsmatrizen, x_t die Eingabe zum Zeitpunkt t, h_{t-1} der vorherige verborgene Zustand und h_t der aktuelle verborgene Zustand.



Zusammenfassend lässt sich sagen, dass GRU-Netzwerke eine Art von RNN sind, die Gating-Mechanismen verwenden, um den verborgenen Zustand bei jedem Zeitschritt selektiv zu aktualisieren und so sequenzielle Daten effektiv zu modellieren. Sie haben sich bei verschiedenen Aufgaben der Verarbeitung natürlicher Sprache als effektiv erwiesen, beispielsweise bei der Sprachmodellierung, der maschinellen Übersetzung und der Spracherkennung

Voraussetzungen: Rekurrente neuronale Netze, Langzeit-Kurzzeitgedächtnisnetze

Um das Problem der verschwindenden-explodierenden Gradienten zu lösen, das beim Betrieb eines grundlegenden rekurrenten neuronalen Netzwerks häufig auftritt, wurden viele Variationen entwickelt. Eine der bekanntesten Varianten ist die Langzeit-Kurzzeitgedächtnisnetzwerk (LSTM) . Eine der weniger bekannten, aber ebenso wirksamen Varianten ist die Gated Recurrent Unit Network (GRU) .

Im Gegensatz zu LSTM besteht es nur aus drei Toren und behält keinen internen Zellzustand bei. Die Informationen, die im internen Zellzustand einer LSTM-Rekurrenteneinheit gespeichert sind, werden in den verborgenen Zustand der Gated Recurrent Unit integriert. Diese kollektiven Informationen werden an die nächste Gated Recurrent Unit weitergeleitet. Die verschiedenen Tore einer GRU sind wie folgt:

Stellvertretender Polizeikommissar
    Update Gate(z): Es bestimmt, wie viel des vergangenen Wissens in die Zukunft weitergegeben werden muss. Es ist analog zum Output Gate in einer wiederkehrenden LSTM-Einheit. Reset Gate(r): Es bestimmt, wie viel des vergangenen Wissens vergessen werden soll. Es ist analog zur Kombination des Input Gate und des Forget Gate in einer wiederkehrenden LSTM-Einheit.Current Memory Gate( overline{h}_{t} = tanh(Wodot x_{t}+Wodot (r_{t}odot h_{t-1})) ): Bei einer typischen Diskussion über das Gated Recurrent Unit Network wird es oft übersehen. Es ist in das Reset Gate integriert, genau wie das Input Modulation Gate ein Unterteil des Input Gate ist, und wird verwendet, um eine gewisse Nichtlinearität in den Eingang einzuführen und ihn auch auf Null zu setzen. Ein weiterer Grund, es zu einem Unterbestandteil des Reset-Gates zu machen, besteht darin, den Einfluss früherer Informationen auf die aktuellen Informationen zu verringern, die in die Zukunft weitergegeben werden.

Der grundlegende Arbeitsablauf eines Gated Recurrent Unit Network ähnelt in der Darstellung dem eines einfachen Recurrent Neural Network. Der Hauptunterschied zwischen den beiden besteht in der internen Arbeitsweise innerhalb jeder Recurrent Unit, da Gated Recurrent Unit Networks aus Gates bestehen, die das modulieren aktuelle Eingabe und der vorherige verborgene Zustand.



Funktionsweise einer Gated Recurrent Unit:

Was ist Ruhezustand in Java?
  • Nehmen Sie die aktuelle Eingabe und den vorherigen verborgenen Zustand als Vektoren ein.
  • Berechnen Sie die Werte der drei verschiedenen Gates, indem Sie die folgenden Schritte ausführen:
    1. Berechnen Sie für jedes Gatter den parametrisierten aktuellen Eingang und die zuvor verborgenen Zustandsvektoren, indem Sie eine elementweise Multiplikation (Hadamard-Produkt) zwischen dem betreffenden Vektor und den jeweiligen Gewichten für jedes Gatter durchführen.
    2. Wenden Sie die jeweilige Aktivierungsfunktion für jedes Tor elementweise auf die parametrisierten Vektoren an. Nachfolgend finden Sie eine Liste der Tore mit der für das Tor anzuwendenden Aktivierungsfunktion.
 Update Gate : Sigmoid Function Reset Gate : Sigmoid Function>
  • Der Prozess zur Berechnung des Current Memory Gate ist etwas anders. Zunächst wird das Hadamard-Produkt aus dem Reset Gate und dem zuvor verborgenen Zustandsvektor berechnet. Anschließend wird dieser Vektor parametrisiert und dann zum parametrisierten aktuellen Eingangsvektor addiert.

    h_{t} = z_{t}odot h_{t-1} + (1-z_{t})odot overline{h}_{t}
  • Um den aktuellen verborgenen Zustand zu berechnen, wird zunächst ein Vektor aus Einsen und denselben Dimensionen wie die der Eingabe definiert. Dieser Vektor wird Einsen genannt und mathematisch mit 1 bezeichnet. Berechnen Sie zunächst das Hadamard-Produkt des Update-Gates und des zuvor verborgenen Zustandsvektors. Erzeugen Sie dann einen neuen Vektor, indem Sie das Update-Gate von Einsen subtrahieren, und berechnen Sie dann das Hadamard-Produkt des neu generierten Vektors mit dem aktuellen Speicher-Gate. Fügen Sie abschließend die beiden Vektoren hinzu, um den aktuell ausgeblendeten Zustandsvektor zu erhalten.
    E_{t} = -y_{t}log(overline{y}_{t})

    Die oben genannte Arbeitsweise wird wie folgt angegeben:

Beachten Sie, dass die blauen Kreise die elementweise Multiplikation bezeichnen. Das positive Vorzeichen im Kreis bezeichnet die Vektoraddition, während das negative Vorzeichen die Vektorsubtraktion (Vektoraddition mit negativem Wert) bezeichnet. Die Gewichtsmatrix W enthält unterschiedliche Gewichte für den aktuellen Eingabevektor und den vorherigen verborgenen Zustand für jedes Gatter.

Genau wie wiederkehrende neuronale Netze generiert auch ein GRU-Netzwerk bei jedem Zeitschritt eine Ausgabe, und diese Ausgabe wird verwendet, um das Netzwerk mithilfe des Gradientenabstiegs zu trainieren.

Beachten Sie, dass der Trainingsprozess für ein GRU-Netzwerk ebenso wie der Arbeitsablauf schematisch dem eines einfachen rekurrenten neuronalen Netzwerks ähnelt und sich nur in der internen Arbeitsweise jeder rekurrenten Einheit unterscheidet.

Der Back-Propagation Through Time-Algorithmus für ein Gated Recurrent Unit Network ähnelt dem eines Long Short Term Memory Network und unterscheidet sich nur in der differenziellen Kettenbildung.

Lassen E = sum _{t} E_{t}sei die vorhergesagte Ausgabe zu jedem Zeitschritt und Rightarrow E = sum _{t} -y_{t}log(overline{y}_{t})sei die tatsächliche Ausgabe zu jedem Zeitschritt. Dann ist der Fehler bei jedem Zeitschritt gegeben durch:

frac{partial E}{partial W} = sum _{t} frac{partial E_{t}}{partial W}

Der Gesamtfehler ergibt sich somit aus der Summe der Fehler aller Zeitschritte.

frac{partial E_{t}}{partial W} = frac{partial E_{t}}{partial overline{y}_{t}}frac{partial overline{y}_ {t}}{partial h_{t}}frac{partial h_{t}}{partial h_{t-1}}frac{partial h_{t-1}}{partial h_{t -2}}......frac{partial h_{0}}{partial W}
frac{partial E}{partial W} = sum _{t}frac{partial E_{t}}{partial overline{y}_{t}}frac{partial overline{ y}_{t}}{partial h_{t}}frac{partial h_{t}}{partial h_{t-1}}frac{partial h_{t-1}}{partial h_{t-2}}......frac{partial h_{0}}{partial W}

Ebenso der Wert h_{t} = z_{t}odot h_{t-1} + (1-z_{t})odot overline{h}_{t}kann als Summe der Gradienten in jedem Zeitschritt berechnet werden.

frac{partial h_{t}}{partial h_{t-1}} = z + (1-z)frac{partial overline{h}_{t}}{partial h_{t- 1}}

Verwenden Sie die Kettenregel und nutzen Sie die Tatsache, dass overline{h}_{t} = tanh(Wodot x_{t}+Wodot (r_{t}odot h_{t-1}))ist eine Funktion von frac{partial overline{h_{t}}}{partial h_{t-1}} = frac{partial (tanh(Wodot x_{t}+Wodot (r_{t} odot h_{t-1})))}{partial h_{t-1}} Rightarrow frac{partial overline{h_{t}}}{partial h_{t-1}} = (1 -overline{h}_{t}^{2})(Wodot r)und was tatsächlich eine Funktion von ist , ergibt sich folgender Ausdruck:-



Somit ist der Gesamtfehlergradient wie folgt gegeben:



Beachten Sie, dass die Gradientengleichung eine Kette von beinhaltet Dies ähnelt dem eines einfachen rekurrenten neuronalen Netzwerks, diese Gleichung funktioniert jedoch aufgrund der internen Funktionsweise der Ableitungen von anders .

Wie lösen Gated Recurrent Units das Problem verschwindender Gradienten?

Der Wert der Gradienten wird durch die Ableitungskette ausgehend von gesteuert . Erinnern Sie sich an den Ausdruck für :-



Unter Verwendung des obigen Ausdrucks wird der Wert für Ist:-



Erinnern Sie sich an den Ausdruck für :-



Verwenden Sie den obigen Ausdruck, um den Wert von zu berechnen :-



Da sowohl das Update- als auch das Reset-Gate die Sigmoidfunktion als Aktivierungsfunktion verwenden, können beide Werte entweder 0 oder 1 annehmen.

Fall 1(z = 1):

In diesem Fall unabhängig vom Wert von , der Begriff ist gleich z, was wiederum gleich 1 ist.

Fall 2A(z=0 und r=0):

In diesem Fall der Begriff ist gleich 0.

Fall 2B(z=0 und r=1):

In diesem Fall der Begriff ist gleich . Dieser Wert wird durch die trainierbare Gewichtsmatrix gesteuert und so lernt das Netzwerk, die Gewichte so anzupassen, dass der Term kommt näher an 1.

Daher passt der Back-Propagation Through Time-Algorithmus die jeweiligen Gewichte so an, dass der Wert der Ableitungskette möglichst nahe bei 1 liegt.