Ich habe über die Recurrent Neural Networks (RNN) und ihre Varietäten sowie Convolutional Neural Networks (CNN) und ihre Varietäten nachgedacht.
Wären diese beiden Punkte fair zu sagen:
Verwenden Sie CNNs, um eine Komponente (z. B. ein Bild) in Unterkomponenten (z. B. ein Objekt in einem Bild, z. B. den Umriss des Objekts im Bild usw.) zu unterteilen.
Verwenden Sie RNNs, um Kombinationen von Unterkomponenten zu erstellen (Bildunterschriften, Textgenerierung, Sprachübersetzung usw.).
Ich würde mich freuen, wenn jemand auf Ungenauigkeiten in diesen Aussagen hinweisen möchte. Mein Ziel hier ist es, eine klarere Grundlage für die Verwendung von CNNs und RNNs zu erhalten.
Ein CNN lernt, Muster im Raum zu erkennen. Ein CNN lernt also, wie Sie sagen, Komponenten eines Bildes (z. B. Linien, Kurven usw.) zu erkennen und diese Komponenten dann zu kombinieren, um größere Strukturen (z. B. Gesichter, Objekte usw.) zu erkennen.
Man kann ganz allgemein sagen, dass ein RNN in ähnlicher Weise lernt, Muster im Laufe der Zeit zu erkennen. Ein RNN, der für die Übersetzung von Text geschult ist, kann also lernen, dass "Hund" anders übersetzt werden sollte, wenn das Wort "heiß" vorangestellt wird.
Der Mechanismus, nach dem die beiden Arten von NN diese Muster darstellen, ist jedoch unterschiedlich. Bei einer CNN suchen Sie in allen Unterfeldern des Bildes nach denselben Mustern. Bei einem RNN füttern Sie (im einfachsten Fall) die verborgenen Ebenen aus dem vorherigen Schritt als zusätzliche Eingabe in den nächsten Schritt. Während das RNN in diesem Prozess Speicher aufbaut, sucht es nicht in der gleichen Weise nach denselben Mustern über verschiedene Zeitscheiben wie ein CNN nach denselben Mustern über verschiedene Regionen des Raums.
Ich sollte auch beachten, dass wenn ich hier "Zeit" und "Raum" sage, es nicht zu wörtlich genommen werden sollte. Sie könnten zum Beispiel eine RNN für ein einzelnes Bild zur Bildunterschrift ausführen, und die Bedeutung von "Zeit" wäre einfach die Reihenfolge, in der verschiedene Teile des Bildes verarbeitet werden. Zu Beginn bearbeitete Objekte informieren also über die Beschriftung später bearbeiteter Objekte.
Unter karpathy.github.io/assets/rnn/diags.jpeg - eine häufig kopierte Grafik - erhalten Sie eine gute Vorstellung von den Unterschieden des RNN-Modells . CNNs sind zusammen mit MLPs und anderen nicht-rekursiven Modellen nur für die Implementierung des Eins-zu-Eins-Modells zuständig.
Neil Slater
@NeilSlater Ich kenne sogar den Originalartikel dieses Bildes, konnte aber nie etwas Nützliches daraus extrahieren. Könnten Sie bitte erläutern, was Sie aus dem Bild gelernt haben?
Hi-Angel
2
@ Hi-Angel: Das Bild visualisiert mögliche Beziehungen zwischen Sequenzen und einzelnen Entitäten, die von einem Modell abgebildet werden können. Wenn Sie die Permutationen bereits gut verstehen, erhalten Sie möglicherweise nichts davon. Der Grund, warum das Bild in dem Artikel erscheint, ist, dass es die relative Flexibilität von RNNs demonstriert: Ein RNN kann auf alle verschiedenen Arten von angezeigten Problemen angewendet werden (z. B. kann es bei Sprachübersetzungsproblemen verwendet werden, die mit dem 4. Element übereinstimmen), während a Das Feed-Forward-Netzwerk gilt nur für Probleme, die mit dem ersten Bild übereinstimmen.
CNN verwendet eine Eingabe mit fester Größe und generiert Ausgaben mit fester Größe.
CNN ist eine Art künstliches neuronales Netz mit Vorwärtskopplung - Variationen von mehrschichtigen Perzeptronen, die so ausgelegt sind, dass sie nur einen minimalen Vorverarbeitungsaufwand erfordern.
CNNs verwenden ein Konnektivitätsmuster zwischen ihren Neuronen, das von der Organisation des tierischen visuellen Kortex inspiriert ist, dessen einzelne Neuronen so angeordnet sind, dass sie auf überlappende Regionen reagieren, die das Gesichtsfeld überlappen.
CNNs sind ideal für die Verarbeitung von Bildern und Videos.
RNN:
RNN kann beliebige Eingabe- / Ausgabelängen verarbeiten.
Im Gegensatz zu vorwärtsgerichteten neuronalen Netzen kann RNN ihren internen Speicher verwenden, um beliebige Folgen von Eingaben zu verarbeiten.
Wiederkehrende neuronale Netze verwenden Zeitreiheninformationen (dh, was ich zuletzt gesprochen habe, wirkt sich auf das aus, was ich als Nächstes spreche.)
CNNs ohne dichte Schichten können Eingaben beliebiger Größe annehmen.
Mikael Rousson
1
Ich denke, dass die beiden Aussagen nicht korrekt sind, da die CNN die Komponente nicht in Unterkomponenten aufteilt, sondern gemeinsame Gewichtungen für alle dort überlappenden Unterkomponenten (Wiederholungsfelder) verwendet, um dasselbe Muster zu finden. Es ist kein Divide-and-Conquer-Algorithmus.
Im Allgemeinen neigen CNNs dazu, lokale und positionsinvariante (unabhängig von ihrer Position) Merkmale zu extrahieren, und RNNs neigen dazu, über die Zeit hinweg unterschiedliche Muster zu finden, selbst wenn sie weit entfernt sind.
Beispielsweise können CNNs, wenn beide auf natürliche Sprache angewendet werden, lokale und positionsinvariante Merkmale extrahieren, erfassen jedoch keine semantischen Abhängigkeiten mit großer Reichweite. Es werden nur lokale Schlüsselsätze berücksichtigt.
Wenn das Ergebnis also durch den gesamten Satz oder eine langfristige semantische Abhängigkeit bestimmt wird, ist CNN nicht effektiv, wie in diesem Artikel gezeigt, in dem die Autoren beide Architekturen auf NLP-Takes verglichen.
Unterschied zwischen CNN und RNN sind wie folgt:
CNN:
CNN verwendet eine Eingabe mit fester Größe und generiert Ausgaben mit fester Größe.
CNN ist eine Art künstliches neuronales Netz mit Vorwärtskopplung - Variationen von mehrschichtigen Perzeptronen, die so ausgelegt sind, dass sie nur einen minimalen Vorverarbeitungsaufwand erfordern.
CNNs verwenden ein Konnektivitätsmuster zwischen ihren Neuronen, das von der Organisation des tierischen visuellen Kortex inspiriert ist, dessen einzelne Neuronen so angeordnet sind, dass sie auf überlappende Regionen reagieren, die das Gesichtsfeld überlappen.
CNNs sind ideal für die Verarbeitung von Bildern und Videos.
RNN:
RNN kann beliebige Eingabe- / Ausgabelängen verarbeiten.
Im Gegensatz zu vorwärtsgerichteten neuronalen Netzen kann RNN ihren internen Speicher verwenden, um beliebige Folgen von Eingaben zu verarbeiten.
Wiederkehrende neuronale Netze verwenden Zeitreiheninformationen (dh, was ich zuletzt gesprochen habe, wirkt sich auf das aus, was ich als Nächstes spreche.)
RNNs sind ideal für die Text- und Sprachanalyse.
quelle
Ich denke, dass die beiden Aussagen nicht korrekt sind, da die CNN die Komponente nicht in Unterkomponenten aufteilt, sondern gemeinsame Gewichtungen für alle dort überlappenden Unterkomponenten (Wiederholungsfelder) verwendet, um dasselbe Muster zu finden. Es ist kein Divide-and-Conquer-Algorithmus.
Im Allgemeinen neigen CNNs dazu, lokale und positionsinvariante (unabhängig von ihrer Position) Merkmale zu extrahieren, und RNNs neigen dazu, über die Zeit hinweg unterschiedliche Muster zu finden, selbst wenn sie weit entfernt sind.
Beispielsweise können CNNs, wenn beide auf natürliche Sprache angewendet werden, lokale und positionsinvariante Merkmale extrahieren, erfassen jedoch keine semantischen Abhängigkeiten mit großer Reichweite. Es werden nur lokale Schlüsselsätze berücksichtigt.
Wenn das Ergebnis also durch den gesamten Satz oder eine langfristige semantische Abhängigkeit bestimmt wird, ist CNN nicht effektiv, wie in diesem Artikel gezeigt, in dem die Autoren beide Architekturen auf NLP-Takes verglichen.
quelle