Ein Autoencoder ist eigentlich nichts anderes als ein künstliches neuronales Netz, wobei das Layout des Netzes eine spezielle Struktur besitzt: Eingangs- und Ausgangsschicht haben stets die gleiche Anzahl an Neuronen und zudem wird das Layout in einen Encoder und einen Decoder aufgeteilt:
Dabei hat die verborgene Schicht mit der Bezeichnung y eine in der Regel deutlich kleinere Anzahl an Neuronen im Vergleich zur Eingangs- bzw. Ausgangsschicht. Zudem ist y die Ausgangsschicht des Encoders und gleichzeitig die Eingangsschicht des Decoders. Anders als bei künstlichen neuronalen Netzen zur Lösung einer Klassifikationsaufgabe wird bei Autoencodern folgendes Ziel verfolgt:
Die Gewichte und Schwellwerte eines Autoencoders sollen derart bestimmt werden, sodass jedes Ausgangssignal x' möglichst ähnlich zum Eingangssignal x ist.
Ein geeignetes Gütemaß für 'möglichst ähnlich' ist die Summe der quadratischen Abweichungen der einzelnen Neuronen im Vergleich zwischen Eingangs- und Ausgangssignal. Trainiert werden kann ein Autoencoder, sofern eine ausreichend große Menge an Traingsdaten vorhanden ist.
Trainingsdaten eines Autoencoders benötigen kein Label oder Klassifikationsergebnis. Auch Testdaten sind (je nach Anwendungsfall) nicht zwingend notwendig.
Wir nutzen den Scribble-Datensatz, der Strichzeichnungen von Fischen bestehend aus 24 x 24 = 576 Pixel bereitstellt:
Pixel 1 | Pixel 2 | Pixel 3 | ... | Pixel 576 | |
Bild 1 | Graustufe | Graustufe | Graustufe | ... | Graustufe |
Bild 2 | Graustufe | Graustufe | Graustufe | ... | Graustufe |
... | ... | ... | ... | ... | |
Bild 2000 | Graustufe | Graustufe | Graustufe | ... | Graustufe |
Jede Zeile das Datensatzes ist ein Schwarz-Weiß-Bild (eine Strichzeichnung) eines Fisches:
Damit wurde ein Autoencoder zum folgenden Layout trainiert:
In der nachfolgenden Anwendung werden zufällige Zeilen des Datensatzes gewählt und am Autoencoder ausgewertet. Dargestellt werden Eingangssignal (d.h. die ausgewählte Zeile des Datensatzes) sowie das zugehörige Ausgangssignal des Autoencoders im Vergleich. Ein kleiner Hinweis dazu:
Die Anwendung ist keineswegs darauf ausgelegt, möglichst gute Ergebnisse zu liefern (im Sinne von Ausgangssignal möglichst ähnlich zum Eingangssignal). Dazu müssten diverse Kriterien optimiert werden: Layout des Autoencoders, Parameter der Trainingsphase, Umfang der Trainingsdaten etc.