Autoenkoder

Sieć neuronowa ucząca się kompresować dane do zwięzłej reprezentacji, a następnie je odtwarzać. Używana m.in. do redukcji wymiarów i wykrywania anomalii.

Autoenkoder to sieć neuronowa, która uczy się sama na sobie: na wejściu dostaje dane, a jej zadaniem jest odtworzyć dokładnie to samo na wyjściu. Brzmi bezsensownie (po co kopiować coś, co już mam?), ale haczyk tkwi w środku. Po drodze dane muszą przejść przez wąskie gardło, czyli warstwę o znacznie mniejszej liczbie neuronów. Sieć jest więc zmuszona wycisnąć z obrazka, dźwięku czy wektora cech tylko to, co najważniejsze, i na podstawie tej zwięzłej reprezentacji zrekonstruować oryginał.

Jak to działa

Autoenkoder składa się z dwóch części. Encoder ściska wejście do skompresowanej reprezentacji zwanej latent space (przestrzeń ukryta, ten najwęższy punkt sieci). Decoder robi odwrotność, czyli z tej małej reprezentacji odbudowuje dane. Trenuje się to bez etykiet (to uczenie nienadzorowane), minimalizując reconstruction loss, najczęściej błąd średniokwadratowy między wejściem a wyjściem.

Dzięki temu autoenkoder nadaje się do redukcji wymiarów (jak PCA, tylko że nieliniowo i mocniej), odszumiania danych (denoising autoencoder dostaje na wejściu zaszumiony obrazek, a uczy się czystego) oraz wykrywania anomalii. Ta ostatnia sztuczka jest sprytna: skoro sieć nauczyła się dobrze rekonstruować dane „normalne”, to coś nietypowego odtworzy kiepsko, a wysoki błąd rekonstrukcji to czerwona flaga.

Przykład z praktyki

Wykrywanie fraudu albo awarii maszyn. Trenujesz autoenkoder w Keras na samych poprawnych transakcjach. Architektura to dosłownie kilka warstw: Dense(32) -> Dense(8) -> Dense(32) -> Dense(input_dim), kompilacja przez model.compile(optimizer='adam', loss='mse'). Po treningu liczysz błąd rekonstrukcji dla nowych danych i ustawiasz próg, np. na 95. percentylu błędów z treningu. Transakcja z błędem powyżej progu? Sieć jej „nie rozumie”, więc oznaczasz ją do sprawdzenia. Nie potrzebujesz ani jednego oznaczonego przykładu fraudu.

Częste błędy i mity

  • Za szeroki latent space. Jeśli wąskie gardło jest prawie tak duże jak wejście, sieć nauczy się funkcji identyczności (przepisze dane jeden do jednego) i niczego sensownego nie skompresuje.
  • Mit „to generator jak GAN”. Zwykły autoenkoder nie służy do generowania nowych próbek, bo jego latent space ma dziury. Od tego jest VAE (variational autoencoder), który wymusza ciągłą, gładką przestrzeń.
  • Złudzenie kompresji uniwersalnej. Autoenkoder jest dobry tylko w kompresji danych podobnych do tych, na których trenował. Na nowej dziedzinie wyłoży się spektakularnie.

Pojęcia powiązane

Latent space, variational autoencoder (VAE), redukcja wymiarów, PCA, uczenie nienadzorowane, denoising autoencoder, wykrywanie anomalii, sieci neuronowe.