Was ist der grundlegende Unterschied zwischen Faltungs-Neuronalen Netzen und wiederkehrenden Neuronalen Netzen? Wo werden sie angewendet?
neural-networks
convolutional-neural-networks
recurrent-neural-networks
comparison
Pradeep BV
quelle
quelle
Antworten:
Grundsätzlich speichert ein CNN eine Reihe von Gewichten und wendet sie räumlich an. Zum Beispiel könnte ich in einer Ebene 32 Sätze von Gewichten haben (auch Feature-Maps genannt). Jeder Satz von Gewichten ist ein 3x3-Block, was bedeutet, dass ich 3x3x32 = 288 Gewichte für diese Ebene habe. Wenn Sie mir ein Eingabebild für jede 3x3-Karte gegeben haben, schiebe ich es über alle Pixel im Bild und multipliziere die Regionen miteinander. Ich wiederhole dies für alle 32 Feature-Maps und gebe die Ausgaben weiter. Also lerne ich ein paar Gewichte, die ich an vielen Orten anwenden kann.
Bei einem RNN handelt es sich um eine Reihe von Gewichten, die zeitlich (über die Zeit) angewendet werden. Eine Eingabe kommt herein und wird mit dem Gewicht multipliziert. Das Netzwerk speichert einen internen Zustand und gibt eine Art Ausgabe aus. Dann kommt das nächste Datenelement herein und wird mit dem Gewicht multipliziert. Der interne Status, der aus dem letzten Datenelement erstellt wurde, wird jedoch ebenfalls eingegeben und mit einem anderen Gewicht multipliziert. Diese werden addiert und die Ausgabe stammt von einer Aktivierung, die auf die Summe angewendet wird, multipliziert mit einem anderen Gewicht. Der interne Status wird aktualisiert und der Vorgang wiederholt.
CNNs Arbeit ist wirklich gut für Computer Vision. Auf den niedrigen Ebenen möchten Sie häufig Dinge wie vertikale und horizontale Linien finden. Diese Art von Dingen wird überall auf den Bildern zu finden sein, daher ist es sinnvoll, Gewichte zu haben, die Sie überall in den Bildern anwenden können.
RNNs sind wirklich gut für die Verarbeitung natürlicher Sprache. Sie können sich vorstellen, dass das nächste Wort in einem Satz stark von den vorhergehenden beeinflusst wird. Daher ist es sinnvoll, diesen internen Zustand fortzuführen und eine kleine Menge von Gewichten zu verwenden, die für jede Eingabe gelten können.
Es gibt jedoch viel mehr Anwendungen. Darüber hinaus haben CNNs bei NLP-Aufgaben gute Leistungen erbracht. Es gibt auch fortgeschrittenere Versionen von RNNs namens LSTMs, die Sie ausprobieren können.
Eine Erklärung der CNNs finden Sie im Stanford CS231n-Kurs . Schauen Sie sich besonders Vorlesung 5 an. Auf YouTube gibt es Videos der ganzen Klasse.
Eine Erklärung der RNNs finden Sie hier .
quelle
Wiederkehrende neuronale Netze (RNNs) sind künstliche neuronale Netze (ANNs), die eine oder mehrere wiederkehrende (oder zyklische) Verbindungen aufweisen, anstatt nur Feed-Forward-Verbindungen wie ein Feed-Forward-Neuronales Netzwerk (FFNN) zu haben.
Diese zyklischen Verbindungen werden verwendet, um zeitliche Beziehungen oder Abhängigkeiten zwischen den Elementen einer Sequenz zu verfolgen. Daher sind RNNs für die Sequenzvorhersage oder verwandte Aufgaben geeignet.
In der Abbildung unten sehen Sie links eine RNN (die nur eine versteckte Einheit enthält), die der RNN rechts entspricht, bei der es sich um die "entfaltete" Version handelt. Zum Beispiel können wir das beobachtenh1 (Die versteckte Einheit im Zeitschritt t = 1 ) empfängt beide eine Eingabe x1 und der Wert der versteckten Einheit im vorherigen Zeitschritt, d. h. h0 .
Die zyklischen Verbindungen (oder die Gewichte der zyklischen Kanten) werden wie die Vorwärtskopplungsverbindungen unter Verwendung eines Optimierungsalgorithmus (wie Gradientenabstieg) gelernt, der häufig mit einer Rückausbreitung kombiniert wird (die zur Berechnung des Gradienten der Verlustfunktion verwendet wird). .
Faltungs neuronale Netze (CNNs) sind ANNs die eine oder mehrere durchführen Faltung (oder Kreuzkorrelation , gefolgt von einem) Operationen (oft Downsampling - Betrieb).
Die Faltung ist eine Operation, die zwei Funktionen übernimmt:f und h als Eingabe und erzeugt eine dritte Funktion, g = f⊛ h , wo das Symbol ⊛ bezeichnet die Faltungsoperation. Im Kontext von CNNs die Eingabefunktionf kann zB ein Bild sein (das als Funktion von 2D-Koordinaten bis zu RGB- oder Graustufenwerten betrachtet werden kann). Die andere Funktionh wird als "Kernel" (oder Filter) bezeichnet, der als (kleine und quadratische) Matrix (die die Ausgabe der Funktion enthält) betrachtet werden kann h ). f kann auch als (große) Matrix betrachtet werden (die für jede Zelle z. B. ihren Graustufenwert enthält).
Im Zusammenhang mit CNNs kann die Faltungsoperation als Punktprodukt zwischen dem Kernel betrachtet werdenh (eine Matrix) und mehrere Teile der Eingabe (eine Matrix).
Im Bild unten führen wir eine elementweise Multiplikation zwischen dem Kernel durchh und ein Teil der Eingabe h Dann addieren wir die Elemente der resultierenden Matrix, und das ist der Wert der Faltungsoperation für diesen bestimmten Teil der Eingabe.
Um genauer zu sein, führen wir im obigen Bild die folgende Operation aus
wo⊗ ist die elementweise Multiplikation und die Summation ∑i j ist über alle Zeilen ich und Spalten j (der Matrizen).
Um alle Elemente von zu berechnenG können wir an den Kernel denken h als über die Matrix geschoben f .
Im Allgemeinen funktioniert der Kernelh kann behoben werden. Im Kontext von CNNs ist jedoch der Kernelh stellt die lernbaren Parameter des CNN dar: mit anderen Worten, während des Trainingsvorgangs (z. B. unter Verwendung von Gradientenabstieg und Rückausbreitung) dieser Kernel h (was somit als eine Matrix von Gewichten betrachtet werden kann) ändert sich.
Im Kontext von CNNs gibt es oft mehr als einen Kernel: Mit anderen Worten, es ist oft der Fall, dass eine Folge von Kernelnh1,h2, … ,hk wird angewendet auf f eine Folge von Windungen zu erzeugen G1,G2, … ,Gk . Jeder Kernelhich wird verwendet, um "verschiedene Merkmale der Eingabe zu erkennen", so dass sich diese Kernel voneinander unterscheiden.
Ein Downsampling- Vorgang ist ein Vorgang, bei dem die Eingabegröße reduziert wird, während versucht wird, so viele Informationen wie möglich beizubehalten. Zum Beispiel, wenn die Eingabegröße a ist2 × 2 Matrix f= [1320]] Eine übliche Down-Sampling-Operation wird als Max-Pooling bezeichnet , was im Fall vonf , kehrt zurück 3 (das maximale Element von f ).
CNNs eignen sich besonders für hochdimensionale Eingaben (z. B. Bilder), da sie im Vergleich zu FFNNs eine geringere Anzahl lernbarer Parameter verwenden (die im Kontext von CNNs die Kernel sind). Sie werden daher häufig verwendet, um beispielsweise Bilder zu klassifizieren.
Was ist der grundlegende Unterschied zwischen RNNs und CNNs? RNNs haben wiederkehrende Verbindungen, während CNNs diese nicht unbedingt haben. Die Grundoperation eines CNN ist die Faltungsoperation, die in einem Standard-RNN nicht vorhanden ist.
quelle
CNN gegen RNN
CNN
Ein Faltungsnetzwerk (ConvNet) besteht aus Schichten. In einem Faltungsnetzwerk (ConvNet) gibt es grundsätzlich drei Arten von Schichten:
Von diesen wendet die Faltungsschicht eine Faltungsoperation auf den eingegebenen 3D-Tensor an. Verschiedene Filter extrahieren verschiedene Arten von Merkmalen aus einem Bild. Das folgende GIF veranschaulicht diesen Punkt sehr gut:
Hier ist der Filter die grüne 3x3-Matrix, während das Bild die blaue 7x7-Matrix ist.
Viele solcher Schichten durchlaufen Filter in CNN, um eine Ausgangsschicht zu erhalten, die wiederum eine vollständig verbundene NN-Schicht oder ein 3D-Tensor sein kann.
Im obigen Beispiel durchläuft das Eingabebild beispielsweise die Faltungsschicht, dann die Poolschicht, dann die Faltungsschicht, die Poolschicht, dann wird der 3D-Tensor wie eine 1D-Schicht des neuronalen Netzwerks abgeflacht, dann zu einer vollständig verbundenen Schicht und schließlich zu einer Softmax-Schicht. Dies macht eine CNN.
RNN
Recurrent Neural Network (RNN) ist eine Art neuronales Netzwerk, bei dem die Ausgabe des vorherigen Schritts als Eingabe in den aktuellen Schritt eingespeist wird.
Hier,xt - 1 ,,, xt und xt + 1 sind die Werte von Eingabedaten, die zu bestimmten Zeitschritten auftreten und in die RNN eingespeist werden, die nämlich durch die verborgenen Schichten geht ht - 1 ,,, ht und ht + 1 was weiter Ausgabe erzeugt Öt - 1 ,,, Öt und Öt + 1 beziehungsweise.
quelle
Grundsätzlich ist ein RNN ein neuronales Netzwerk, dessen nächster Zustand von seinen früheren Zuständen abhängt, während ein CNN ein neuronales Netzwerk ist, das durch Faltung eine Dimensionsreduktion (Verkleinerung großer Daten unter Beibehaltung von Informationen) durchführt. Sehen Sie diese für weitere Informationen auf Faltungen
quelle
Wenn beide auf die natürliche Sprache angewendet werden, können CNNs lokale und positionsinvariante Merkmale gut extrahieren, erfassen jedoch keine semantischen Abhängigkeiten mit großer Reichweite. Es werden nur lokale Schlüsselphrasen berücksichtigt.
Wenn also das Ergebnis durch den gesamten Satz oder eine weitreichende semantische Abhängigkeit bestimmt wird, ist CNN nicht effektiv, wie in diesem Artikel gezeigt, in dem die Autoren beide Architekturen auf NLP-Aufnahmen verglichen haben.
Dies kann für den allgemeinen Fall erweitert werden.
quelle