Autoencoder (AE) sind neuronale Netze, die darauf abzielen, ihre Eingaben in ihre Ausgaben zu kopieren. Sie arbeiten, indem sie die Eingabe in eine Latenzraumdarstellung komprimieren und anschließend die Ausgabe aus dieser Darstellung rekonstruieren. Diese Art von Netzwerk besteht aus zwei Teilen:
- Encoder: Dies ist der Teil des Netzwerks, der die Eingabe in eine Latenzraumdarstellung komprimiert. Sie kann durch eine Kodierungsfunktion h=f(x) dargestellt werden.
- Decoder: Dieser Teil zielt darauf ab, die Eingaben aus der latenten Raumdarstellung zu rekonstruieren. Sie kann durch eine Dekodierfunktion r=g(h) dargestellt werden.
Der Autoencoder als Ganzes kann also durch die Funktion g(f(x)) = r beschrieben werden, wobei r so nah wie die ursprüngliche Eingabe x sein soll.
Warum die Eingabe in die Ausgabe kopieren?
Wenn der einzige Zweck von Autoencodern darin besteht, die Eingabe in die Ausgabe zu kopieren, wären sie nutzlos. In der Tat hoffen wir, dass durch das Timing des Autoencoders, die Eingabe in die Ausgabe zu kopieren, die latente Darstellung h nützliche Eigenschaften annimmt.
Dies kann durch das Anlegen von Einschränkungen für die Kopieraufgabe erreicht werden. Eine Möglichkeit, nützliche Funktionen aus dem Autoencoder zu erhalten, besteht darin, h auf kleinere Abmessungen als x zu beschränken, in diesem Fall wird der Autoencoder als unvollständig bezeichnet. Indem wir eine unvollständige Darstellung trainieren, zwingen wir den Autoencoder, die wichtigsten Merkmale der Trainingsdaten zu lernen. Wenn der Autoencoder zu viel Kapazität hat, kann er lernen, die Kopieraufgabe auszuführen, ohne nützliche Informationen über die Verteilung der Daten zu extrahieren. Dies kann auch auftreten, wenn die Dimension der latenten Darstellung gleich der Eingabe ist, und im unvollständigen Fall, wenn die Dimension der latenten Darstellung größer ist als die der Eingabe. In diesen Fällen kann sogar ein Linear Encoder und Linear Decoder lernen, die Eingabe in die Ausgabe zu kopieren, ohne etwas über die Datenverteilung zu lernen. Im Idealfall könnte man jede Architektur des Autoencoders erfolgreich trainieren, indem man die Codedimension und die Kapazität des Encoders und Decoders basierend auf der Komplexität der zu modellierenden Verteilung wählt.
Wofür werden Autoencoder verwendet?
Heute gelten das Denoinsing von Daten und die Reduzierung der Dimensionalität für die Datenvisualisierung als zwei interessante praktische Hauptanwendungen von Autoencodern. Mit entsprechenden Einschränkungen in Bezug auf Dimensionalität und Sparsamkeit können Autoencoder Datenprojektionen lernen, die interessanter sind als PCA oder andere grundlegende Techniken.
Autoencoder werden automatisch aus Datenbeispielen gelernt. Es bedeutet, dass es einfach ist, spezialisierte Instanzen des Algorithmus zu trainieren, die bei einer bestimmten Art von Eingabe gut funktionieren, und dass es kein neues Engineering, sondern nur die entsprechenden Trainingsdaten erfordert.
Allerdings werden Autoencoder bei der Bildkompression schlechte Arbeit leisten. Da der Autoencoder auf einen bestimmten Datensatz trainiert wird, erzielt dieser vernünftige Komprimierungsergebnisse bei Daten, die dem verwendeten Trainingssatz ähnlich sind, aber schlechte Allzweck-Bildkompressoren sind. Komprimierungstechniken wie JPEG werden wesentlich besser funktionieren.
Autoencoder werden geschult, um so viele Informationen wie möglich zu erhalten, wenn eine Eingabe durch den Encoder und anschließend den Decoder geführt wird, aber sie werden auch geschult, um der neuen Darstellung verschiedene schöne Eigenschaften zu verleihen. Verschiedene Arten von Autoencodern zielen darauf ab, verschiedene Arten von Eigenschaften zu erreichen. Wir werden uns auf vier Typen von Autoencodern konzentrieren.
Typen von Autoencodern:
In diesem Artikel werden die 4 folgenden Arten von Autoencodern beschrieben:
- Vanille-Autoencoder
- Multilayer Autoencoder
- Convolutional Autoencoder
- Regularisierter Autoencodern
Um die verschiedenen Arten von Autoencodern zu veranschaulichen, wurde mit dem Keras-Framework und dem MNIST-Datensatz jeweils ein Beispiel erstellt.
Vanille-Autoencoder.
In seiner einfachsten Form ist der Autoencoder ein dreischichtiges Netz, d.h. ein neuronales Netz mit einem versteckten Layer. Die Eingabe und Ausgabe sind identisch, und wir lernen, wie man den Input rekonstruiert, z.B. mit dem Adams-Optimierer und der mittleren quadratischen Error Loss Funktion.
Hier sehen wir, dass wir einen unvollständigen Autoencoder haben, da die Dimension des versteckten Layers kleiner ist als die Eingabe. Diese Einschränkung wird unser neuronales Netz dazu zwingen, eine komprimierte Darstellung von Daten zu lernen.
Multilayer Autoencoder.
Wenn ein versteckter Layer nicht ausreicht, können wir den Autoencoder natürlich auf weitere versteckte Layer erweitern.
Jetzt verwendet unsere Implementierung 3 versteckte Layer anstelle von nur Einem. Jede der verborgenen Layer kann als Feature-Darstellung ausgewählt werden, aber wir werden das Netzwerk symmetrisch gestalten und den mittleren Layer verwenden.
Convolutional Autoencoder.
Wir können uns auch fragen: Können Autoencoder mit Convolutions anstelle von Fully-connected Layern verwendet werden? Die Antwort ist ja und das Prinzip ist das gleiche, aber die Verwendung von Bildern (3D-Vektoren) anstelle von abgeflachten 1D-Vektoren. Das Eingabebild wird heruntergerechnet, um eine latente Darstellung kleinerer Abmessungen zu erhalten und den Autoencoder zu zwingen, eine komprimierte Version der Bilder zu lernen.
Regularisierter Autoencoder.
Es gibt andere Möglichkeiten, wie wir die Rekonstruktion eines Autoencoders einschränken können, als einen versteckten Layer von kleinerer Dimension als die Eingabe aufzuerlegen. Anstatt die Modellkapazität einzuschränken, indem der Encoder und Decoder flach und die Codegröße klein gehalten wird, verwenden normalisierte Autoencoder eine Loss-Funktion, die das Modell ermutigt, neben der Möglichkeit, seine Eingabe in seine Ausgabe zu kopieren, auch andere Eigenschaften zu haben. In der Praxis finden wir in der Regel zwei Arten von normalisierten Autoencodern: den spärlichen Autoencoder und den rauscharmen Autoencoder.
Sparse Autoencoder: Sparse Autoencoder werden typischerweise verwendet, um Funktionen für eine andere Ausgabe wie die Klassifizierung zu erlernen. Ein Autoencoder, der als spärlich reguliert wurde, muss auf einzigartige statistische Merkmale des Datensatzes reagieren, auf den dieser trainiert wurde, anstatt nur als Identitätsfunktion zu fungieren. Auf diese Weise kann das Training, die Kopieraufgabe mit einer Sparsamkeitsstrafe durchzuführen, ein Modell ergeben, das nützliche Funktionen als Nebenprodukt gelernt hat.
Eine weitere Möglichkeit, die Rekonstruktion des Autoencoders einzuschränken, besteht darin, eine Einschränkung seines Verlustes durchzusetzen. Wir könnten zum Beispiel einen Regularisierungsbegriff in die Verlustfunktion aufnehmen. Dies wird dazu führen, dass unser Autoencoder die spärliche Darstellung von Daten erlernt.
Betrachten Sie unseren versteckten Layer, haben wir einen Aktivitätsregulator hinzugefügt, der eine Strafe auf die Loss-Funktion während der Optimierungsphase anwendet. Dadurch ist die Darstellung im Vergleich zum Vanille-Autoencoder nun kleiner.
Rauschen unterdrücken durch Autoencoder: Anstatt der Loss Funktion eine Strafe hinzuzufügen, können wir einen Autoencoder erhalten, der etwas Nützliches lernt, indem dieser den Reconstruction Error Term der Verlustfunktion ändert. Dies kann durch Hinzufügen von Rauschen des Eingangsbildes erreicht werden, so dass der Autoencoder lernt, es zu entfernen. Auf diese Weise extrahiert der Encoder die wichtigsten Merkmale und lernt eine robustere Darstellung der Daten.
Zusammenfassung.
In diesem Artikel haben wir uns mit der grundlegenden Architektur von Autoencodern beschäftigt. Wir haben uns auch viele verschiedene Arten von Autoencodern angesehen: Vanille, Multilayer, Convolutional und Regularisierung. Jede hat unterschiedliche Eigenschaften, abhängig von den auferlegten Einschränkungen: entweder die reduzierte Dimension der ausgeblendeten Layer oder eine andere Art von Penalty.
Vielen Dank für Ihren Besuch.
Leave A Comment