Was ist der Unterschied zwischen neuronalen Faltungsnetzen, eingeschränkten Boltzmann-Maschinen und Autocodierern?

123

Kürzlich habe ich über tiefes Lernen gelesen und ich bin verwirrt über die Begriffe (oder sagen wir Technologien). Was ist der Unterschied zwischen

  • Faltungsneurale Netze (CNN),
  • Eingeschränkte Boltzmann-Maschinen (RBM) und
  • Auto-Encoder?
RockTheStar
quelle

Antworten:

237

Autoencoder ist ein einfaches neuronales Netzwerk mit drei Schichten, bei dem die Ausgabeeinheiten direkt mit den Eingabeeinheiten verbunden sind . ZB in einem Netzwerk wie diesem:

Bildbeschreibung hier eingeben

output[i]hat input[i]für jeden rand zurück i. Typischerweise ist die Anzahl der ausgeblendeten Einheiten viel geringer als die Anzahl der sichtbaren (Eingabe / Ausgabe). Wenn Sie Daten durch ein solches Netzwerk leiten, komprimiert (codiert) es zunächst den Eingabevektor, um ihn in eine kleinere Darstellung zu "passen", und versucht dann, ihn wieder zu rekonstruieren (zu dekodieren). Die Aufgabe des Trainings ist es, einen Fehler oder eine Rekonstruktion zu minimieren, dh die effizienteste kompakte Darstellung (Kodierung) für Eingabedaten zu finden.

RBM teilt eine ähnliche Idee, verwendet jedoch einen stochastischen Ansatz. Anstelle von deterministischen (z. B. logistischen oder ReLU) werden stochastische Einheiten mit einer bestimmten (in der Regel binären oder Gaußschen) Verteilung verwendet. Die Lernprozedur besteht aus mehreren Schritten der Gibbs-Abtastung (Propagieren: Probenverstecke bei Sichtbarkeit; Rekonstruieren: Probenverstecke bei Sichtbarkeit; Wiederholen) und dem Anpassen der Gewichte, um den Rekonstruktionsfehler zu minimieren.

Bildbeschreibung hier eingeben

Hinter RBMs steckt die Intuition, dass es einige sichtbare Zufallsvariablen (z. B. Filmkritiken von verschiedenen Benutzern) und einige versteckte Variablen (wie Filmgenres oder andere interne Funktionen) gibt. Die Aufgabe des Trainings besteht darin, herauszufinden, wie diese beiden Variablensätze tatsächlich sind miteinander verbunden (mehr zu diesem Beispiel finden Sie hier ).

Faltungs-Neuronale Netze sind diesen beiden ähnlich, aber anstatt eine einzige globale Gewichtsmatrix zwischen zwei Schichten zu lernen, zielen sie darauf ab, eine Reihe lokal verbundener Neuronen zu finden. CNNs werden hauptsächlich zur Bilderkennung verwendet. Ihr Name kommt vom "Faltungs" -Operator oder einfach "Filter". Kurz gesagt, Filter sind eine einfache Möglichkeit, komplexe Operationen durch einfaches Ändern eines Faltungskerns durchzuführen. Wenn Sie den Gaußschen Weichzeichner anwenden, wird er geglättet. Wenn Sie Canny Kernel anwenden, werden alle Kanten angezeigt. Wenden Sie den Gabor-Kernel an, um Verlaufsfunktionen zu erhalten.

Bildbeschreibung hier eingeben

(Bild von hier )

Das Ziel von Faltungs-Neuronalen Netzen besteht nicht darin, einen vordefinierten Kernel zu verwenden, sondern datenspezifische Kernel zu erlernen . Die Idee ist die gleiche wie bei Autoencodern oder RBMs - viele Funktionen auf niedriger Ebene (z. B. Benutzerrezensionen oder Bildpixel) in die komprimierte Darstellung auf hoher Ebene (z. B. Filmgenres oder Kanten) umsetzen - aber jetzt werden die Gewichte nur von Neuronen gelernt, die es sind räumlich nahe beieinander.

Bildbeschreibung hier eingeben

Alle drei Modelle haben ihre Anwendungsfälle, Vor- und Nachteile, aber die wahrscheinlich wichtigsten Eigenschaften sind:

  1. Autoencoder sind die einfachsten. Sie sind intuitiv verständlich, einfach zu implementieren und zu überlegen (z. B. ist es viel einfacher, gute Metaparameter für sie zu finden als für RBMs).
  2. RBMs sind generativ. Das heißt, im Gegensatz zu Autoencodern, die nur einige Datenvektoren zugunsten anderer unterscheiden, können RBMs auch neue Daten mit einer gegebenen verbundenen Verteilung erzeugen. Sie gelten auch als funktionsreicher und flexibler.
  3. CNNs sind sehr spezifische Modelle, die hauptsächlich für sehr spezielle Aufgaben verwendet werden (obwohl sie sehr beliebt sind). Die meisten Algorithmen der höchsten Ebene in der Bilderkennung basieren heutzutage irgendwie auf CNNs, sind aber außerhalb dieser Nische kaum anwendbar (z. B. was ist der Grund, Faltung für die Analyse von Filmkritiken zu verwenden?).

UPD.

Dimensionsreduzierung

Wenn wir ein Objekt als Vektor von Elementen darstellen, sagen wir, dass dies ein Vektor im dimensionalen Raum ist. Somit Dimensionsreduktion bezieht sich auf ein Verfahren zur Raffination von Daten in einer solchen Weise, dass jeder Datenvektor in einen anderen Vektor übersetzt in einem - dimensionalen Raum (Vektor mit Elementen), wobei . Die wahrscheinlich gebräuchlichste Methode hierfür ist PCA . Grob gesagt findet PCA "interne Achsen" eines Datensatzes ("Komponenten" genannt) und sortiert sie nach ihrer Wichtigkeit. Ersten x x ' m m m < n mnnxxmmm<nmDie wichtigsten Komponenten werden dann als neue Basis verwendet. Jede dieser Komponenten kann als ein Merkmal auf hoher Ebene angesehen werden, das Datenvektoren besser beschreibt als die ursprünglichen Achsen.

Beide - Autoencoder und RBMs - machen dasselbe. Nehmen sie einen Vektor im dimensionalen Raum, übersetzen sie ihn in einen dimensionalen, wobei sie versuchen, so viele wichtige Informationen wie möglich zu speichern und gleichzeitig Rauschen zu entfernen. Wenn das Training von Autoencoder / RBM erfolgreich war, repräsentiert jedes Element des resultierenden Vektors (dh jede versteckte Einheit) etwas Wichtiges am Objekt - die Form einer Augenbraue in einem Bild, das Genre eines Films, das Fachgebiet in einem wissenschaftlichen Artikel usw. Sie Nehmen Sie viele verrauschte Daten als Eingabe und produzieren Sie viel weniger Daten in einer viel effizienteren Darstellung.mnm

Tiefe Architekturen

Also, wenn wir schon PCA hatten, warum zum Teufel haben wir uns Autoencoder und RBMs ausgedacht? Es zeigt sich, dass PCA nur eine lineare Transformation eines Datenvektors erlaubt . Das heißt, mit Hauptkomponenten können Sie nur Vektoren . Das ist schon ziemlich gut, aber nicht immer genug. Egal, wie oft Sie PCA auf eine Datenbeziehung anwenden, die Beziehung bleibt immer linear.c 1 . . c m x = m i = 1 w i c imc1..cmx=i=1mwici

Andererseits sind Autoencoder und RBM von Natur aus nicht linear und können daher kompliziertere Beziehungen zwischen sichtbaren und versteckten Einheiten lernen. Darüber hinaus können sie gestapelt werden , was sie noch leistungsfähiger macht. ZB trainieren Sie RBM mit sichtbaren und versteckten Einheiten, dann legen Sie ein weiteres RBM mit sichtbaren und versteckten Einheiten auf das erste und trainieren es auch usw. Und genau so auch mit Autoencodern.m m knmmk

Sie fügen jedoch nicht nur neue Ebenen hinzu. Auf jeder Ebene versuchen Sie, die bestmögliche Darstellung für die Daten der vorherigen Ebene zu erlernen:

Bildbeschreibung hier eingeben

Auf dem Bild oben sehen Sie ein Beispiel für ein so tiefes Netzwerk. Wir beginnen mit gewöhnlichen Pixeln, fahren mit einfachen Filtern fort, dann mit Flächenelementen und landen schließlich mit ganzen Flächen! Dies ist die Essenz des tiefen Lernens .

Beachten Sie nun, dass wir in diesem Beispiel mit Bilddaten gearbeitet haben und nacheinander immer größere Bereiche mit räumlich engen Pixeln aufgenommen haben. Klingt das nicht ähnlich? Ja, weil es ein Beispiel für ein tiefes Faltungsnetzwerk ist. Sei es basierend auf Autoencodern oder RBMs, verwendet es Faltung, um die Wichtigkeit der Lokalität hervorzuheben. Aus diesem Grund unterscheiden sich CNNs etwas von Autoencodern und RBMs.

Einstufung

Keines der hier genannten Modelle funktioniert als Klassifizierungsalgorithmus an sich. Stattdessen werden sie für das Pretraining verwendet - Lernen von Transformationen von niedriger und schwer zu konsumierender Repräsentation (wie Pixel) auf eine hohe Ebene. Sobald ein tiefes (oder vielleicht nicht so tiefes) Netzwerk trainiert ist, werden Eingabevektoren in eine bessere Darstellung transformiert und die resultierenden Vektoren schließlich an einen echten Klassifikator (wie SVM oder logistische Regression) übergeben. In einem Bild oben bedeutet dies, dass ganz unten eine weitere Komponente vorhanden ist, die tatsächlich die Klassifizierung durchführt.

freund
quelle
3
@ Freund Sehr kurze und klare Erklärung. Zu diesen Themen wird viel geschrieben, aber Ihr Briefing ist fantastisch. "RockTheStar" Wenn Sie eine genauere Erklärung wünschen, können Sie dieses 100-seitige Buch von Yoshua Bengio (www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)
Javierfdr,
Was würden Sie verwenden, um Ereignissequenzen vorherzusagen?
Skan
2
@skan: werfen Sie einen Blick auf RNNs . Insbesondere ist LSTM mittlerweile recht beliebt. Möglicherweise möchten Sie auch eine separate Frage mit weiteren Details stellen, um eine qualifizierte Antwort zu erhalten, da RNNs nicht ganz mein Fachgebiet sind.
Freund
15

Alle diese Architekturen können als neuronales Netzwerk interpretiert werden. Der Hauptunterschied zwischen AutoEncoder und Convolutional Network ist der Grad der Netzwerkverdrahtung. Faltungsnetze sind ziemlich fest verdrahtet. Die Faltungsoperation ist in der Bilddomäne ziemlich lokal, was bedeutet, dass die Anzahl der Verbindungen in der Ansicht des neuronalen Netzwerks sehr viel geringer ist. Die Pooling-Operation (Unterabtastung) in der Bilddomäne ist ebenfalls ein festverdrahteter Satz neuronaler Verbindungen in der neuronalen Domäne. Solche topologischen Einschränkungen der Netzwerkstruktur. Angesichts solcher Einschränkungen lernt das Training von CNN die besten Gewichte für diese Faltungsoperation (in der Praxis gibt es mehrere Filter). CNNs werden normalerweise für Bild- und Sprachaufgaben verwendet, bei denen Faltungsbeschränkungen eine gute Voraussetzung sind.

Im Gegensatz dazu geben Autoencoder fast nichts über die Topologie des Netzwerks an. Sie sind viel allgemeiner. Die Idee ist, eine gute neuronale Transformation zu finden, um die Eingabe zu rekonstruieren. Sie bestehen aus einem Encoder (projiziert die Eingabe in die verborgene Ebene) und einem Decoder (projiziert die verborgene Ebene in die Ausgabe). Die verborgene Schicht lernt eine Reihe latenter Merkmale oder latenter Faktoren. Lineare Autoencoder überspannen den gleichen Unterraum mit PCA. Bei einem gegebenen Datensatz lernen sie die Anzahl der Grundlagen, um das zugrunde liegende Muster der Daten zu erklären.

RBMs sind auch ein neuronales Netzwerk. Die Interpretation des Netzwerks ist jedoch völlig anders. RBMs interpretieren das Netzwerk nicht als Feedforward, sondern als zweigliedrigen Graphen, in dem die gemeinsame Wahrscheinlichkeitsverteilung von versteckten Variablen und Eingabevariablen erlernt werden soll. Sie werden als grafisches Modell angesehen. Denken Sie daran, dass sowohl AutoEncoder als auch CNN eine deterministische Funktion lernen. RBMs hingegen sind generative Modelle. Es kann Samples aus gelernten versteckten Darstellungen generieren. Es gibt verschiedene Algorithmen zum Trainieren von RBMs. Letztendlich können Sie jedoch nach dem Erlernen der RBMs deren Netzwerkgewichtungen verwenden, um sie als Feedforward-Netzwerk zu interpretieren.

Zylonmath
quelle
6

RBMs können als eine Art probabilistischer Auto-Encoder angesehen werden. Tatsächlich hat sich gezeigt, dass sie unter bestimmten Bedingungen gleichwertig werden.

Trotzdem ist es viel schwieriger, diese Gleichwertigkeit zu beweisen, als nur zu glauben, dass es sich um verschiedene Bestien handelt. In der Tat fällt es mir schwer, viele Gemeinsamkeiten zwischen den dreien zu finden, sobald ich anfange, genau hinzuschauen.

Wenn Sie beispielsweise die von einem automatischen Encoder, einem RBM und einer CNN implementierten Funktionen aufschreiben, erhalten Sie drei völlig unterschiedliche mathematische Ausdrücke.

bayerj
quelle
1

Ich kann Ihnen nicht viel über RBMs erzählen, aber Autoencoder und CNNs sind zwei verschiedene Arten von Dingen. Ein Autoencoder ist ein neuronales Netzwerk, das unbeaufsichtigt trainiert wird. Das Ziel eines Autocodierers ist es, eine kompaktere Darstellung der Daten zu finden, indem ein Codierer, der die Daten in ihre entsprechende kompakte Darstellung umwandelt, und ein Decodierer, der die ursprünglichen Daten rekonstruiert, gelernt werden. Der Encoder-Teil von Autoencodern (und ursprünglich RBMs) wurde verwendet, um gute Anfangsgewichte einer tieferen Architektur zu erlernen. Es gibt jedoch auch andere Anwendungen. Im Wesentlichen lernt ein Autocodierer ein Clustering der Daten. Im Gegensatz dazu bezieht sich der Begriff CNN auf eine Art neuronales Netzwerk, das den Faltungsoperator (häufig die 2D-Faltung, wenn sie für Bildverarbeitungsaufgaben verwendet wird) verwendet, um Merkmale aus den Daten zu extrahieren. In der Bildverarbeitung werden Filter, die mit Bildern verschlungen sind, werden automatisch gelernt, um die vorliegende Aufgabe zu lösen, z. B. eine Klassifizierungsaufgabe. Ob das Trainingskriterium eine Regression / Klassifikation (überwacht) oder eine Rekonstruktion (unbeaufsichtigt) ist, hängt nicht mit der Vorstellung von Windungen als Alternative zu affinen Transformationen zusammen. Sie können auch einen CNN-Autoencoder haben.

Sigurd
quelle
autoencoder ist ein überwachtes Training, bei dem Sie trainieren, die gleichen Informationen wie die Ausgabe der angegebenen Eingabe zu generieren, nur mit einer kleineren versteckten Ebene, sodass das Netzwerk eine geeignete Codierung finden muss, die die Eingabe in die Größe der versteckten Ebene und zurück umwandelt . In unüberwachtem Training, wie es in statistischen Netzen wie SOM oder neuronalem Gas verwendet wird, haben Sie keine Zielinformationen, die dem Netz als Ausgabe präsentiert werden.
SCI