RNN-Topologie (Recurrent Neural Network): Warum immer vollständig verbunden?

8

Ich habe angefangen, über wiederkehrende neuronale Netze (RNNs) und Langzeit-Kurzzeitgedächtnis (LSTM) zu lesen ... (... oh, nicht genug Wiederholungspunkte hier, um Referenzen aufzulisten ...)

Eine Sache verstehe ich nicht: Es scheint immer, dass Neuronen in jeder Instanz einer verborgenen Schicht mit jedem Neuron in der vorherigen Instanz der verborgenen Schicht "vollständig verbunden" werden, anstatt nur mit der Instanz ihres früheren Selbst verbunden zu sein / Selbst (und vielleicht ein paar andere).

Ist die vollständige Vernetzung wirklich notwendig? Es scheint, als könnten Sie viel Speicher- und Ausführungszeit sparen und später weiter zurückblicken, wenn dies nicht erforderlich ist.

Hier ist ein Diagramm meiner Frage ...

rnn image: vollständig verbunden oder teilweise verbunden

Ich denke, dies läuft darauf hinaus zu fragen, ob es in Ordnung ist, nur die diagonalen (oder nahezu diagonalen) Elemente in der "W ^ hh" -Matrix der "Synapsen" zwischen der wiederkehrenden verborgenen Schicht beizubehalten. Ich habe versucht, dies mit einem funktionierenden RNN-Code (basierend auf Andrew Trask 'Demo der binären Addition ) auszuführen - dh alle nicht diagonalen Terme auf Null zu setzen - und es hat eine schreckliche Leistung erbracht, aber die Terme in der Nähe der Diagonale gehalten, dh eine gebänderte Linearität System 3 Elemente breit - schien so gut zu funktionieren wie die vollständig verbundene Version. Selbst wenn ich die Größe der Eingaben und der versteckten Ebene vergrößert habe ... Also ... hatte ich gerade Glück?

Ich fand eine Arbeit von Lai Wan Chan, in der er demonstrierte, dass es für lineare Aktivierungsfunktionen immer möglich ist, ein Netzwerk auf die "jordanische kanonische Form" (dh die diagonalen und nahe gelegenen Elemente) zu reduzieren. Für Sigmoide und andere nichtlineare Aktivierungen scheint jedoch kein solcher Beweis verfügbar zu sein.

Mir ist auch aufgefallen, dass Verweise auf "teilweise verbundene" RNNs nach etwa 2003 größtenteils verschwinden , und die Behandlungen, die ich in den letzten Jahren gelesen habe, scheinen alle eine vollständige Verbindung anzunehmen. Also ... warum ist das so?

sh37211
quelle
1
Gib mir die Referenzen und ich werde sie für dich posten, wenn du willst.
Antoni Parellada
Sie können Ihren eigenen Beitrag kommentieren, und ich denke, Sie setzen (mindestens) einen Link pro Kommentar.
Mark L. Stone
@ AntoniParellada Danke! Ich kann nicht herausfinden, wie ich direkt eine Nachricht
senden soll
Karpathy Post auf RNNs: karpathy.github.io/2015/05/21/rnn-effectiveness
sh37211
Andrew Trask Beitrag / Tutorial: iamtrask.github.io/2015/11/15/anyone-can-code-lstm
sh37211

Antworten:

2

Ein Grund könnte in der mathematischen Bequemlichkeit liegen. Das wiederkehrende neuronale Vanille-Netzwerk ( Elman-Typ ) kann wie folgt formuliert werden:

, wobeif(ht=f(xt,ht- -1)f()σ(W.xt+U.ht- -1)

U.

W.U.

fishiwhj
quelle
0

Sie können 2 Eingangsneuronen verwenden, wenn Sie sie ähnlich wie bei der schnellen Walsh-Hadamard-Transformation anordnen. Ein fehl am Platz befindlicher Algorithmus würde also darin bestehen, den Eingabevektor nacheinander 2 Elemente gleichzeitig zu durchlaufen. Lassen Sie 2 Neuronen mit 2 Eingängen auf jedes Elementpaar einwirken. Platzieren Sie die Ausgabe des ersten Neurons nacheinander in der unteren Hälfte eines neuen Vektorarrays, die Ausgabe des zweiten Neurons nacheinander in der oberen Hälfte des neuen Vektorarrays. Wiederholen Sie dies mit dem neuen Vektorarray als Eingabe. Nachdem log_base_2 (n) eine Änderung in einem einzelnen der Eingabeelemente wiederholt hat, können möglicherweise alle Ausgaben geändert werden. Welches ist das Beste, was Sie tun können. n muss eine positive ganzzahlige Potenz von 2 sein.

Sean O'Connor
quelle