Heute beschäftigen wir uns mit einer Familie von nicht überwachten Lernmethoden, dem Autocodierern.
Autoencoder : Definition
Selbst-Encoder sind besondere neuronale Netze, die genau die gleiche Anzahl an Neuronen auf ihrer Eingabe- und Ausgabeschicht haben. Das Ziel eines Auto-Encoders ist es, eine Ausgabe zu haben, die der Eingabe so nahe wie möglich kommt!
Das Lernen ist also „selbstüberwacht“, da der zu minimierende Loss die Kosten für die Rekonstruktion zwischen Ausgabe und Eingabe ist. Die Daten müssen also nicht gelabelt werden, da sie ihre eigenen Labels sind, was dieses Modell also zu einem nicht überwachten Modell macht.
Was ist die Architektur eines Autokodierers ?
Ein Autoencoder hat eine sehr spezielle Architektur, da die verborgenen Schichten kleiner sind als die Eingabeschichten. Diese Art von Architektur wird als „Bottleneck“-Architektur bezeichnet. Man kann einen Autoencoder in zwei Teile links und rechts von diesem „Bottleneck“ zerlegen.
Der linke Teil wird Encoder genannt. Der Encoder wandelt die Eingabe in eine Darstellung in einem Raum mit geringerer Dimension um, der latenter Raum genannt wird. Der Encoder komprimiert also die Eingabe in eine weniger aufwendige Darstellung.
Der rechte Teil wird Decoder genannt, da er mithilfe der latenten Darstellung der Eingabe eine Ausgabe rekonstruieren soll, die der Eingabe am ehesten entspricht.
Während des Lernens lernt der Autocoder also, dass er versucht, so viele Informationen wie möglich zwischen der Eingabe und dem latenten Raum zu behalten, damit der Decoder die wichtigsten Informationen hat, um das Bild zu rekonstruieren. So lernt der Encoder die wichtigsten Komponenten einer Eingabe, um die bestmögliche Kompression zu erhalten.
Auf den ersten Blick ähnelt dies stark der Hauptkomponentenanalyse (PCA oder englisch PCA). Autoencoder erlauben jedoch das Hinzufügen von Nichtlinearitäten durch Aktivierungsfunktionen und ihre neuronale Netzstruktur, was einen einfachen Autoencoder von einer PCA unterscheidet.
Verallgemeinerung: Selbstkodierer Debutoren
Dieses Prinzip des Auto-Encoders wurde auf vielfältigere Aufgaben verallgemeinert, insbesondere auf Aufgaben der Rauschunterdrückung (im Englischen spricht man von denoising AE). Nachdem man gelernt hat, wie man die Eingaben optimal darstellt, indem man dem Auto-Encoder verrauschte Eingaben liefert, ist er in der Lage, entrauschte Daten auszugeben, die der ursprünglichen Eingabe sehr nahekommen.
Generative Modelle: Der latente Raum
Auto-Encoder werden auch oft verwendet, um neue Eingaben zu erstellen. In diesem Fall benutzt du den Decoderteil, um aus den Vektoren des latenten Raums Ausgaben zu erzeugen. Durch die Wahl von Vektoren, die der Eingabe „nahe“ sind, wird die Ausgabe dieser sehr ähnlich sein. Wenn du zum Beispiel Vektoren für Eingaben des gleichen Typs verwendest, wird die Ausgabe auch so aussehen.
Diese Arithmetik ist eine der Eigenschaften des latenten Raums und man erhält noch interessantere Ergebnisse. Da man die Vektoren des latenten Raums mit ihrer Ausgabe aus dem Decoder verknüpfen kann, überträgt sich diese Arithmetik auf die Ausgabe! Wenn man z. B. einen Vektor, der einem Mann mit Brille im Raum entspricht, mit einem, der einer Frau ohne Brille entspricht, addiert und den Vektor, der einem Mann ohne Brille entspricht, subtrahiert, erhält man Bilder von Frauen mit Brille.
Es gibt auch eine kontinuierliche Transformation zwischen dem latenten Raum und der Ausgabe. Wenn man einen Vektor im latenten Raum kontinuierlich variiert, erhält man eine kontinuierliche Transformation im Ausgaberaum.
Der Vorteil der Auto-Encoder, die wir hier kennengelernt haben, ist, dass sie keine gelabelten Daten benötigen. Die Erstellung von Daten ist oft sehr zeitaufwändig, da eine Person Hunderte oder Tausende von Daten einzeln beschriften muss.
Außerdem kann der Decoderteil, wie gerade erwähnt, als generatives Modell dienen, was bei Data Augmentation nützlich sein kann, um andere Modelle zu trainieren.
Abgesehen von diesen Anwendungsbeispielen ist das Anwendungsfeld für Autoencoder sehr groß und vielversprechend.
Wenn dieser Artikel dein Interesse geweckt hat und du mehr über die Möglichkeiten von Deep Learning erfahren möchtest, dann wird dir unsere Data Scientist-Ausbildung alle Werkzeuge und Kenntnisse vermitteln, die du brauchst, um dich zum Data Scientist ausbilden zu lassen.
Wenn du Fragen zu unseren Schulungen hast, kannst du dich gerne an uns wenden und einen Termin mit unserem Team vereinbaren.