Was sind die Unterschiede zwischen Sparse Coding und Autoencoder?


35

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?


1
Bei der spärlichen Codierung handelt es sich tatsächlich um eine bestimmte Art von Autoencoder, die als spärliche Autoencoder bezeichnet wird . Sie können also spärliche Codierung als Teilmenge von Autoencodern betrachten, wenn Sie so wollen.
HelloGoodbye

Antworten:


34

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 .

Lsc=||WHX||22reconstruction term+λ||H||1sparsity term
WXλHW

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 .HHhx

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 )

D(d(e(x;θr);θd),x)
wobei σ eine nichtlineare Funktion ist, wie das logistische Sigma σ ( x ) = 1
Lae=||Wσ(WTX)-X||2
σ .σ(x)=11+exp(-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.LscLeineH=σ(WTX)

WWLsc

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.


Danke für deine Antwort! Soll das also bedeuten, dass in keinem Fall eine spärliche Codierung verwendet werden soll, sondern ein Autoencoder? Außerdem sollte es in der spärlichen Codierung einen zusätzlichen Ausdruck geben, der W? Reguliert.
RockTheStar

Es gibt keine solche allgemeine Regel. SC hat einen Vorteil gegenüber AEs: Die Codierung durch Optimierung kann sehr leistungsfähig sein.
Bayerj

Entschuldigung, können Sie das näher erläutern?
RockTheStar

Eine feste Karte zu haben, die geschätzt wurde, um einer Einschränkung zu folgen (hier: spärliches Ergebnis), ist weniger leistungsfähig als ein Optimierer, der versucht, eine solche Lösung über möglicherweise viele Iterationen hinweg zu finden.
Bayerj

1
Tut mir leid, diese Frage noch einmal zu stellen. Ich denke, dass Autoencoder auch die Sparsamkeit fördern kann, dh sparsamen Autoencoder.
RockTheStar

11

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.


Diese Antwort enthält viele interessante Punkte und wichtige Hinweise. Der erste Absatz ist jedoch falsch . Sparse Coding und sparsame Auto-Encoder sind verschiedene Biester.
Bayerj

Wo steht, dass sie dasselbe sind? Bitte sag es mir und ich korrigiere die Antwort.
Saul Berardo

Im ersten Satz.
Bayerj

"Sparse Coding ist nur eine der verfügbaren Techniken für das Training von Autoencodern". Dieser Satz definiert "Sparse Coding" nicht als dasselbe "Biest" wie Autoencoder. Es heißt, dass zwischen allen verfügbaren Techniken zum Trainieren von Autoencodern eine "Sparse Coding" ist. Ich bin damit einverstanden, dass der Satz tatsächlich eine gewisse Mehrdeutigkeit aufweist, die meines Erachtens durch den Rest der Antwort verdeutlicht wird.
Saul Berardo

Sie sagen, dass Sparse Coding eine Methode ist, um Auto-Encoder zu trainieren. Dies ist eindeutig nicht der Fall, da Autocodierer einen expliziten Decodierer haben, der nicht mit einem Optimierungsalgorithmus implementiert ist. Bei einem beliebigen Auto-Encoder können Sie ihn nicht mit spärlicher Codierung trainieren.
Bayerj

1

Ein Sparse-Codierer ist wie ein halber Auto-Codierer. Ein Auto-Encoder funktioniert wie folgt:

input  =>  neural net layer  =>  hidden outputs => neural net layer => output

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:

                                codes => neural net layer => output

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.


0

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.