Home topics autoencoder Cos'è un autoencoder?
Esplora IBM® watsonx.ai
Rappresentazione astratta del machine learning

Pubblicato: 23 novembre 2023
Collaboratori: Dave Bergmann, Cole Stryker

Cos'è un autoencoder?

Un autoencoder è un tipo di architettura di rete neurale progettata per comprimere (codificare) in modo efficiente i dati di input fino alle caratteristiche essenziali, quindi ricostruire (decodificare) l'input originale a partire da questa rappresentazione compressa.

Utilizzando il machine learning senza supervisione, gli autoencoder vengono addestrati a scoprire le variabili latenti dei dati di input, ossia variabili nascoste o casuali che, nonostante non siano direttamente osservabili, informano il modo in cui i dati vengono distribuiti. L'insieme delle variabili latenti di un determinato set di dati di input è chiamato spazio latente. Nel corso dell'addestramento, l'autoencoder apprende quali variabili latenti possono essere utilizzate per ricostruire più accuratamente i dati originali: questa rappresentazione dello spazio latente rappresenta quindi solo le informazioni più essenziali contenute nell'input originale.

La maggior parte dei tipi di autoencoder viene utilizzata per attività di intelligenza artificiale relative all'estrazione delle caratteristiche, come la compressione dei dati, il denoising nelle immagini, il rilevamento delle anomalie e il riconoscimento facciale. Alcuni tipi di autoencoder, come gli autoencoder variazionali (VAE) e gli autoencoder antagonisti (AAE), adattano l'architettura dell'autoencoder per l'uso in attività generative, come la generazione di immagini o la generazione di dati di serie temporali.

Fai un tour di IBM® watsonx.ai

Uno studio aziendale di nuova generazione per i builder AI con cui addestrare, convalidare, adattare e implementare modelli di AI. Prova gratuitamente IBM watsonx.ai.

Contenuti correlati

Iscriviti alle newsletter IBM

Differenze tra autoencoder ed encoder-decoder

Sebbene tutti i modelli di autoencoder includano sia un codificatore che un decoder, non tutti i modelli encoder-decoder sono autoencoder.

I framework di encoder-decoder , in cui una rete di codificatori estrae le caratteristiche principali dei dati di input e una rete di decodifica prende i dati delle caratteristiche estratte come input, vengono utilizzati in una varietà di modelli di deep learning, come le architetture di rete neurale convoluzionale (CNN) utilizzate nelle attività di visione artificiale come la segmentazione delle immagini o le architetture di rete neurale ricorrente (RNN) utilizzate nelle attività da sequence-to-sequence (seq2seq).

Nella maggior parte delle applicazioni di modelli di encoder-decoder, l'output della rete neurale è diverso dal suo input. Ad esempio, nei modelli di segmentazione delle immagini come U-Net, la rete di codifica estrae i dati delle caratteristiche dall'immagine di input per determinare la classificazione semantica di diversi pixel; utilizzando la mappa delle caratteristiche e le classificazioni dei pixel, la rete di decodifica costruisce quindi maschere di segmentazione per ciascun oggetto o regione nell'immagine. L'obiettivo di questi modelli di encoder-decoder è etichettare accuratamente i pixel in base alla loro classe semantica: vengono addestrati tramite apprendimento supervisionato, ottimizzando le previsioni del modello rispetto a un set di dati di immagini “fondamentalmente vero” etichettato da esperti umani.

Gli autoencoder sono un sottoinsieme specifico di architetture di encoder-decoder addestrate tramite apprendimento non supervisionato a ricostruire i propri dati di input.

Poiché non si basano su dati di addestramento etichettati, gli autoencoder non sono considerati un metodo di apprendimento supervisionato. Come tutti i metodi di apprendimento non supervisionato, gli autocodificatori sono addestrati a scoprire modelli nascosti nei dati non etichettati, piuttosto che a prevedere modelli noti dimostrati nei dati di addestramento etichettati; tuttavia, come i modelli di apprendimento supervisionato (e a differenza della maggior parte degli esempi di apprendimento non supervisionato) gli autoencoder hanno una verità fondamentale con cui misurare il loro output: l'input originale stesso (o una sua versione modificata). Per questo motivo, sono considerati “apprendimento auto-supervisionato”, quindi autoencoder.

Come funzionano gli autoencoder?

Gli autoencoder scoprono le variabili latenti passando i dati di input attraverso un “collo di bottiglia” prima che raggiungano il decoder. Questo costringe l'encoder a imparare a estrarre e a far passare solo le informazioni più utili a ricostruire con precisione l'input originale.

Sebbene diverse varianti di autoencoder alterino alcuni elementi della loro rete neurale artificiale per adattarsi al meglio a obiettivi e tipi di dati specifici, tutti gli autoencoder condividono elementi strutturali fondamentali:

L'encoder comprende strati che codificano una rappresentazione compressa dei dati di input attraverso la riduzione della dimensionalità. In un tipico autoencoder, gli strati nascosti della rete neurale contengono un numero progressivamente inferiore di nodi rispetto allo strato di input: mentre i dati attraversano gli strati dell'encoder, vengono compressi dal processo di “spremitura” in meno dimensioni.

Il collo di bottiglia (o “codice”) contiene la rappresentazione più compressa dell'input: è sia lo strato di output della rete di encoder che lo strato di input della rete di decoder. Un obiettivo fondamentale della progettazione e dell'addestramento di un autoencoder è la scoperta del numero minimo di caratteristiche importanti (o dimensioni) necessarie per una ricostruzione efficace dei dati di input. La rappresentazione dello spazio latente, ovvero il codice, che emerge da questo livello viene quindi inserita nel decoder.

Il decoder comprende strati nascosti con un numero progressivamente maggiore di nodi che decomprimono (o decodificano) la rappresentazione codificata dei dati, ricostruendo infine i dati nella loro forma originale precedente alla codifica. Questo output ricostruito viene quindi confrontato con la “ground truth” (i dati veri), che nella maggior parte dei casi è semplicemente l'input originale, per valutare l'efficacia dell'autoencoder. La differenza tra l'output e la ground truth è chiamata errore di ricostruzione.

In alcune applicazioni di autoencoder, il decoder può essere scartato dopo l'addestramento: in questi casi, l'unico scopo del decoder è addestrare l'encoder (in modo simile al ruolo del discriminatore in una rete generativa avversaria (GAN)), che viene poi utilizzato come componente di una rete neurale diversa. In molti autoencoder, il decoder continua a svolgere uno scopo dopo l'addestramento: ad esempio, nei VAE, il decoder emette nuovi campioni di dati.

Uno dei principali vantaggi dell'utilizzo degli autoencoder rispetto ad altre tecniche di dimensionalità, come l'analisi delle componenti principali (PCA), è che gli autoencoder possono acquisire complesse correlazioni non lineari. Di conseguenza, le funzioni di attivazione utilizzate negli autoencoder sono tipicamente funzioni non lineari come la funzione sigmoidea.

Diversi tipi di autoencoder apportano adattamenti a questa struttura per adattarsi meglio a compiti e tipi di dati diversi. Oltre a selezionare il tipo appropriato di rete neurale, ad esempio un'architettura basata su CNN, un'architettura basata su RNN come la memoria a lungo termine, un'architettura di trasformazione o una semplice rete neurale vanilla feed-forward, la progettazione di un autoencoder comporta molteplici iperparametri:

  • Dimensione del codice: la dimensione del collo di bottiglia determina la quantità di dati da comprimere. La dimensione del codice può essere utilizzata anche come termine di regolarizzazione: le regolazioni della dimensione del codice sono un modo per ovviare al sovradattamento o al sottoadattamento.
  • Numero di strati: la profondità dell'autoencoder viene misurata in base al numero di strati nell'encoder e nel decoder. Una maggiore profondità offre una maggiore complessità, mentre una minore profondità fornisce una maggiore velocità di elaborazione.
  • Numero di nodi per strato: generalmente, il numero di nodi (o “neuroni”) diminuisce con ogni strato di codifica, raggiunge un minimo nel collo di bottiglia e aumenta con ogni strato dello strato di decodifica, sebbene in alcune varianti, come gli autoencoder sparsi, non è sempre così. eIl numero di neuroni può variare anche in base alla natura dei dati di input: ad esempio, un autoencoder che si occupa di immagini di grandi dimensioni richiederebbe più neuroni di uno che si occupa di immagini più piccole.
  • Funzione di perdita: quando si esegue l'addestramento di un autoencoder, la funzione di perdita (che misura la perdita di ricostruzione tra l'output e l'input) viene usata per ottimizzare i pesi del modello attraverso la discesa del gradiente durante la retropropagazione. L'algoritmo o gli algoritmi ideali per la funzione di perdita dipende dal compito per cui verrà utilizzato l'autoencoder.
Autoencoder incompleti

Gli autoencoder incompleti sono una semplice struttura di autoencoder utilizzata principalmente per la riduzione della dimensionalità. I loro livelli nascosti contengono meno nodi rispetto ai livelli di input e output e la capacità del collo di bottiglia è fissa.

L'obiettivo di questo collo di bottiglia è impedire che l'autoencoder si adatti eccessivamente ai suoi dati di addestramento. Senza limitare sufficientemente la capacità del collo di bottiglia, la rete tende ad apprendere la funzione identità tra input e l'uscita: in altre parole, può imparare a minimizzare la perdita di ricostruzione semplicemente copiando direttamente l'input. Forzando una compressione significativa dei dati, la rete neurale deve imparare a conservare solo le caratteristiche più essenziali per la ricostruzione.

Ma se l'encoder e il decoder hanno una capacità abbastanza elevata, vale a dire, se stanno elaborando input di dati grandi o complessi, allora l'autoencoder (anche con un collo di bottiglia) potrebbe comunque apprendere la funzione di identità, rendendola inutile. Ciò rende inflessibili gli autoencoder incompleti e ne limita la capacità.

Autoencoder regolarizzati

Gli autoencoder regolarizzati risolvono le carenze degli autoencoder incompleti introducendo la regolarizzazione: tecniche che limitano o modificano il modo in cui il modello calcola l'errore di ricostruzione. Questi termini di regolarizzazione non solo riducono il sovraccarico, ma consentono anche all'autoencoder di apprendere caratteristiche o funzioni utili.

Autoencoder sparsi

Gli autoencoder sparsi (SAE) impongono un vincolo di scarsità: invece di creare un collo di bottiglia delle informazioni riducendo il numero di nodi in ogni livello nascosto, i SAE creano un collo di bottiglia riducendo il numero di nodi che possono essere attivati contemporaneamente.

Mentre un autoencoder standard incompleto utilizzerà l'intera rete neurale per ogni osservazione, gli autoencoder con una funzione di scarsità sono penalizzati per ogni neurone che è stato attivato oltre una certa soglia. Questo permette all'encoder e al decoder di avere una capacità maggiore senza un corrispondente rischio di overfitting ai dati di addestramento (perché non tutti i neuroni saranno attivati). Consente inoltre agli strati nascosti di contenere nodi dedicati alla scoperta di caratteristiche specifiche: la funzione di scarsità garantisce che “vale la pena” attivare tali nodi solo se queste caratteristiche sono presenti.

Sebbene il calcolo dell'errore di ricostruzione e la successiva ottimizzazione dei pesi dei parametri attraverso la retropropagazione avvengano separatamente, questa ottimizzazione viene regolarizzata da questa funzione di scarsità. L'autoencoder è quindi costretto ad apprendere la rappresentazione dello spazio latente più efficace entro i vincoli di scarsità dati.

Le funzioni utilizzate per imporre un vincolo di scarsità sono tipicamente la regolarizzazione L1 o la divergenza di KL.

Divergenza di KL
La divergenza di Kullback-Leibler (KL) misura la differenza tra due distribuzioni di probabilità. Se utilizzata nel contesto dei SAE, la penalità inflitta alla rete dopo ogni batch di addestramento è proporzionata alla divergenza di KL tra la distribuzione target dei valori di attivazione, la scarsità desiderata e la distribuzione effettiva dei valori di attivazione. Come verrà discusso più avanti in questo articolo, la divergenza di KL viene utilizzata anche per ottimizzare l'accuratezza delle distribuzioni di probabilità apprese dagli autoencoder variazionali (VAE).

Autoencoder contrattivi

Introdotti per la prima volta nel 2011 da ricercatori dell'Université de Montréal, gli autoencoder contrattivi1 sono progettati per essere insensibili a piccole variazioni (o “rumore”) nei dati di input al fine di ridurre il sovraccarico e acquisire più efficacemente le informazioni essenziali.

Ciò si ottiene aggiungendo un termine di regolarizzazione nella formazione, penalizzando la rete per aver modificato l'output in risposta a cambiamenti non sufficientemente ampi nell'input. Questo termine di penalità viene calcolato utilizzando due concetti matematici:

  • La matrice jacobiana contiene tutte le derivate del primo ordine di una funzione che può essere utilizzata per la retropropagazione. Rappresenta in che modo i gradienti della rete cambiano al variare dell'input.
  • La norma di Frobenius è calcolata come “la radice quadrata della somma dei quadrati assoluti dei suoi elementi”.2 Misura il guadagno medio della matrice lungo ogni direzione ortogonale nello spazio.3

Nello specifico, il termine di penalità è la norma di Frobenius della matrice Jacobiana delle attivazioni neuronali nella rete di codifica rispetto all'input. Questo termine di penalità e l'algoritmo della funzione di perdita utilizzati per ridurre l'errore di ricostruzione sono avversari: la funzione di perdita di ricostruzione tende a osservare le variazioni nei dati di input mentre il termine di penalità tende a ignorarle. Combinando entrambi i termini, la rete è costretta ad apprendere una rappresentazione compressa dell'input che contiene solo le variabili più consequenziali.

Autoencoder di denoising

Gli autoencoder di denoising ricevono dati di input parzialmente corrotti e vengono addestrati a ripristinare l'input originale rimuovendo le informazioni inutili attraverso la riduzione della dimensionalità.

A differenza della maggior parte degli autoencoder, gli autoencoder di denoising non hanno come input i dati di verità. Invece, il rumore gaussiano viene aggiunto ai dati originali, ad esempio aggiungendo un'immagine statica casuale, e l'autoencoder di denoising (DAE) impara a filtrarlo. Durante l'addestramento del modello, l'errore di ricostruzione dell'output negato non viene misurato rispetto ai dati di input danneggiati, ma rispetto all'immagine originale.

Oltre a evitare l'overfitting, questa tecnica di addestramento rende gli autoencoder di denoising molto utili per ripulire file audio e immagini rumorose o corrotte. Gli autoencoder di denoising sono utlizzati anche come paradigmi di addestramento fondamentali per modelli di generazione di immagini all'avanguardia come Stable Diffusion.4

Autoencoder variazionali

Gli autoencoder variazionali (VAE) sono modelli generativi che apprendono le rappresentazioni compresse dei loro dati di addestramento come distribuzioni di probabilità, che vengono utilizzati per generare nuovi dati di esempio creando variazioni di tali rappresentazioni apprese.

La differenza fondamentale tra i VAE e gli altri tipi di autoencoder è che mentre la maggior parte degli autoencoder apprende modelli di spazio latente discreto, i VAE apprendono modelli a variabili latenti continue. Piuttosto che un singolo vettore di codifica per lo spazio latente, i VAE modellano due vettori diversi: un vettore delle medie, “μ”, e un vettore delle deviazioni standard, “σ”. Poiché questi vettori acquisiscono gli attributi latenti come una distribuzione di probabilità, ovvero apprendono una codifica stocastica anziché una codifica deterministica, i VAE consentono l'interpolazione e il campionamento casuale, ampliando notevolmente le loro capacità e i loro casi d'uso. Ciò significa che i VAE sono modelli di intelligenza artificiale generativa.

In termini più semplici, i VAE imparano a codificare le caratteristiche importanti apprese dagli input nei dataset su cui sono addestrati in un modo flessibile e approssimativo, che consente loro di generare nuovi campioni che assomigliano ai dati di formazione originali. La funzione di perdita utilizzata per ridurre al minimo l'errore di ricostruzione è regolarizzata dalla divergenza di KL tra la distribuzione di probabilità dei dati di addestramento (la distribuzione a priori) e la distribuzione di variabili latenti apprese dal VAE (la distribuzione a posteriori). Questa funzione di perdita regolarizzata consente ai VAE di generare nuovi campioni simili ai dati su cui sono stati addestrati evitando il sovradattamento, il che in questo caso significherebbe generare nuovi campioni troppo identici ai dati originali.

Per generare un nuovo campione, il VAE campiona un vettore latente casuale (ε) dall'interno dell'unità gaussiana (link esterno a ibm.com). In altre parole, seleziona un punto di partenza casuale dall'interno della distribuzione normale, lo sposta in base alla media della distribuzione latente (μ) e lo scala in base alla varianza della distribuzione latente (σ). Questo processo, chiamato trucco di riparametrizzazione,,5 evita il campionamento diretto della distribuzione variazionale: poiché il processo è casuale, non ha derivate, il che elimina la necessità di retropropagazione durante il processo di campionamento.

Quando un VAE viene utilizzato per attività generative, spesso l'encoder può essere scartato dopo l'addestramento. Le evoluzioni più avanzate dei VAE, come i VAE condizionali, offrono all'utente un maggiore controllo sui campioni generati fornendo input condizionali che modificano l'output dell'encoder.

Casi d'uso degli autoencoder

Sia gli autoencoder generativi che quelli deterministici hanno un'ampia varietà di casi d'uso per diversi campi e tipi di dati.

  • Compressione dei dati: gli autoencoder apprendono naturalmente una rappresentazione compressa dei dati di input.
  • Riduzione della dimensionalità: le codifiche apprese dagli autoencoder possono essere utilizzate come input per reti neurali composite più grandi. La riduzione della dimensionalità di dati complessi può estrarre funzionalità rilevanti per altre attività, nonché aumentare la velocità e l'efficienza di calcolo.
  • Rilevamento di anomalie e riconoscimento facciale: gli autoencoder possono rilevare anomalie, frodi o altri difetti e, al contrario, confermare una corrispondenza autentica, determinando la perdita di ricostruzione dei dati esaminati rispetto all'esempio “normale” o “genuino” con cui viene confrontato.
  • Denoising delle immagini e denoising dell'audio: gli autoencoder di denoising possono rimuovere artefatti estranei o danneggiamenti che non corrispondono alla rappresentazione dello spazio latente appresa dalla rete.
  • Ricostruzione dell'immagine: invertendo le tecniche apprese per il denoising, gli autoencoder possono riempire gli elementi mancanti di un'immagine. Possono essere utilizzati in modo simile per colorare le immagini.
  • Compiti generativi: i VAE e gli autoencoder avversariali (AAE), che apprendono distribuzioni probabilistiche simili a quelle apprese dai VAE ma utilizzano una rete discriminante avversaria (simile alle reti generative avversarie) al posto della divergenza di KL, sono stati utilizzati con grande successo per attività generative. Le principali applicazioni generative degli autoencoder includono il modello Dall-E originale di OpenAI per la generazione di immagini6 e persino la generazione di strutture molecolari utilizzate per i farmaci.7
Soluzioni correlate
watsonx.ai

È possibile istruire, convalidare, adattare e distribuire AI generativa, modelli di fondazione e funzionalità di machine learning con facilità e creare applicazioni AI in una frazione del tempo con una frazione dei dati.

Esplora watsonx.ai

Risorse sugli autoencoder Apprendimento supervisionato e non supervisionato: qual è la differenza?

Questo articolo esplora gli aspetti essenziali di due approcci di data science: l'apprendimento supervisionato e non supervisionato. Scopri quale approccio è il più adatto alla tua situazione.

Apprendimento profondo e apprendimento rinforzato

Un'introduzione a due delle discipline più richieste del machine learning. Innanzitutto, scopri la teoria alla base delle reti neurali e di diverse architetture moderne di deep learning. Una volta sviluppati alcuni modelli di deep learning, il corso si concentrerà sull'apprendimento rinforzato.

Il nuovo modello di base geospaziale di IBM

Nato dalla collaborazione di IBM con la NASA, il modello watsonx.ai è progettato per convertire i dati satellitari in mappe ad alta risoluzione di inondazioni, incendi e altri cambiamenti del paesaggio per rivelare il passato del nostro pianeta e delinearne il futuro. IBM ha creato il modello su un autoencoder mascherato per l'elaborazione video e l'ha adattato alle riprese satellitari.

Fasi successive

Addestra, convalida, ottimizza e distribuisci l'AI generativa, i modelli di fondazione e le funzionalità di machine learning con facilità e crea applicazioni AI in una frazione del tempo utilizzando una frazione dei dati con IBM watsonx.ai, uno studio aziendale di prossima generazione per sviluppatori di AI.

Inizia la prova gratuita Prenota una demo live
Note a piè di pagina

1 “Contractive Auto-Encoders: Explicit Invariance During Feature Extraction”, resoconto della 28° edizione della International Conference on Machine Learning, luglio 2011
2 “Frobenius Norm”, Wolfram Mathworld
3 “Matrix Norms”, UC Berkeley, febbraio 2021
4 “High-Resolution Image Synthesis With Latent Diffusion Models”, resoconto della IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), giugno 2022
5 “Auto-Encoding Variational Bayes”, arXiv, dicembre 2013 (data ultimo aggiornamento: 10 dicembre 2022)
6 “DALL-E: Creating Images from Text”, OpenAI, 5 gennaio 2021
7 “Junction Tree Variational Autoencoder for Molecular Graph Generation”, resoconto della 35° edizione della International Conference on Machine Learning, luglio 2018