L'autoencoder è un tipo di rete neurale artificiale (NN) utilizzata principalmente per compiti di apprendimento non supervisionato. Il suo obiettivo principale è quello di apprendere rappresentazioni efficienti (codifiche) dei dati di input, in genere per la riduzione della dimensionalità o l'estrazione di caratteristiche, addestrando la rete a ricostruire i propri input. Questo obiettivo viene raggiunto comprimendo l'input in uno spazio latente a bassa dimensione e ricostruendo poi l'output da questa rappresentazione compressa.
Come funzionano gli autocodificatori
Un autoencoder è composto da due parti principali: un encoder e un decoder.
- Codificatore: Questa parte prende i dati in ingresso e li mappa in una rappresentazione a bassa dimensione chiamata spazio latente o collo di bottiglia. Il codificatore impara a catturare le caratteristiche più significative dei dati scartando il rumore o le informazioni ridondanti. Questo processo è simile alla compressione dei dati.
- Decodificatore: Questa parte prende la rappresentazione codificata dallo spazio latente e cerca di ricostruire i dati originali in ingresso nel modo più accurato possibile.
La rete viene addestrata minimizzando la differenza tra l'input originale e l'output ricostruito, spesso misurata da una funzione di perdita come l'errore quadratico medio (MSE). Lo strato a collo di bottiglia costringe la rete ad apprendere una rappresentazione compatta e significativa, in quanto deve conservare abbastanza informazioni per ricostruire efficacemente l'input.
Tipi di autocodificatori
Esistono diverse varianti di Autoencoder, ognuna progettata per scopi specifici:
- Autoencoder di denoising: Addestrati a ricostruire l'input originale e pulito da una versione corrotta o rumorosa. Questo li rende utili per le attività di riduzione del rumore.
- Autoencoder sparsi: Introducono vincoli di sparsità durante l'addestramento, incoraggiando la rete ad apprendere rappresentazioni in cui solo un piccolo numero di nodi è attivo in qualsiasi momento.
- Autoencoder variazionali (VAE): Un tipo di modello generativo che apprende una distribuzione di probabilità sullo spazio latente, consentendo di generare nuovi campioni di dati simili a quelli di addestramento. I VAE differiscono in modo significativo dalle reti avversarie generative (GAN), un'altra tecnica generativa molto diffusa.
- Autoencoder contraenti: Mirano ad apprendere rappresentazioni robuste a piccoli cambiamenti nei dati di ingresso.
Applicazioni del mondo reale
Gli autoencoder hanno trovato applicazione in diversi ambiti:
- Rilevamento delle anomalie: Apprendendo gli schemi normali dei dati, gli autoencoder possono identificare le anomalie o gli outlier come input che comportano elevati errori di ricostruzione. Questa funzione è utilizzata nel rilevamento delle frodi e nel controllo di qualità industriale. Ad esempio, per individuare modelli di traffico di rete insoliti che potrebbero indicare un attacco informatico.
- Denoising e compressione delle immagini: Gli autoencoder di denoising possono pulire le immagini rumorose, mentre gli autoencoder standard possono comprimere le immagini memorizzando solo la rappresentazione latente. Un esempio è il ripristino della nitidezza di vecchie fotografie o di immagini satellitari colpite da interferenze atmosferiche. Scopri come la computer vision può essere utilizzata per analizzare le immagini satellitari.
- Riduzione della dimensionalità: Le rappresentazioni latenti apprese possono servire come caratteristiche compatte da inserire in altri modelli di apprendimento automatico (ML), migliorando potenzialmente le prestazioni e riducendo i costi computazionali. Questo è spesso paragonato a tecniche come l'analisi dei componenti principali (PCA), anche se gli autoencoder possono catturare relazioni più complesse e non lineari.
- Generazione di dati (VAE): Gli autoencoder variazionali possono generare nuovi campioni di dati sintetici, utili in aree come la generazione di opere d'arte o l'aumento dei dati di formazione. Esplora ulteriormente i dati sintetici.