Gli autoencoder variazionali (VAE) sono modelli generativi utilizzati nel machine learning (ML) per generare nuovi dati sotto forma di variazioni dei dati di input su cui vengono addestrati. Oltre a questo, eseguono anche attività comuni ad altri autoencoder, come il denoising.
Come tutti gli autoencoder, gli autoencoder variazionali sono modelli di deep learning composti da un encoder che impara a isolare le variabili latenti più importanti dai dati di addestramento e da un decoder che poi utilizza quelle variabili latenti per ricostruire i dati di input.
Tuttavia, mentre la maggior parte delle architetture di autoencoder codifica una rappresentazione discreta e fissa di variabili latenti, i VAE codificano una rappresentazione continua e probabilistica di quello spazio latente, permettendo non solo di ricostruire accuratamente l'esatto input originale, ma anche di utilizzare l'inferenza variazionale per generare nuovi campioni di dati che assomigliano ai dati di input originali.
L'architettura di reti neurali per l'autoencoder variazionale è stata originariamente proposta in un articolo del 2013 di Diederik P. Kingma e Max Welling, intitolato Auto-Encoding Variational Bayes (link esterno a ibm.com). Questo articolo ha anche reso popolare quello che hanno chiamato il trucco della riparametrizzazione, un'importante tecnica di machine learning che permette di usare la casualità come input del modello senza comprometterne la differenziabilità, ovvero la capacità di ottimizzare i parametri.
Sebbene i VAE siano spesso discussi nel contesto della generazione di immagini, compreso in questo articolo, possono essere utilizzati per una vasta gamma di applicazioni di intelligenza artificiale (AI), dal rilevamento delle anomalie1 alla generazione di nuove molecole farmacologiche2 (link esterno a ibm.com).
Essenziale per comprendere i VAE o qualsiasi altro tipo di autoencoder è la nozione di spazio latente, il nome dato all'insieme delle variabili latenti di uno specifico insieme di dati di input. In breve, le variabili latenti sono variabili spesso non sono direttamente osservabili sottostanti ai dati che informano il modo in cui i dati vengono distribuiti.
Per un'utile visualizzazione del concetto di variabili latenti, immaginiamo un ponte con un sensore che misura il peso di ogni veicolo in transito. Naturalmente, i veicoli che utilizzano il ponte sono diversi, dalle cabriolet piccole e leggere ai camion più pesanti. Poiché non c'è una telecamera, non abbiamo modo di rilevare se un veicolo specifico è una cabriolet, una berlina, un furgone o un camion. Tuttavia, sappiamo che il tipo di veicolo influenza in modo significativo il peso di quel veicolo.
Questo esempio comporta quindi due variabili casuali, x e z, in cui x è la variabile direttamente osservabile del peso del veicolo e z è la variabile latente del tipo di veicolo. Il principale obiettivo di addestramento di qualsiasi autoencoder è quello di imparare a modellare in modo efficiente lo spazio latente di un particolare input.
Gli autoencoder modellano lo spazio latente attraverso la riduzione della dimensionalità, ovvero la compressione dei dati in uno spazio di dimensioni inferiori che acquisisce le informazioni significative contenute nell'input originale.
Nel contesto del machine learning (ML), le dimensioni matematiche non corrispondono alle dimensioni spaziali familiari del mondo fisico, bensì alle caratteristiche dei dati. Ad esempio, l'immagine in bianco e nero di 28x28 pixel di una cifra scritta a mano dal set di dati MNIST può essere rappresentata come un vettore a 784 dimensioni, in cui ogni dimensione corrisponde a un singolo pixel il cui valore varia da 0 (per il nero) a 1 (per il bianco). La stessa immagine a colori potrebbe essere rappresentata come un vettore a 2.352 dimensioni, in cui ciascuno dei 784 pixel è rappresentato in tre dimensioni corrispondenti ai rispettivi valori di rosso, verde e blu (RGB).
Tuttavia, non tutte queste dimensioni contengono informazioni utili. La cifra vera e propria rappresenta solo una piccola parte dell'immagine, quindi la maggior parte dello spazio di input è costituito da rumore di fondo. La compressione dei dati fino alle sole dimensioni che contengono informazioni rilevanti (lo spazio latente) può aumentare la precisione, l'efficienza e l'efficacia di molte attività e di molti algoritmi di ML.
I VAE sono un sottoinsieme della categoria più ampia degli autoencoder, un'architettura di reti neurali solitamente utilizzata nel deep learning per attività quali la compressione dei dati, la rimozione del rumore dalle immagini, il rilevamento delle anomalie e il riconoscimento facciale.
Gli autoencoder sono sistemi auto-supervisionati il cui obiettivo di addestramento è quello di comprimere (o codificare) l'input attraverso la riduzione della dimensionalità e poi ricostruire con precisione (o decodificare) l'input originale utilizzando la rappresentazione compressa.
A livello fondamentale, la funzione di un autoencoder è quella di estrarre efficacemente le informazioni più salienti dei dati (cioè le sue variabili latenti) e di eliminare il rumore irrilevante. Ciò che distingue i diversi tipi di autoencoder l'uno dall'altro è la strategia specifica che impiegano per estrarre tali informazioni e i casi d'uso a cui la rispettiva strategia è più adatta.
Durante l'addestramento, la rete di encoder trasmette i dati di input dal set di dati di addestramento attraverso un "collo di bottiglia" prima che raggiungano il decoder. La rete di decoder, invece, è responsabile della ricostruzione dell'input originale utilizzando solo il vettore delle variabili latenti.
Dopo ogni epoch di addestramento, vengono utilizzati algoritmi di ottimizzazione come la discesa del gradiente per regolare i pesi del modello in modo da ridurre al minimo la differenza tra l'input dei dati originali e l'output del decoder. Alla fine, l'encoder impara a far passare le informazioni più favorevoli a una ricostruzione accurata e il decoder impara a ricostruirle efficacemente.
Sebbene ciò si presti in modo più intuitivo a semplici attività di compressione dei dati, la capacità di codificare in modo efficiente rappresentazioni latenti accurate di dati non etichettati offre agli autoencoder un'ampia varietà di applicazioni. Ad esempio, possono essere utilizzati per ripristinare file audio danneggiati, colorare immagini in scala di grigi o rilevare anomalie (come quelle derivanti dalle frodi) che altrimenti sarebbero invisibili ad occhio nudo.
Sebbene i diversi tipi di autoencoder aggiungano o alterino alcuni aspetti della loro architettura per adattarsi meglio a obiettivi e tipi di dati specifici, tutti condividono tre elementi strutturali fondamentali:
L'encoder estrae le variabili latenti dei dati di input x e le emette sotto forma di vettore che rappresenta lo spazio latente z. In un tipico autoencoder "vanilla", ogni strato dell'encoder contiene sempre meno nodi rispetto al precedente. Mentre i dati attraversano ogni strato dell'encoder, vengono compressi attraverso il processo di "squeezing" in meno dimensioni.
Altre varianti di autoencoder utilizzano invece termini di regolarizzazione, come una funzione che impone la scarsità penalizzando il numero di nodi attivati su ogni livello, per ottenere la riduzione della dimensionalità.
Il collo di bottiglia, o "codice", è sia lo strato di output della rete di encoder che lo strato di input della rete di decoder e contiene lo spazio latente: l'incorporamento completamente compresso e di dimensioni inferiori dei dati di input. È necessario predisporre un collo di bottiglia sufficiente per garantire che il decoder non possa semplicemente copiare o memorizzare i dati di input, il che soddisferebbe nominalmente il suo compito di addestramento ma impedirebbe all'autoencoder di apprendere.
Il decoder utilizza quella rappresentazione latente per ricostruire l'input originale essenzialmente invertendo l'encoder: in una tipica architettura di decoder, ogni livello successivo contiene un numero progressivamente maggiore di nodi attivi.
Sebbene le reti di encoder e decoder di molti autoencoder siano costruite con percettori multistrato standard (MLP), gli autoencoder non si limitano a nessun tipo specifico di rete neurale.
Gli autoencoder utilizzati per le attività di computer vision sono spesso reti neurali convoluzionali e vengono quindi chiamati autoencoder convoluzionali. Gli autoencoder costruiti con l' architettura trasformativa sono stati utilizzati in diversi ambiti, tra cui la computer vision3 e la musica.4 .
Un vantaggio fondamentale degli autoencoder rispetto ad altri algoritmi di riduzione della dimensionalità, come l'analisi dei componenti principali (PCA), è che gli autoencoder possono modellare relazioni non lineari tra diverse variabili. Per questo motivo, i nodi delle reti neurali autoencoder utilizzano in genere funzioni di attivazione non lineari.
In molte applicazioni di autoencoder, il decoder serve solo ad aiutare nell'ottimizzazione dell'encoder e viene quindi scartato dopo l'addestramento. Negli autoencoder variazionali, il decoder viene conservato e utilizzato per generare nuovi punti dati.
Ciò che distingue i VAE dagli altri autoencoder è il modo unico in cui codificano lo spazio latente e i diversi casi d'uso a cui può essere applicata la loro codifica probabilistica.
A differenza della maggior parte degli autoencoder, che sono modelli deterministici che codificano un singolo vettore di variabili latenti discrete, i VAE sono modelli probabilistici e, pertanto, codificano le variabili latenti dei dati di addestramento non come un valore discreto fisso z, ma come un intervallo continuo di possibilità espresso come distribuzione di probabilità p(z).
Nella statistica bayesiana, questo intervallo di possibilità appreso per la variabile latente è chiamato distribuzione a priori. Nell'inferenza variazionale, il processo generativo di sintesi di nuovi punti dati, questa distribuzione precedente viene utilizzata per calcolare la distribuzione a posteriori, p(z|x). In altre parole, il valore delle variabili osservabili x dato un valore per la variabile latente z.
Per ogni attributo latente dei dati di addestramento, i VAE codificano due diversi vettori latenti: un vettore di medie, "μ", e un vettore di deviazioni standard,"σ". In sostanza, questi rappresentano l'intervallo di possibilità per ciascuna variabile latente e la varianza attesa all'interno di ciascun intervallo di possibilità.
Campionando casualmente da questa gamma di possibilità codificate, i VAE possono sintetizzare nuovi campioni di dati che, benché unici e originali di per sé, assomigliano ai dati di addestramento originali. Sebbene relativamente intuitiva in linea di principio, questa metodologia richiede ulteriori adattamenti alla metodologia standard degli autoencoder per essere messa in pratica.
Per spiegare questa capacità dei VAE, esamineremo i seguenti concetti:
Come tutti gli autoencoder, i VAE utilizzano la perdita di ricostruzione, detta anche errore di ricostruzione, come funzione di perdita primaria nell'addestramento. L'errore di ricostruzione misura la differenza (o "perdita") tra i dati di input originali e la versione ricostruita di tali dati in uscita dal decoder. Come funzione di perdita di ricostruzione possono essere utilizzati molteplici algoritmi, tra cui la perdita di entropia incrociata o l'errore quadratico medio (MSE).
Come spiegato in precedenza, l'architettura dell'autoencoder crea un collo di bottiglia che consente solo a un sottoinsieme dei dati di input originali di passare attraverso il decoder. All'inizio dell'addestramento, che in genere inizia con un'inizializzazione casuale dei parametri del modello, l'encoder non ha ancora appreso quali parti dei dati pesare maggiormente. Di conseguenza, inizialmente produrrà una rappresentazione latente non ottimale e il decoder produrrà una ricostruzione abbastanza imprecisa o incompleta dell'input originale.
Riducendo al minimo l'errore di ricostruzione attraverso una forma di discesa del gradiente sui parametri della rete di encoder e della rete di decoder, i pesi del modello di autoencoder verranno regolati in modo da produrre una codifica più utile dello spazio latente (e quindi una ricostruzione più accurata). Matematicamente, l'obiettivo della funzione di perdita di ricostruzione è ottimizzare pθ(z|x), in cui θ rappresenta i parametri del modello che impongono la ricostruzione accurata dell'input x data la variabile latente z.
La perdita di ricostruzione da sola è sufficiente per ottimizzare la maggior parte degli autoencoder, il cui unico obiettivo è l'apprendimento della rappresentazione compressa dei dati di input che favorisca una ricostruzione accurata.
Tuttavia, l'obiettivo di un autoencoder variazionale non è ricostruire l'input originale, ma generare nuovi campioni che assomiglino all'input originale. Per questo motivo è necessario un termine di ottimizzazione aggiuntivo.
Ai fini dell'inferenza variazionale, la generazione di nuovi campioni da parte di un modello addestrato, la sola perdita di ricostruzione può comportare una codifica irregolare dello spazio latente che si adatta eccessivamente ai dati di addestramento e non si generalizza bene ai nuovi campioni. Pertanto, i VAE incorporano un altro termine di regolarizzazione: divergenza di Kullback-Leibler, o divergenza KL.
Per generare le immagini, il decoder campiona dallo spazio latente. Il campionamento dai punti specifici dello spazio latente che rappresentano gli input originali nei dati di addestramento replicherebbe quegli input originali. Per generare nuove immagini, il VAE deve essere in grado di effettuare il campionamento da qualsiasi punto dello spazio latente tra i punti dati originali e, perché ciò sia possibile, lo spazio latente deve presentare due tipi di regolarità:
Un modo semplice per implementare sia la continuità che la completezza nello spazio latente è garantire che segua una distribuzione normale standard, chiamata distribuzione gaussiana. Ma minimizzare solo la perdita di ricostruzione non incentiva il modello a organizzare lo spazio latente in un modo particolare, perché lo spazio "intermedio" non è rilevante per la ricostruzione accurata dei punti dati originali. È qui che entra in gioco il termine di regolarizzazione del divergenza di KL.
La divergenza KL è una metrica utilizzata per confrontare due distribuzioni di probabilità. Minimizzando la divergenza KL tra la distribuzione appresa delle variabili latenti e una semplice distribuzione gaussiana i cui valori vanno da 0 a 1 si costringe la codifica appresa delle variabili latenti a seguire una distribuzione normale. Ciò consente un'interpolazione fluida di qualsiasi punto nello spazio latente e quindi la generazione di nuove immagini.
Un ostacolo all'uso della divergenza KL per l'inferenza variazionale è che il denominatore dell'equazione è intrattabile, il che significa che ci vorrebbe un tempo teoricamente infinito per il calcolo diretto. Per ovviare a questo problema e integrare entrambe le funzioni di perdita chiave, i VAE approssimano la riduzione al minimo della divergenza KL massimizzando invece il limite inferiore dell'evidenza, o limite inferiore variazionale (ELBO).
Nella terminologia statistica, l'evidenza nel "limite inferiore dell'evidenza" si riferisce a p(x), i dati di input osservabili che il VAE è apparentemente responsabile di ricostruire. Le variabili osservabili nei dati di input sono "l'evidenza" delle variabili latenti scoperte dall'autoencoder. Con "limite inferiore" ci si riferisce alla stima del caso peggiore per la log-likelihood di una determinata distribuzione. La log-likelihood effettiva potrebbe essere superiore all'ELBO.
Nel contesto dei VAE, il limite inferiore variazionale si riferisce alla stima del caso peggiore della probabilità che una specifica distribuzione a posteriori. In altre parole, uno specifico output dell'autoencoder, condizionato sia dal termine di perdita della divergenza KL che dal termine di perdita della ricostruzione, si adatta all'"evidenza" dei dati di formazione. Quindi, l'addestramento di un modello per l'inferenza variazionale può essere definito in termini di massimizzazione dell'ELBO.
Come è stato discusso, l'obiettivo dell'inferenza variazionale è quello di produrre nuovi dati sotto forma di variazioni casuali dei dati di addestramento x. A prima vista, la cosa è relativamente semplice: si usa una funzione ƒ che seleziona un valore casuale per la variabile latente z, che il decoder può poi usare per generare una ricostruzione approssimativa di x.
Tuttavia, una proprietà intrinseca della casualità è che non può essere ottimizzata. Non esiste una casualità "migliore": un vettore di valori casuali, per definizione, non ha una derivata, ovvero nessun gradiente che esprima alcun pattern negli output del modello risultante, e quindi non può essere ottimizzato tramite la retropropagazione utilizzando alcuna forma di discesa del gradiente. Ciò significherebbe che una rete neurale che utilizza il precedente processo di campionamento casuale non può apprendere i parametri ottimali per svolgere il proprio compito.
Per aggirare questo ostacolo, i VAE utilizzano il trucco della riparametrizzazione, il quale introduce un nuovo parametro, ε, che è un valore casuale selezionato dalla distribuzione normale tra 0 e 1.
A seguire, riparametrizza la variabile latente z come z = μx + εσx. In termini più semplici, sceglie un valore per la variabile latente z iniziando con la media di quella variabile (rappresentata da μ) e spostandola di un multiplo casuale (rappresentato da ε) di una deviazione standard (σ). Condizionato da quel valore specifico di z, il decoder emette un nuovo campione.
Poiché il valore casuale ε non è derivato e non ha alcuna relazione con i parametri del modello autoencoder, può essere ignorato durante la retropropagazione. Il modello viene aggiornato tramite una forma di discesa del gradiente, il più delle volte tramite Adam (link esterno a ibm.com), un algoritmo di ottimizzazione basato sul gradiente sviluppato anch'esso da Kingma, per massimizzare l'ELBO.
Un difetto dei VAE "vanilla" tradizionali è che l'utente non ha alcun controllo sugli output specifici generati dall'autoencoder. Ad esempio, un VAE convenzionale addestrato sul set di dati MNIST citato in precedenza genererà nuovi campioni di cifre scritte a mano da 0 a 9, ma non può essere vincolato a generare come output solo 4 e 7.
Come suggerisce il nome, i VAE condizionali (CVAE) consentono output condizionati da input specifici, anziché generare esclusivamente variazioni casuali dei dati di addestramento. Ciò si ottiene incorporando elementi di apprendimento supervisionato (o apprendimento semi-supervisionato) insieme agli obiettivi di formazione tradizionalmente non supervisionati degli autoencoder convenzionali.
Addestrando ulteriormente il modello su esempi etichettati di variabili specifiche, tali variabili possono essere utilizzate per condizionare l'output del decoder. Ad esempio, un CVAE può essere prima addestrato su un ampio set di dati di immagini facciali e poi addestrato utilizzando l'apprendimento supervisionato per apprendere una codifica latente per "barba" in modo che possa produrre nuove immagini di volti barbuti.
Newsletter di settore
Ricevi insight selezionati sulle notizie più importanti e interessanti sull'AI. Iscriviti alla nostra newsletter settimanale Think. Leggi l'Informativa sulla privacy IBM.
L'abbonamento sarà fornito in lingua inglese. Troverai un link per annullare l'iscrizione in tutte le newsletter. Puoi gestire i tuoi abbonamenti o annullarli qui. Per ulteriori informazioni, consulta l'Informativa sulla privacy IBM.
I VAE sono spesso messe a confronto con le reti generative avversarie (GAN), un'altra architettura di modello utilizzata per generare campioni che assomigliano ai dati di addestramento, in particolare per le immagini.
Come per i VAE, le GAN sono un'architettura congiunta che combina due reti neurali: una rete di generatori, responsabile della produzione di campioni di immagini che assomigliano alle immagini del set di dati di addestramento, e una rete discriminatrice responsabile di determinare se un'immagine specifica è un'immagine "reale" dai dati di addestramento o un'immagine "falsa" dalla rete del generatore.
Le due reti vengono addestrate in modo avverso in un gioco a somma zero: il feedback della rete discriminatrice viene utilizzato per migliorare l'output dei generatori fino a quando le discriminatrici non sono più in grado di discernere tra campioni reali e falsi.
Per la sintesi delle immagini, entrambi gli approcci hanno vantaggi e svantaggi: le GAN producono immagini più chiare ma, a causa dei compromessi avversari tra i due modelli compositi, sono instabili nell'addestramento. I VAE sono più facili da addestrare ma, poiché producono immagini dalle caratteristiche "medie" dei dati di addestramento, tendono a generare immagini più sfuocate.
Un VAE-GAN è, come il nome suggerisce, un ibrido tra un autoencoder variazionale (VAE) e una rete generativa avversaria (GAN). Riduce la sfocatura delle immagini generate dai VAE sostituendo il termine di perdita di ricostruzione del modello VAE con una rete discriminatrice.
Ottieni una comprensione approfondita delle reti neurali, delle loro funzioni di base e dei fondamenti per costruirne una.
IBM Granite è la nostra famiglia di modelli AI aperti, efficienti e affidabili, su misura per le aziende e ottimizzati per scalare le applicazioni di AI. Esplora le opzioni di linguaggio, codice, serie temporali e guardrail.
Abbiamo intervistato 2.000 organizzazioni in merito alle loro iniziative di AI per scoprire cosa funziona, cosa non funziona e come giocare d’anticipo.
Scopri come incorporare in tutta sicurezza l’AI generativa e il machine learning nella tua azienda.
Addestra, convalida, adatta e implementa le funzionalità di AI generativa, foundation model e machine learning con IBM watsonx.ai, uno studio aziendale di nuova generazione per builder AI. Crea applicazioni AI in tempi ridotti e con una minima quantità di dati.
Metti l'AI al servizio della tua azienda grazie all'esperienza leader di settore e alla gamma di soluzioni di IBM nel campo dell'AI.
Reinventa i flussi di lavoro e le operazioni critiche aggiungendo l'AI per massimizzare le esperienze, il processo decisionale in tempo reale e il valore di business.
Tutti i link sono esterni a ibm.com
1 "Novel Applications for VAE-based Anomaly Detection Systems", arXiv, 26 aprile 2022.
2 "Variational autoencoder-based chemical latent space for large molecular structures with 3D complexity", Nature, 16 novembre 2023.
3 "Masked Autoencoders Are Scalable Vision Learners", arXiv, 11 novembre 2021.
4 "Encoding Musical Style with Transformer Autoencoders", arXiv, 10 dicembre 2019.
IBM web domains
ibm.com, ibm.org, ibm-zcouncil.com, insights-on-business.com, jazz.net, mobilebusinessinsights.com, promontory.com, proveit.com, ptech.org, s81c.com, securityintelligence.com, skillsbuild.org, softlayer.com, storagecommunity.org, think-exchange.com, thoughtsoncloud.com, alphaevents.webcasts.com, ibm-cloud.github.io, ibmbigdatahub.com, bluemix.net, mybluemix.net, ibm.net, ibmcloud.com, galasa.dev, blueworkslive.com, swiss-quantum.ch, blueworkslive.com, cloudant.com, ibm.ie, ibm.fr, ibm.com.br, ibm.co, ibm.ca, community.watsonanalytics.com, datapower.com, skills.yourlearning.ibm.com, bluewolf.com, carbondesignsystem.com, openliberty.io