Wie verbreite ich wiederkehrende neuronale Netze (RNN)?

8

Ich lerne über künstliche neuronale Netze und habe ein Standard-Feed-Forward-Netz mit ein paar versteckten Schichten implementiert. Jetzt versuche ich zu verstehen, wie ein rekurrentes neuronales Netzwerk (RNN) in der Praxis funktioniert, und habe Probleme damit, wie die Aktivierung / Ausbreitung durch das Netzwerk fließt.

In meinem Feed-Forward ist die Aktivierung ein einfaches schichtweises Abfeuern der Neuronen. In einem wiederkehrenden Netz verbinden sich die Neuronen zurück mit vorherigen Schichten und manchmal selbst, so dass die Art und Weise, das Netzwerk zu propagieren, unterschiedlich sein muss. Das Problem ist, ich kann anscheinend keine Erklärung dafür finden, wie die Verbreitung genau geschieht.

Wie könnte es passieren, sagen Sie für ein Netzwerk wie folgt:

%Vor%

Ich stellte mir vor, es wäre eine rollende Aktivierung mit einem allmählichen Absterben, da die Neuronenschwellen das Neuron auf 0 absenken, ähnlich wie in der Biologie, aber es scheint, dass es einen viel effizienteren Weg gibt, dies durch Derivate zu tun.

    
Frayed 13.10.2012, 23:52
quelle

2 Antworten

4

Ich glaube, ich verstehe jetzt das Grundprinzip der Propagierung von rekurrenten versus vorwärtsgerichteten Netzwerken: ein expliziter Zeitschritt.

In einer Vorwärtskopplung erfolgt die Ausbreitung Schicht für Schicht, so dass Schicht-1-Neuronen zuerst feuern, gefolgt von Schichten 2, 3 usw., so dass die Ausbreitung eine Neuronenaktivierung ist, die die Aktivierung in den Neuronen stimuliert, die sie als Eingabe verwenden / p>

Alternativ können wir uns stattdessen die Fortpflanzung vorstellen, da die Neuronen, deren Eingänge zu einem bestimmten Zeitpunkt aktiv sind, zu feuern sind. Also, wenn wir eine Zeit t = 0 haben, sind Schicht-1-Neuronen aktiv, zum nächsten Zeitpunkt t = 1 wird die nächste Schicht Schicht 2 aktivieren, da die Neuronen in Schicht 2 die Neuronen in Schicht 1 als Eingabe nehmen.

Während der Unterschied im Denken als Semantik erscheinen mag, war es für mich entscheidend, herauszufinden, wie man wiederkehrende Netzwerke implementiert. Im Feed-Forward ist der Zeitschritt implizit, und der Code läuft der Reihe nach über die Neuronenschichten und aktiviert sie wie fallende Dominosteine. In einem rekurrenten Netzwerk wäre es ein Alptraum für große, verschachtelte Netzwerke, wenn man versucht, den Fall-Domino-Aktivierungsweg zu wählen, bei dem jedes Neuron spezifiziert, welches Neuron es als nächstes aktiviert. Stattdessen ist es sinnvoll, sehr neuron im Netzwerk zu einer gegebenen Zeit t abzufragen, um zu sehen, ob es basierend auf seinen Eingaben aktiviert wird.

Es gibt natürlich viele verschiedene Arten von rekurrenten neuronalen Netzwerken, aber ich denke, dass dieser entscheidende explizite Zeitschritt der Schlüssel für die wiederholte Netzwerkausbreitung ist.

Der Differentialgleichungsabschnitt, über den ich mich wunderte, kommt ins Spiel, wenn statt diskreter Zeitschritte von t 0, 1, 2 usw. zu sein, um einen glatteren, kontinuierlicheren Netzwerkfluß durch Modellieren der Ausbreitung über sehr zu versuchen kleine Zeitinkremente wie 0,2, 0,1, 0,05 usw.

    
Frayed 16.10.2012, 16:41
quelle
1

Das Eingangssignal s (t) ist für die verschiedenen Zeitschritte t = t0, t1, t2 ... tN gegeben. In einer wiederkehrenden Schicht kommen die Eingänge sowohl aus dem Eingangssignal als auch aus dem Zustand des Netzwerks, dem Erregungslevel aus dem vorherigen Zeitschritt. Sie müssen also den internen Zustand aus dem Eingangssignal und dem internen Zustand previous (Anregungslevel von wiederkehrenden Neuronen) aktualisieren.

    
Anders Forsgren 16.10.2012 16:59
quelle