Fragen beim Übergang vom Vanilla Neural Network zum Recurrent Neural Network


8

Ich habe kürzlich erfahren, wie ein neuronales Vanille-Netzwerk mit einer bestimmten Anzahl von Eingaben, versteckten Knoten und der gleichen Anzahl von Ausgaben wie Eingaben funktionieren würde.

Ich habe mir verschiedene Beiträge angesehen, die sich jetzt auf wiederkehrende neuronale Netze beziehen, und ich verstehe das Konzept dahinter, aber ich verstehe bestimmte Teile der Logik hinter dem RNN nicht.

Hier sind vier Hauptfragen, die ich habe:

  1. Wie funktioniert die Rückausbreitung in einem wiederkehrenden neuronalen Netzwerk?
  2. Sind die Gewichte, die von der Eingabe zu den versteckten Knoten führen, für jeden zweiten Schritt gleich? Was ist mit den Gewichten von den versteckten Knoten zu den Ausgängen?
  3. Wie funktionieren Verzerrungen in einem wiederkehrenden neuronalen Netzwerk genau?
  4. Warum wird die Tanh-Funktion normalerweise anstelle der Sigmoid-Funktion als Aktivierungsfunktion verwendet?

Mir ist klar, dass einige dieser Fragen sehr grundlegend sind, aber ich denke, die Grundlagen sind genau das, was ich gerade brauche.

Sogar Links zu verwandten Videos oder Posts sind äußerst hilfreich, ebenso wie Google-Keywords, die die richtigen Ergebnisse zeigen. Diese vier Fragen hindern mich daran, Beispiel-Python-Codes zu verstehen, daher brauche ich wirklich Hilfe.


"die gleiche Anzahl von Ausgängen wie Eingänge". Warte was? Seien Sie vorsichtig damit - es kommt nicht oft vor, dass Sie auf eine NN stoßen, bei der Ihre Aussage wahr wäre. Diese Zahlen können sehr unterschiedlich sein und ich kann mir nicht vorstellen, wann ich das letzte Mal an einem NN gearbeitet habe, bei dem meine Ein- und Ausgänge genau übereinstimmten. Ihre Eingaben basieren auf den verfügbaren Funktionen. Ihre Ausgaben hängen von der Antwort ab, die Sie erhalten möchten (Binär, Klassifizierung usw.). Sehr selten, dass diese beiden zusammenpassen.
I_Play_With_Data

Antworten:


3

Diese Frage befasst sich mit einigen sehr wichtigen Eigenschaften von RNNs und DNNs im Allgemeinen. Ich beantworte jede Ihrer Unterfragen, allerdings nicht in derselben Reihenfolge (ich werde versuchen hervorzuheben, wo ich mich befinde).

Parameterfreigabe

Wb

Die gemeinsame Nutzung von Parametern bietet mehrere Vorteile:

  • Wir haben jetzt viel weniger Parameter. Es gibt 1 wiederholten Block anstelle von 20 separaten Schichten. Eine 20-fache Ermäßigung!
  • Dies multipliziert effektiv die Trainingsdaten. Die wiederkehrende Schicht lernt aus jedem Wort in einem einzelnen Beispielsatz, während jede Schicht in einem MLP aus einem einzelnen Wort pro Satz lernt.
  • Unser Netzwerk ist jetzt viel flexibler. Wir können Sätze mit bis zu 20 Wörtern trainieren und dann auf einen Satz mit 25 Wörtern verallgemeinern, indem wir weitere Schritte hinzufügen oder eine dynamische RNN verwenden

Netzwerkarchitektur

Sie fragen nach Tanh- und Sigmoid-Aktivierungen. Um dies zu beantworten, müssen wir über spezifische RNN-Architekturen sprechen. Das oben diskutierte einfache RNN hat eine einzige Aktivierung. Einfache RNNs verursachen aufgrund der wiederholten Anwendung der gleichen Gewichte und Aktivierungsfunktionen das Problem , dass Gradienten verschwinden (oder explodieren!).

Gated RNN-Blöcke (wie GRUs und LSTMs) verwenden Gating-Mechanismen, um Aktivierungen in und aus Speicherzuständen zu leiten und Speicherzustände mit Eingaben zu kombinieren, um die Ausgabe jedes Blocks zu erzeugen. Aus diesem Grund können Gates verhindern, dass sich der Gradient rückwärts ausbreitet. Sigmoid ist eine häufige Aktivierungsfunktion für Gates, da es Aktivierungen auf (0,1) --- 0 drückt und die Aktivierung vollständig stoppt und 1 sie durchlässt. Jede anständige Aktivierungsfunktion mit einem ähnlichen Quetschprofil funktioniert jedoch. Anekdotisch ist hartes Sigmoid heutzutage ziemlich häufig.

Zusätzlich zu den Gates haben Gate-RNN-Blöcke einen internen Zustand, für den die Aktivierung ziemlich unterschiedlich ist. Da das Gating den Gradienten-Backprop begrenzt, haben wir bei dieser Aktivierung viel Flexibilität. Es muss zum Beispiel nicht gequetscht werden, und hier werden oft die gleichrichtenden Aktivierungen (relu, elu, islu usw.) gesehen. Tanh ist auch eine absolut vernünftige Wahl.

In Bezug auf Verzerrungen und Gewichte hat jede Aktivierung in einer RNN-Zelle typischerweise ihr eigenes Gewicht und ihre eigene Verzerrung. Eine GRU hat also 3 Aktivierungen (ausgeblendet, aktualisiert und zurückgesetzt) ​​und jede hat ihr eigenes Gewicht und ihre eigene Tendenz. Denken Sie jedoch daran, dass diese als RNN für jeden Zeitschritt wiederverwendet werden.

Rückwärtspass

Das deckt den Vorwärtsdurchlauf ziemlich gut ab, aber Sie stellen auch eine wichtige Frage, wie sich der Fehler rückwärts ausbreitet. Es gibt zwei Methoden, um dies zu erreichen.

Lehrer zwingen

Für RNNs, die zu jedem Zeitschritt eine Vorhersage ausgeben (z. B. Vorhersage des Ergebnisses der folgenden Schritte, Übersetzung oder Phonemerkennung), ist das Erzwingen des Lehrers eine Methode zum Isolieren jedes Schritts des RNN. Durch das Entfernen dieser Abhängigkeiten ermöglicht Teacher Forcing RNN, konventionelles Backprop mit der Kettenregel zu verwenden.

txtyt1tt1t. Wir haben daher alle Verbindungen im Laufe der Zeit aus dem Netzwerk entfernt.

yt1ot1

Rückausbreitung durch die Zeit

nxhoy

BPTT funktioniert in den folgenden Schritten.

  1. otot,yt
  2. ht
  3. n WtW

Weiterführende Literatur

Ich empfehle Kapitel 10 von Goodfellow, Bengio und Courvilles Deep Learning, um weitere Informationen zu RNNs zu erhalten. Zusätzlich ist Graves ' RNN-Buch fantastisch für Details auf höherer Ebene

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.