Es gibt wiederkehrende neuronale Netze und rekursive neuronale Netze. Beide werden normalerweise mit dem gleichen Akronym bezeichnet: RNN. Laut Wikipedia sind Recurrent NN in der Tat Recursive NN, aber ich verstehe die Erklärung nicht wirklich.
Außerdem scheine ich nicht zu finden, was (mit Beispielen oder so) für die Verarbeitung natürlicher Sprache besser ist. Tatsache ist, dass Socher in seinem Tutorial zwar Recursive NN für NLP verwendet , ich aber keine gute Implementierung rekursiver neuronaler Netzwerke finde. Wenn ich in Google suche, beziehen sich die meisten Antworten auf Recurrent NN.
Gibt es außerdem eine andere DNN, die für NLP besser geeignet ist, oder hängt sie von der NLP-Aufgabe ab? Deep Belief Netze oder gestapelte Autoencoder? (Ich finde anscheinend keinen besonderen Nutzen für ConvNets in NLP, und die meisten Implementierungen beziehen sich auf die Bildverarbeitung.)
Schließlich würde ich DNN-Implementierungen für C ++ (besser noch, wenn es GPU-Unterstützung hat) oder Scala (besser, wenn es Spark-Unterstützung hat) lieber als Python oder Matlab / Octave.
Ich habe Deeplearning4j ausprobiert, aber es wird ständig weiterentwickelt und die Dokumentation ist ein wenig veraltet und ich kann es scheinbar nicht zum Laufen bringen. Schade, denn es hat die "Black Box" -ähnliche Art Dinge zu tun, sehr ähnlich wie Scikit-Learn oder Weka, was ich wirklich will.
quelle
Rekurrente Neuronale Netze (RNN) entfalten sich im Wesentlichen über die Zeit. Es wird für sequentielle Eingaben verwendet, bei denen der Zeitfaktor der Hauptunterscheidungsfaktor zwischen den Elementen der Sequenz ist. Hier ist zum Beispiel ein wiederkehrendes neuronales Netzwerk, das für die Sprachmodellierung verwendet wird und im Laufe der Zeit entfaltet wurde. Bei jedem Zeitschritt wird zusätzlich zur Benutzereingabe zu diesem Zeitschritt auch die Ausgabe der verborgenen Ebene akzeptiert, die im vorherigen Zeitschritt berechnet wurde.
Ein rekursives neuronales Netzwerk ähnelt eher einem hierarchischen Netzwerk, in dem die Eingabesequenz keinen zeitlichen Aspekt aufweist, sondern die Eingabe hierarchisch in einer Baumstruktur verarbeitet werden muss. Hier ist ein Beispiel, wie ein rekursives neuronales Netzwerk aussieht. Es zeigt den Weg, einen Analysebaum eines Satzes zu lernen, indem rekursiv die Ausgabe der Operation genommen wird, die an einem kleineren Teil des Textes ausgeführt wird.
[ HINWEIS ]:
LSTM und GRU sind zwei erweiterte RNN-Typen mit dem Vergessen-Gate, die in NLP sehr verbreitet sind.
LSTM-Zellformel:
quelle