Präsentation

Menschen beginnen ihre Intuition nicht ohne Vorbereitung. Wenn Sie diesen Artikel lesen, werden Sie sehen, dass jedes Wort von Ihrem Verständnis der vergangenen Wörter abhängt. Sie verwerfen nicht alles und beginnen wieder einmal ohne Vorbereitung zu denken. Ihre Überlegungen haben Fleiß.

Herkömmliche neuronale Netze können das nicht, und es scheint ein erheblicher Mangel zu sein. Stellen Sie sich zum Beispiel vor, Sie müssten sich arrangieren, was für ein Anlass an jeder Stelle in einem Film vorkommt. Es ist unklar, wie ein konventionelles neuronales System sein Denken über vergangene Anlässe im Film nutzen könnte, um spätere Anlässe zu beraten.

Repetitive neuronale Netze befassen sich mit diesem Problem. Es sind Systeme mit Kreisen in ihnen, die es ermöglichen, dass Daten Bestand haben. 1111

In der obigen Skizze sieht ein Klumpen des neuronalen Systems A einige Informationen xt und ergibt einen Wert ht. Ein Kreis ermöglicht die Weitergabe von Daten von einer Stufe des Systems an die nächste. Ein intermittierendes neuronales System kann man sich als zahlreiche Duplikate eines ähnlichen Systems vorstellen, von denen jedes eine Nachricht an einen Nachfolger weitergibt. Denken Sie darüber nach, was geschieht, wenn wir den Kreis abrollen: 2222

Diese kettenartige Natur deckt auf, dass sich wiederholende neuronale Systeme persönlich mit Gruppierungen und Aufzeichnungen identifiziert werden. Sie sind die reguläre Technik der neuronalen Systeme, die für solche Informationen verwendet werden. Darüber hinaus werden sie sicherlich genutzt! In den letzten paar Jahren gab es überwältigende Erfolge bei der Anwendung von RNNs auf eine Reihe von Themen: Anerkennung des Diskurses, Sprachdarstellung, Interpretation, Bilduntertitelung… Die Liste geht weiter.

Trotz der Tatsache, dass es noch nicht obligatorisch ist, wäre es für den Benutzer nützlich, zu verstehen, was WordVectors sind. Hier ist mein vorheriger Blog über Word2Vec, ein Verfahren zur Erstellung von Word-Vektoren.
Was sind sich wiederholende neuronale Systeme?

Eine eklatante Einschränkung von neuronalen Vanillesystemen (und darüber hinaus von Faltungssystemen) besteht darin, dass ihre Programmierschnittstelle übermäßig in Anspruch genommen wird: Sie erkennen einen Vektor fester Größe als Information an (z.B. ein Bild) und erzeugen einen Vektor fester Größe als Ertrag (z.B. Wahrscheinlichkeiten verschiedener Klassen). Und nicht nur das: Diese Modelle spielen diese Abbildung unter Verwendung eines festen Maßes für den Rechenfortschritt aus (zum Beispiel die Anzahl der Schichten im Modell).

Die zentrale Erklärung dafür, dass sich wiederholende Netze um so anregender sind, besteht darin, dass sie es uns ermöglichen, über Folgen von Vektoren zu arbeiten: Anordnungen in der Info, der Ausbeute, oder im weitesten Fall beides.

Einige Modelle können dies zunehmend konkretisieren: 3333

Jede quadratische Form ist ein Vektor und Bolzen sprechen für Kapazitäten (z.B. Rahmenduplikat). Informationsvektoren sind in rot, Ertragsvektoren in blau und grüne Vektoren enthalten den Zustand der RNN (mehr dazu demnächst). Von links nach rechts:

Vanille-Methode der Handhabung ohne RNN, vom Beitrag fester Größe zum Ertrag fester Größe (zum Beispiel Bildgruppierung).

Gruppierungsausbeute (z.B. Bilduntertitelung nimmt ein Bild und ergibt einen Satz von Wörtern).

Gruppierungsbeitrag (z.B. Meinungsforschung, bei der ein bestimmter Satz delegiert wird, der eine positive oder negative Annahme vermittelt)

Sukzessionsinformationen und Arrangement ergeben (z.B. maschinelle Interpretation: ein RNN liest einen Satz auf Englisch durch und ergibt danach einen Satz auf Französisch).

Abgleich von Gruppierungsinformationen und Ertrag (z.B. Videoanordnung, bei der wir jedes Einzelbild des Videos markieren möchten).

Beachten Sie, dass es für jede Situation keine vorindizierten Imperative zu den Längenfolgen gibt, da die sich wiederholende Änderung (grün) festgelegt ist und beliebig oft angewendet werden kann.
RNN-Berechnung

Wie also erreichen sie das?

Sie erkennen einen Informationsvektor x an und geben einen Ertragsvektor y an. Nichtsdestotrotz wird die Substanz dieses Ertragsvektors dringend nicht nur durch die Informationen beeinflusst, die Sie gerade eingegeben haben, sondern zusätzlich zu der gesamten Geschichte der Datenquellen, in denen Sie sich zuvor aufgehalten haben. Die Programmierschnittstelle des RNN, die als eine Klasse zusammengesetzt ist, besteht aus einer Einzelschrittarbeit:

rnn = RNN()

y = rnn.step(x) # x ist ein Informationsvektor, y ist der Ertragsvektor der RNN

Die RNN-Klasse hat einen inneren Ausdruck, dass sie die Gelegenheit erhält, sich bei jedem Aufruf eines Schrittes zu erfrischen. Im am wenigsten schwierigen Fall umfasst dieser Zustand einen einsamen verhüllten Vektor h. Hier ist eine Ausführung der Progressionsarbeit in einer Vanille-RNN: Der umhüllte Zustand self.h wird mit dem Nullvektor eingeführt. Die Arbeit np.tanh (hyperbolischer Exkurs) verwirklicht eine Nichtlinearität, die die Initiationen auf den Bereich [-1, 1] drückt.
Klasse RNN:

def Schritt(selbst, x):

den verborgenen Zustand aktualisieren

self.h = np.tanh(np.dot(self.W_hhh, self.h) + np.dot(self.W_xh, x))

Berechnen Sie den Ausgabevektor

y = np.dot(selbst.W_hy, selbst.h)

Rückgabe y
Das oben genannte spezifiziert den Vorwärtspass einer Vanille-RNN. Die Parameter dieser RNN sind die drei Matrizen –
W_hh : Matrix basierend auf dem vorherigen verborgenen Zustand
W_xh : Matrix basierend auf der Stromaufnahme
W_hy : Matrix basierend zwischen verborgenem Zustand und Ausgabe
So funktioniert es

Es gibt zwei Begriffe innerhalb des tanh: einer hängt vom vergangenen verhüllten Zustand ab und einer von den gegenwärtigen Informationen. In numpy ist np.dot eine Netzwerkerweiterung. Die beiden Zwischenglieder arbeiten bei der Expansion zusammen und werden danach durch den tanh in den neuen Zustandsvektor gequetscht.
Die mathematische Notation für die Aktualisierung des verborgenen Zustands lautet – 4444

wobei tanh elementweise angewendet wird.
Wir stellen die Netze des RNN mit unregelmässigen Nummern vor, und der grösste Teil der Arbeit während der Vorbereitung besteht darin, die Netze zu finden, die Aufstieg zu verlockendem Verhalten bieten, wie mit einigen unglücklichen Arbeiten geschätzt wird, die Ihre Neigung mitteilen, welche Arten von Erträgen y Sie angesichts Ihrer Infofolgen x finden möchten
Wir werden in einem Stück feststellen, dass RNNs den Info-Vektor mit ihrem Zustandsvektor verbinden, mit einer festen (aber gelernten) Fähigkeit, einen weiteren Zustandsvektor zu liefern.
Jetzt geht es in die Tiefe –
y1 = rnn1.schritt(x)
y = rnn2.Schritt(y1)
Letzten Endes haben wir zwei getrennte RNNs: Der eine RNN akzeptiert die Informationsvektoren und der zweite RNN erhält den Ertrag des ersten RNN als seine Information. Aber keiner der beiden RNNs weiß oder kümmert sich darum – es ist alles, nur Vektoren, die ein- und ausgehen, und ein paar Winkel, die während der Rückpropagation durch jedes Modul laufen.

Ich möchte kurz auf einen großen Teil von uns eingehen, die einen geringfügig unerwarteten Plan verwenden, im Vergleich zu dem, was ich oben gezeigt habe und was ich als Organisation mit langem Kurzzeitgedächtnis (LSTM) bezeichnet habe. Die LSTM ist eine besondere Art von intermittierendem System, das geringfügig besser funktioniert, was sich aus den umso dominanteren Aktualisierungsbedingungen und einigen einnehmenden Backpropagation-Elementen ableiten lässt. Ich werde nicht auf Feinheiten eingehen, doch alles, was ich über RNNs gesagt habe, bleibt genau das Äquivalent, mit Ausnahme der wissenschaftlichen Struktur für die Verarbeitung der Aktualisierung (die Zeile self.h = … ) wird etwas verworrener. Von hier an werde ich die Ausdrücke “RNN/LSTM” umgekehrt verwenden, doch alle Prüfungen in diesem Beitrag verwenden eine LSTM.