Un autoencoder è una rete neurale fatta di due pezzi: un encoder che comprime l'input in una rappresentazione piccola (lo spazio latente) e un decoder che ricostruisce l'input da quella rappresentazione.
Si addestra in modo non supervisionato: niente etichette, l'obiettivo è ricostruire l'input dato. La rete è forzata a comprimere informazioni rilevanti nel latente perché altrimenti non riesce a ricostruire.
Usi tipici:
- Riduzione dimensionalità: come PCA ma non-lineare. 1000 feature compresse in 50 utili.
- Denoising: addestri con input rumoroso, target pulito. Impara a togliere il rumore.
- Anomaly detection: se la ricostruzione è pessima su un dato, è un'anomalia.
- Pre-training: rappresentazioni utili da riusare in altri compiti.
Tipi:
- Vanilla autoencoder: encoder + decoder, niente di esotico.
- Sparse autoencoder: il latente deve essere sparso (pochi neuroni attivi). Buono per interpretabilità.
- Denoising autoencoder: input rumoroso, target pulito.
- VAE: variazionale, latente probabilistico, generativo.
- Masked autoencoder: nasconde parti dell'input, le ricostruisce. BERT è praticamente un masked autoencoder per testo.
Notare: il decoder degli autoencoder è la base del decoder dei diffusion model e di tanta IA generativa. Concetto vecchio (anni '80), ancora utilissimo.