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:
- Wie funktioniert die Rückausbreitung in einem wiederkehrenden neuronalen Netzwerk?
- 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?
- Wie funktionieren Verzerrungen in einem wiederkehrenden neuronalen Netzwerk genau?
- 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.
Antworten:
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
Die gemeinsame Nutzung von Parametern bietet mehrere Vorteile:
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.
Rückausbreitung durch die Zeit
BPTT funktioniert in den folgenden Schritten.
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
quelle