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
W.b
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.
txtyt - 1tt - 1t. Wir haben daher alle Verbindungen im Laufe der Zeit aus dem Netzwerk entfernt.
yt−1ot−1
Rückausbreitung durch die Zeit
nxhoy
BPTT funktioniert in den folgenden Schritten.
- ∇otot,yt
- ∇ht
- 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