Sparse Coding ist definiert als Lernen eines überkompletten Satzes von Basisvektoren, um Eingangsvektoren darzustellen (<- warum wollen wir das?). Was sind die Unterschiede zwischen Sparse Coding und Autoencoder? Wann werden wir Sparse Coding und Autoencoder verwenden?
machine-learning
neural-networks
unsupervised-learning
deep-learning
autoencoders
RockTheStar
quelle
quelle
Antworten:
Die Unterschiede können anhand der Modelle ermittelt werden. Schauen wir uns zuerst die spärliche Codierung an.
Sparse Codierung
Eine spärliche Codierung minimiert das Objektiv wobei W eine Matrix von Basen ist, H eine Matrix von Codes ist und X eine Matrix der Daten ist, die wir darstellen möchten. λ implementiert einen Handel zwischen Sparsamkeit und Wiederaufbau. Beachten Sie, dass die Schätzung von W über die kleinsten Quadrate einfach ist , wenn wir H erhalten .
Am Anfang haben wir nicht jedoch. Es gibt jedoch viele Algorithmen, die das obige Ziel in Bezug auf H lösen können . Tatsächlich schließen wir so: Wir müssen ein Optimierungsproblem lösen, wenn wir wissen wollen, welches h zu einem unsichtbaren x gehört .H H h x
Auto-Encoder
Auto-Encoder sind eine Familie von unbeaufsichtigten neuronalen Netzen. Es gibt ziemlich viele davon, z. B. Deep-Auto-Encoder oder solche mit unterschiedlichen Regularisierungstricks - z. B. Denoising, Contractive, Sparse. Es gibt sogar probabilistische, wie zum Beispiel generative stochastische Netzwerke oder den variationalen Auto-Encoder. Ihre abstrakteste Form ist , aber wir werden mit einem viel einfacheren jetzt mitgehen: L ae = | | W σ ( W T X )
Ähnlichkeiten
Man beachte, dass fast wie L a e aussieht, wenn wir H = σ ( W T X ) setzen . Der Unterschied zwischen beiden besteht darin, dass i) Autoencoder in ihrer allgemeinen Form keine Sparsamkeit fördern, ii) ein Autoencoder ein Modell zum Auffinden der Codes verwendet, während eine sparsame Codierung dies durch Optimierung tut.Ls c Lein e H= σ( WTX)
Auch die verschiedenen Methoden der Regularisierung ergeben Darstellungen mit unterschiedlichen Merkmalen. Es wurde auch gezeigt, dass das Entrauschen von Auto-Encodern einer bestimmten Form von RBMs usw. entspricht.
Aber wieso?
Wenn Sie ein Vorhersageproblem lösen möchten, benötigen Sie keine automatischen Codierer, es sei denn, Sie haben nur wenige beschriftete Daten und viele unbeschriftete Daten. Dann ist es im Allgemeinen besser, einen Deep-Auto-Encoder zu trainieren und eine lineare SVM darauf zu legen, als ein tiefes neuronales Netz zu trainieren.
Sie sind jedoch sehr leistungsfähige Modelle zur Erfassung der Eigenschaften von Distributionen. Dies ist vage, aber derzeit werden Untersuchungen durchgeführt, die dies in statistische Fakten umwandeln. Tief latente Gaußsche Modelle, auch bekannt als Variational Auto Encoder oder generative stochastische Netzwerke, sind interessante Methoden, um Auto Encoder zu erhalten, die die zugrunde liegende Datenverteilung nachweislich schätzen.
quelle
In der Neurowissenschaft bezeichnet der Begriff "Neuronale Kodierung" die Muster der elektrischen Aktivität von Neuronen, die durch einen Reiz induziert werden. Sparse Coding wiederum ist eine Art von Muster. Ein Code wird als spärlich bezeichnet, wenn ein Stimulus (wie ein Bild) die Aktivierung einer relativ kleinen Anzahl von Neuronen hervorruft, die ihn zusammen spärlich darstellen. Beim maschinellen Lernen kann dieselbe Optimierungsbedingung, die zum Erstellen eines Sparse-Code-Modells verwendet wurde, zum Implementieren von Sparse-Autoencodern verwendet werden. Hierbei handelt es sich um reguläre Autoencodierer, die mit einer Sparsity-Bedingung trainiert wurden. Im Folgenden finden Sie ausführlichere Erklärungen zu jeder Ihrer Fragen.
Sparse Coding ist definiert als Lernen eines übervollständigen Satzes von Basisvektoren zur Darstellung von Eingabevektoren (<- warum wollen wir das?)
Zum einen ist zumindest seit (Hubel & Wiesel, 1968) bekannt, dass es in der V1-Region bestimmte Zellen gibt, die maximal auf kantenartige Reize reagieren (neben anderen "nützlichen" Eigenschaften). Sparse Coding ist ein Modell, das viele der beobachteten Merkmale dieses Systems gut erklärt. Siehe (Olshausen & Field, 1996) für weitere Einzelheiten.
Zweitens wird gezeigt, dass das Modell, das die spärliche Codierung beschreibt, eine nützliche Technik für die Merkmalsextraktion beim maschinellen Lernen ist und bei Transfer-Lernaufgaben gute Ergebnisse liefert. Raina et al. (2007) haben gezeigt, dass ein Satz von "Basisvektoren" (Merkmale, wie Stiftstriche und Kanten), die mit einem Trainingssatz aus handgeschriebenen Zeichen erlernt wurden, die Klassifizierung in einer Erkennungsaufgabe für handgeschriebene Ziffern verbessert. Spätere, auf Sparse Coding basierende Modelle wurden verwendet, um "tiefe" Netzwerke zu trainieren, indem Schichten von Detektoren mit dünnem Merkmal gestapelt wurden, um ein "tiefes Glaubensnetz" zu erzeugen (Lee et al., 2007).. In jüngerer Zeit wurden erstaunliche Ergebnisse bei der Bilderkennung mit spärlich codierten Modellen erzielt, um ein Netzwerk mit mehreren Schichten (das berühmte "Google Brain") aufzubauen, mit dem ein Bild einer Katze auf rein unbeaufsichtigte Weise unterschieden werden konnte (Le et al. , 2013) .
Drittens ist es wahrscheinlich möglich, die erlernte Basis zum Ausführen der Komprimierung zu verwenden. Ich habe noch niemanden gesehen, der das wirklich gemacht hat.
Was ist der Unterschied zwischen Sparse Coding und Autoencoder?
Ein Autoencoder ist ein Modell, das versucht, seine Eingabe zu rekonstruieren, normalerweise unter Verwendung einer Art von Einschränkung. Laut Wikipedia ist es "ein künstliches neuronales Netzwerk, das zum Lernen effizienter Codierungen verwendet wird". Es gibt nichts in der Definition von Autoencoder, das Sparsamkeit erfordert. Auf sparsamer Codierung basierende Beschränkungen sind eine der verfügbaren Techniken, aber es gibt auch andere, zum Beispiel Denoising Autoencoder, Contractive Autoencoder und RBMs. All dies führt dazu, dass das Netzwerk gute Darstellungen der Eingabe lernt (die auch häufig "spärlich" sind).
Wann werden wir Sparse Coding und Autoencoder verwenden?
Sie interessieren sich wahrscheinlich für die Verwendung eines Auto-Encoders zur Feature-Extraktion und / oder zum Vortraining von Deep Networks. Wenn Sie einen Autoencoder mit der Sparsity-Einschränkung implementieren, verwenden Sie beide.
quelle
Ein Sparse-Codierer ist wie ein halber Auto-Codierer. Ein Auto-Encoder funktioniert wie folgt:
Bei der Rückübertragung lautet das Fehlersignal, der Verlust: Eingabe - Ausgabe
Wenden wir eine Sparsity-Einschränkung auf die ausgeblendeten Ausgaben an, sind die meisten Nullen und einige Einsen. Dann ist die zweite Schicht im Wesentlichen eine Menge linearer Basisfunktionen, die addiert werden, je nachdem, welche der verborgenen Ausgänge 1s sind.
In der spärlichen Codierung haben wir nur die zweite Hälfte davon:
Der 'Code' ist ein Bündel reeller Zahlen, die für die Basisfunktionen auswählen, die durch die Gewichte in der neuronalen Netzebene dargestellt werden. Da sie in Olshausens Aufsatz eine Sparsity-Beschränkung auf die Codes anwenden, sind die Codes, genau wie im sparsamen Auto-Encoder, sparsam: Meistens Nullen mit ein paar Einsen.
Den Unterschied können wir jetzt deutlich sehen: Für die spärliche Codierung gibt es keine erste Hälfte des neuronalen Netzes: Die Codes werden uns nicht automatisch von einem neuronalen Netz bereitgestellt.
Wie bekommen wir die Codes in spärlicher Codierung? Wir müssen uns selbst optimieren, indem wir den Gradientenabstieg oder Ähnliches verwenden, um den Satz von Codes zu finden, der die Ausgabe am besten für das Eingabebild liefert. Dies müssen wir jedes Mal für jedes Bild tun, auch für jedes Testbild.
quelle
Vielleicht möchten Sie dieses kürzlich erschienene Dokument unter https://arxiv.org/abs/1708.03735v2 zu genau demselben Thema lesen . In diesem Artikel zeigen die Autoren, dass man in der Tat einen Autoencoder so einrichten kann, dass das Grundwahrheitswörterbuch ein kritischer Punkt der Quadratverlustfunktion dieses Autoencoders ist.
quelle