Warum ist der Autoencoder-Decoder normalerweise die umgekehrte Architektur als Encoder?

7

Jede Autoencoder-Architektur, die ich gesehen habe, hat eine ähnliche Architektur, hauptsächlich, dass der Decoder genau das Gegenteil des Encoders ist. Wenn das Ziel des Autoencoders das Lernen von niedrigdimensionalen Merkmalen ist, warum ist der Decoder nicht einfach? Ein Beispiel wäre eine lineare Transformation wobei eine Beobachtung durch die Merkmalsmatrix (dh den Engpass) ist und eine gelernte Gewichtsmatrix ist, die auf die ursprüngliche Eingangsmerkmalsgröße abbildet . Im Fall eines tiefen Autoencoders mit mehreren verborgenen Schichten hätte der Decoder im obigen Beispiel im Vergleich zum Encoder eine geringe Kapazität.FWFnfWF

Meine Intuition ist folgende:

Wenn der Decoder einfach ist, muss der Autoencoder Merkmale höherer Qualität im Engpass lernen, um dies zu kompensieren. Wenn umgekehrt der Decoder eine hohe Repräsentationskapazität hat, kann er einen schlecht erlernten Engpass effektiv auf die Ausgangsrekonstruktionen abbilden. Der Rekonstruktionsfehler kann in diesem Fall geringer sein, aber das bedeutet nicht unbedingt, dass die erlernten Funktionen tatsächlich besser sind.

In meiner eigenen Anwendung (Feature-Lernen in Diagrammen) habe ich festgestellt, dass ein einfacher Decoder zu besser erlernten Features führt als ein Decoder, der nur den Encoder spiegelt. In diesem Artikel entwerfen die Autoren einen Graph-Autoencoder mit einem sehr einfachen Decoder als wobei die rekonstruierte Graph-Adjazenzmatrix ist, die gelernte Merkmalsmatrix und ist eine nichtlineare Transformation wie eine ReLU.A^=σ(ZZT)A^Zσ

Ich habe mich eine Weile nach einer Antwort auf diese Frage umgesehen, aber ich habe keine Erklärungen oder theoretischen Ergebnisse gefunden, warum ein Decoder mit höherer Kapazität einem Decoder mit niedriger Kapazität vorzuziehen ist (oder umgekehrt) ). Wenn jemand eine Erklärung abgeben oder mich in die richtige Richtung weisen kann, wäre ich dankbar.

duncster94
quelle

Antworten:

1

Ihre Intuition ist richtig, aber nicht im richtigen Kontext. Definieren wir zunächst "hochwertige Funktionen" als Funktionen, die für das Training anderer Modelle recycelt werden können , z. B. übertragbar. Das Trainieren eines (unbeschrifteten) Encoders in ImageNet kann beispielsweise dazu beitragen, eine solide Basis für die Klassifizierung in ImageNet und anderen Bilddatensätzen zu erhalten.

Die meisten klassischen Autoencoder sind auf irgendeine Form von (reguliertem) L2-Verlust trainiert. Dies bedeutet, dass der Decodierer nach dem Codieren einer Darstellung das Originalbild reproduzieren muss und aufgrund des Fehlers jedes einzelnen Pixels bestraft wird . Während Regularisierung hier helfen kann, neigen Sie dazu, unscharfe Bilder zu erhalten. Das Problem ist, dass der Verlust nicht semantisch ist: Es ist egal, dass Menschen Ohren haben, aber es ist wichtig, dass die Hautfarbe im Gesicht gleichmäßig ist. Wenn Sie also den Decoder durch etwas wirklich Einfaches ersetzen, konzentriert sich die Darstellung wahrscheinlich darauf, die durchschnittliche Farbe in jedem Bereich des Bildes richtig einzustellen (dessen Größe ungefähr proportional zur Komplexität Ihres Decoders und umgekehrt proportional zu Ihrem versteckten ist Schichtgröße).

Andererseits gibt es zahlreiche allgemeine selbstüberwachte Techniken, mit denen semantische Merkmale von höherer Qualität erlernt werden können . Der Schlüssel hier ist, eine bessere Verlustfunktion zu finden. Eine wirklich schöne Reihe von Folien von Andrew Zisserman finden Sie hier . Ein einfaches Beispiel ist ein siamesisches Netzwerk, das darauf trainiert ist, die relative Position von Paaren zufälliger Pflanzen vorherzusagen:

Geben Sie hier die Bildbeschreibung ein

Oben muss die erste Ernte des Katzengesichts und das Netzwerk vorhersagen, dass die Ohrfrucht nordöstlich des Katzengesichts erfolgen sollte. Beachten Sie, dass die Kulturen zufällig ausgewählt werden und der Trick darin besteht, den minimalen und maximalen Abstand zwischen den Kulturen auszugleichen, sodass verwandte Kulturen häufig vorkommen.

Mit anderen Worten, das Netzwerk verwendet einen gemeinsam genutzten Encoder und einen rudimentären Klassifikator, um die Einbettungen verschiedener Kulturen zu vergleichen. Dies zwingt das Netzwerk zu lernen, was eine Katze wirklich ist, im Gegensatz zu einem weichen Satz durchschnittlicher Farben und Merkmalformen.

In den obigen Folien finden Sie viele weitere Beispiele, die auch zeigen, dass diese Einbettungen erheblich besser übertragen werden als rote Autoencoder, wenn sie darauf trainiert sind, Klassen vorherzusagen.

Alex R.
quelle
1

Ich frage mich, ob ein Teil des Grundes historisch sein könnte (anscheinend hat Hintons Papier von 2006 gezeigt, dass dies so gemacht wurde), und weil es (glaube ich) üblich war / ist, die Gewichte zu binden. Das heißt, der Decoder verwendet die gleichen Gewichte wie der Encoder und sie werden effektiv zusammen gelernt.

In dieser Frage und Antwort https://stackoverflow.com/q/36889732/841830 werden die Vorteile der Verwendung gebundener Gewichte erläutert. Weitere Hintergrundinformationen finden Sie hier: https://amiralavi.net/blog/2018/08/25/tied-autoencoders

Darren Cook
quelle