Vai al contenuto principale

Variational Autoencoders: come funzionano e perché sono importanti

Scopri i principi fondamentali, le applicazioni e i vantaggi pratici dei variational autoencoders e segui un’implementazione passo passo con PyTorch.
Aggiornato 3 giu 2026  · 14 min leggi

Con l’avanzare della tecnologia del machine learning a un ritmo senza precedenti, i Variational Autoencoders (VAE) stanno rivoluzionando il modo in cui elaboriamo e generiamo dati. Unendo un potente sistema di codifica dei dati a innovative capacità generative, i VAE offrono soluzioni trasformative a sfide complesse nel campo.

In questo articolo esploreremo i concetti di base dei VAE, le loro applicazioni e come implementarli in modo efficace con PyTorch, passo dopo passo.

Che cos’è un Variational Autoencoder?

Gli autoencoder sono un tipo di rete neurale progettata per apprendere rappresentazioni efficienti dei dati, principalmente per riduzione della dimensionalità o apprendimento delle feature

Gli autoencoder sono composti da due parti principali: 

  1. L’encoder: comprime i dati in ingresso in uno spazio latente a dimensionalità inferiore.
  2. Il decoder: ricostruisce i dati originali a partire da questa rappresentazione compressa. 

L’obiettivo principale degli autoencoder è minimizzare la differenza tra l’input e l’output ricostruito, imparando così una rappresentazione compatta dei dati.

Entrano in gioco i Variational Autoencoders (VAE), che estendono le capacità del framework dell’autoencoder tradizionale incorporando elementi probabilistici nel processo di codifica. 

Mentre gli autoencoder standard mappano gli input in rappresentazioni latenti fisse, i VAE introducono un approccio probabilistico in cui l’encoder produce una distribuzione sullo spazio latente, tipicamente modellata come una Gaussiana multivariata. Questo consente ai VAE di campionare da tale distribuzione durante il processo di decodifica, portando alla generazione di nuove istanze di dati.

La principale innovazione dei VAE risiede nella capacità di generare nuovi dati di alta qualità apprendendo uno spazio latente strutturato e continuo. Questo è particolarmente importante per il generative modeling, dove l’obiettivo non è solo comprimere i dati ma creare nuovi campioni che somiglino al dataset originale. 

I VAE hanno dimostrato grande efficacia in compiti come la sintesi di immagini, la rimozione del rumore dai dati e il rilevamento di anomalie, rendendoli strumenti rilevanti per potenziare le capacità di modelli e applicazioni di machine learning.

Background teorico dei Variational Autoencoders

In questa sezione introdurremo le basi teoriche e i meccanismi operativi dei VAE, fornendoti una base solida per esplorarne le applicazioni nelle sezioni successive.

Partiamo dagli encoder. L’encoder è una rete neurale responsabile della mappatura dei dati in ingresso in uno spazio latente. A differenza degli autoencoder tradizionali che producono un punto fisso nello spazio latente, l’encoder in un VAE restituisce i parametri di una distribuzione di probabilità—tipicamente media e varianza di una distribuzione Gaussiana. Questo permette al VAE di modellare in modo efficace incertezza e variabilità dei dati.

Un’altra rete neurale chiamata decoder viene utilizzata per ricostruire i dati originali a partire dalla rappresentazione nello spazio latente. Dato un campione dalla distribuzione nello spazio latente, il decoder mira a generare un output che assomigli il più possibile all’input originale. Questo processo permette al VAE di creare nuove istanze di dati campionando dalla distribuzione appresa.

Lo spazio latente è uno spazio continuo a dimensionalità inferiore in cui vengono codificati i dati in ingresso.

The role of encoder, decoder, and latent space visualized.

Visualizzazione del ruolo di encoder, decoder e spazio latente. Fonte dell’immagine.

L’approccio variazionale è una tecnica utilizzata per approssimare distribuzioni di probabilità complesse. Nel contesto dei VAE, consiste nell’approssimare la vera distribuzione a posteriori delle variabili latenti dato il dato osservato, spesso intrattabile. 

Il VAE apprende una distribuzione a posteriori approssimata. L’obiettivo è rendere questa approssimazione il più vicina possibile alla vera distribuzione a posteriori.

L’inferenza bayesiana è un metodo per aggiornare la stima di probabilità di un’ipotesi man mano che sono disponibili nuove evidenze o informazioni. Nei VAE, l’inferenza bayesiana viene utilizzata per stimare la distribuzione delle variabili latenti. 

Integrando la conoscenza a priori (distribuzione prior) con i dati osservati (likelihood), i VAE adattano la rappresentazione nello spazio latente attraverso la distribuzione a posteriori appresa.

Bayesian inference with a prior distribution, posterior distribution, and likelihood function.

Inferenza bayesiana con distribuzione prior, distribuzione a posteriori e funzione di verosimiglianza. Fonte dell’immagine.

Ecco come appare il flusso del processo:

  1. I dati in input x vengono passati all’encoder, che restituisce i parametri della distribuzione dello spazio latente q(z∣x) (media μ e varianza σ2).
  2. Le variabili latenti z vengono campionate dalla distribuzione q(z∣x) usando tecniche come il reparameterization trick.
  3. Il z campionato viene passato al decoder per produrre i dati ricostruiti , che dovrebbero essere simili all’input originale x.

Variational Autoencoder vs Autoencoder tradizionale

Vediamo le differenze e i vantaggi dei VAE rispetto agli autoencoder tradizionali.

Confronto dell’architettura

Come visto in precedenza, gli autoencoder tradizionali consistono in una rete di encoding che mappa i dati in ingresso x in una rappresentazione latente fissa a dimensionalità inferiore z. Questo processo è deterministico, il che significa che ogni input viene codificato in un punto specifico dello spazio latente. 

La rete di decodifica ricostruisce quindi i dati originali a partire da questa rappresentazione latente fissa, con l’obiettivo di minimizzare la differenza tra input e ricostruzione. 

Lo spazio latente degli autoencoder tradizionali è una rappresentazione compressa dei dati in ingresso senza alcuna modellazione probabilistica, il che limita la loro capacità di generare nuovi dati diversificati poiché manca un meccanismo per gestire l’incertezza.

Autoencoder architecture

Architettura dell’autoencoder. Immagine dell’autore

I VAE introducono un elemento probabilistico nel processo di codifica. In particolare, l’encoder in un VAE mappa i dati in ingresso in una distribuzione di probabilità sulle variabili latenti, tipicamente modellata come una distribuzione Gaussiana con media μ e varianza σ2.

Questo approccio codifica ogni input in una distribuzione anziché in un singolo punto, aggiungendo un livello di variabilità e incertezza.

Le differenze architetturali sono rappresentate visivamente dal mapping deterministico negli autoencoder tradizionali rispetto alla codifica probabilistica e al campionamento nei VAE.

Questa differenza strutturale evidenzia come i VAE incorporino una regolarizzazione attraverso un termine noto come divergenza KL, che modella lo spazio latente rendendolo continuo e ben strutturato. 

La regolarizzazione introdotta migliora sensibilmente la qualità e la coerenza dei campioni generati, superando le capacità degli autoencoder tradizionali.Variational autoencoder architecture

Architettura del Variational Autoencoder. Immagine dell’autore

Confronto delle applicazioni

La natura probabilistica dei VAE amplia significativamente la loro gamma di applicazioni rispetto agli autoencoder tradizionali. Questi ultimi, al contrario, sono molto efficaci in applicazioni dove è sufficiente una rappresentazione deterministica dei dati. 

Vediamo alcune applicazioni di ciascun approccio per chiarire meglio il punto. 

Applicazioni dei VAE

  • Generative modeling. Il vantaggio principale dei VAE è la capacità di generare nuovi campioni di dati simili ai dati di training ma non identici a nessuna istanza specifica. Ad esempio, nella sintesi di immagini, i VAE possono creare nuove immagini che richiamano il dataset di addestramento ma con variazioni, rendendoli utili per creare nuove opere, generare volti realistici o produrre nuovi design in moda e architettura.
  • Rilevamento di anomalie. Imparando la distribuzione dei dati normali, i VAE possono identificare deviazioni da tale distribuzione come anomalie. Questo è particolarmente utile in applicazioni come il rilevamento di frodi, la sicurezza di rete e la manutenzione predittiva.
  • Imputazione dei dati e denoising. Uno dei punti di forza dei VAE è la ricostruzione di dati con parti mancanti o rumorose. Campionando dalla distribuzione latente appresa, riescono a prevedere e riempire i valori mancanti o a rimuovere il rumore dai dati corrotti. Ciò li rende preziosi in applicazioni come l’imaging medico, dove una ricostruzione accurata è essenziale, o nel ripristino di dati audio e visivi danneggiati.
  • Apprendimento semi-supervisionato. In scenari semi-supervisionati, i VAE possono migliorare le prestazioni dei classificatori usando lo spazio latente per catturare strutture sottostanti dei dati, potenziando così l’apprendimento con pochi dati etichettati.
  • Manipolazione dello spazio latente. I VAE forniscono uno spazio latente strutturato e continuo che può essere manipolato per varie applicazioni. Ad esempio, nel fotoritocco, specifiche caratteristiche (come illuminazione o espressioni facciali) possono essere regolate navigando nello spazio latente. Questa funzione è particolarmente utile nelle industrie creative per modificare e migliorare immagini e video.

Applicazioni degli autoencoder tradizionali

  • Riduzione della dimensionalità. Gli autoencoder tradizionali sono ampiamente utilizzati per ridurre la dimensionalità dei dati. Codificando i dati in uno spazio latente a dimensionalità inferiore e poi ricostruendoli, possono catturare le caratteristiche più importanti. Questo è utile in scenari come la visualizzazione dei dati, dove dati ad alta dimensionalità devono essere proiettati in due o tre dimensioni, e nelle fasi di pre-processing per altri modelli di machine learning per migliorare le prestazioni e ridurre i costi computazionali.
  • Estrazione di feature. Addestrando l’encoder a catturare gli aspetti essenziali dei dati in ingresso, le rappresentazioni latenti possono essere usate come vettori di feature compatti per compiti a valle come classificazione, clustering e regressione. È particolarmente utile nel riconoscimento di immagini, dove lo spazio latente può evidenziare pattern visivi importanti.
  • Denoising. Gli autoencoder tradizionali sono efficaci nel rimuovere il rumore imparando a ricostruire input puliti da versioni rumorose. Questa applicazione è preziosa nell’elaborazione di immagini, dove la rimozione del rumore può migliorare la qualità visiva, e nell’elaborazione di segnali, dove può aumentare la chiarezza dei segnali audio.
  • Compressione dei dati. I vettori latenti compatti possono essere archiviati o trasmessi in modo più efficiente rispetto ai dati originali ad alta dimensionalità, e il decoder può ricostruire i dati quando necessario. È particolarmente utile nella compressione di immagini e video.
  • Ricostruzione e inpainting di immagini. Gli autoencoder tradizionali possono essere usati per ricostruire parti mancanti delle immagini. Nell’inpainting, l’autoencoder è addestrato a riempire regioni mancanti o corrotte in base al contesto fornito dai pixel circostanti. È utile in campi come la computer vision e il restauro digitale.
  • Apprendimento su sequenze. Gli autoencoder possono essere adattati a dati sequenziali usando layer ricorrenti o convoluzionali. Riescono a catturare dipendenze temporali e pattern, risultando utili per applicazioni come generazione di testo, sintesi vocale e previsione finanziaria.

Tipi di Variational Autoencoders

I VAE si sono evoluti in varie forme specializzate per affrontare diverse sfide e applicazioni nel machine learning. In questa sezione analizzeremo i tipi più importanti, evidenziando casi d’uso, vantaggi e limiti.  

Conditional variational autoencoder

I Conditional Variational Autoencoders (CVAE) sono una forma specializzata di VAE che migliorano il processo generativo condizionandolo su informazioni aggiuntive. 

Un VAE diventa “conditional” incorporando informazioni aggiuntive, indicate con c, sia nell’encoder sia nel decoder. Queste informazioni di condizionamento possono essere qualunque dato rilevante, come etichette di classe, attributi o altri dati contestuali.

CVAE model structure.

Struttura del modello CVAE. Fonte dell’immagine.

I casi d’uso dei CVAE includono: 

  • Generazione controllata di dati. Ad esempio, nella generazione di immagini, un CVAE può creare immagini di oggetti o scene specifiche in base a etichette o descrizioni fornite.
  • Traduzione immagine‑a‑immagine. I CVAE possono trasformare immagini da un dominio a un altro mantenendo specifici attributi. Per esempio, possono essere usati per convertire immagini in bianco e nero in immagini a colori o per trasformare schizzi in foto realistiche.
  • Generazione di testo. I CVAE possono generare testo condizionato su prompt o argomenti specifici, risultando utili per compiti come la generazione di storie, le risposte di chatbot e la creazione di contenuti personalizzati.

Pro e contro: 

  • Controllo più fine sui dati generati 
  • Rappresentazioni apprese migliorate
  • Maggiore rischio di overfitting

Altre varianti

I Disentangled Variational Autoencoders, spesso chiamati Beta‑VAE, sono un altro tipo di VAE specializzati. Mirano ad apprendere rappresentazioni latenti in cui ogni dimensione cattura un fattore di variazione distinto e interpretabile nei dati. Ciò viene ottenuto modificando l’obiettivo originale dei VAE con un iperparametro β che bilancia la perdita di ricostruzione e il termine di divergenza KL.

Pro e contro dei Beta‑VAE: 

  • Migliore interpretabilità dei fattori latenti.
  • Maggiore capacità di manipolare singole caratteristiche dei dati generati.
  • Richiede un’attenta regolazione del parametro β.
  • Può portare a una qualità di ricostruzione peggiore se l’equilibrio tra i termini non è ottimale.

Un’altra variante dei VAE sono gli Adversarial Autoencoders (AAE). Gli AAE combinano il framework dei VAE con i principi di training avversario delle Generative Adversarial Networks (GAN). Una rete discriminatrice aggiuntiva assicura che le rappresentazioni latenti corrispondano a una distribuzione prior, migliorando le capacità generative del modello.

Pro e contro degli AAE:

  • Producono campioni di dati di alta qualità e realistici.
  • Efficaci nel regolarizzare lo spazio latente.
  • Maggiore complessità di training a causa del componente avversario.
  • Possibili problemi di stabilità dell’addestramento, simili alle GAN.

Ora esamineremo altre due estensioni dei Variational Autoencoders.

La prima sono i Variational Recurrent Autoencoders (VRAE). I VRAE estendono il framework dei VAE ai dati sequenziali incorporando reti neurali ricorrenti (RNN) nell’encoder e nel decoder. Questo consente ai VRAE di catturare dipendenze temporali e modellare pattern sequenziali.

Pro e contro dei VRAE:

  • Efficaci nella gestione di dati time‑series e pattern sequenziali.
  • Utili in applicazioni come sintesi vocale, generazione musicale e previsione di serie temporali.
  • Requisiti computazionali più elevati per via della natura ricorrente del modello.

L’ultima variante che esamineremo sono gli Hierarchical Variational Autoencoders (HVAE). Gli HVAE introducono più livelli di variabili latenti disposti in una struttura gerarchica, che consente al modello di catturare dipendenze e astrazioni più complesse nei dati. 

Pro e contro degli HVAE:

  • Capaci di modellare distribuzioni di dati complesse con strutture gerarchiche.
  • Offrono rappresentazioni latenti più espressive.
  • Maggiore complessità del modello e costo computazionale.

Implementare un Variational Autoencoder con PyTorch

In questa sezione implementeremo un semplice Variational Autoencoder (VAE) utilizzando PyTorch.

1. Configurazione dell’ambiente

Per implementare un VAE, dobbiamo configurare l’ambiente Python con le librerie e gli strumenti necessari. Le librerie che useremo sono: 

  • PyTorch
  • torchvision
  • matplotlib
  • numpy

Ecco il codice per installare queste librerie: 

pip install torch torchvision matplotlib numpy

2. Implementazione

Procediamo con l’implementazione di un VAE passo dopo passo. Per prima cosa, importiamo le librerie: 

import torch 
import torch.nn as nn 
import torch.optim as optim 
from torchvision import datasets, transforms 
from torch.utils.data import DataLoader 
import matplotlib.pyplot as plt 
import numpy as np

Successivamente, dobbiamo definire encoder, decoder e VAE. Ecco il codice: 

class Encoder(nn.Module):
    def __init__(self, input_dim, hidden_dim, latent_dim):
        super(Encoder, self).__init__()
        self.fc1 = nn.Linear(input_dim, hidden_dim)
        self.fc_mu = nn.Linear(hidden_dim, latent_dim)
        self.fc_logvar = nn.Linear(hidden_dim, latent_dim)
        
    def forward(self, x):
        h = torch.relu(self.fc1(x))
        mu = self.fc_mu(h)
        logvar = self.fc_logvar(h)
        return mu, logvar
class Decoder(nn.Module):
    def __init__(self, latent_dim, hidden_dim, output_dim):
        super(Decoder, self).__init__()
        self.fc1 = nn.Linear(latent_dim, hidden_dim)
        self.fc2 = nn.Linear(hidden_dim, output_dim)
        
    def forward(self, z):
        h = torch.relu(self.fc1(z))
        x_hat = torch.sigmoid(self.fc2(h))
        return x_hat
class VAE(nn.Module):
    def __init__(self, input_dim, hidden_dim, latent_dim):
        super(VAE, self).__init__()
        self.encoder = Encoder(input_dim, hidden_dim, latent_dim)
        self.decoder = Decoder(latent_dim, hidden_dim, input_dim)
        
    def forward(self, x):
        mu, logvar = self.encoder(x)
        std = torch.exp(0.5 * logvar)
        eps = torch.randn_like(std)
        z = mu + eps * std
        x_hat = self.decoder(z)
        return x_hat, mu, logvar

Dobbiamo anche definire la funzione di loss. La loss dei VAE comprende una perdita di ricostruzione e una perdita di divergenza KL. Ecco come appare in PyTorch: 

def loss_function(x, x_hat, mu, logvar):
    BCE = nn.functional.binary_cross_entropy(x_hat, x, reduction='sum')
    KLD = -0.5 * torch.sum(1 + logvar - mu.pow(2) - logvar.exp())
    return BCE + KLD

Per addestrare il VAE, caricheremo il dataset MNIST, definiremo l’ottimizzatore e alleneremo il modello.

# Hyperparameters
input_dim = 784
hidden_dim = 400
latent_dim = 20
lr = 1e-3
batch_size = 128
epochs = 10
# Data loader
transform = transforms.Compose([transforms.ToTensor(), transforms.Lambda(lambda x: x.view(-1))])
train_dataset = datasets.MNIST(root='./data', train=True, transform=transform, download=True)
train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)
# Model, optimizer
vae = VAE(input_dim, hidden_dim, latent_dim)
optimizer = optim.Adam(vae.parameters(), lr=lr)
# Training loop
vae.train()
for epoch in range(epochs):
    train_loss = 0
    for x, _ in train_loader:
        x = x.view(-1, input_dim)
        optimizer.zero_grad()
        x_hat, mu, logvar = vae(x)
        loss = loss_function(x, x_hat, mu, logvar)
        loss.backward()
        train_loss += loss.item()
        optimizer.step()
    
    print(f"Epoch {epoch + 1}, Loss: {train_loss / len(train_loader.dataset)}")

3. Test e valutazione del modello

Dopo l’addestramento, possiamo valutare il VAE visualizzando gli output ricostruiti e i campioni generati.

Questo è il codice: 

# visualizing reconstructed outputs
vae.eval()
with torch.no_grad():
    x, _ = next(iter(train_loader))
    x = x.view(-1, input_dim)
    x_hat, _, _ = vae(x)
    x = x.view(-1, 28, 28)
    x_hat = x_hat.view(-1, 28, 28)
    
    fig, axs = plt.subplots(2, 10, figsize=(15, 3))
    for i in range(10):
        axs[0, i].imshow(x[i].cpu().numpy(), cmap='gray')
        axs[1, i].imshow(x_hat[i].cpu().numpy(), cmap='gray')
        axs[0, i].axis('off')
        axs[1, i].axis('off')
    plt.show()
#visualizing generated samples
with torch.no_grad():
    z = torch.randn(10, latent_dim)
    sample = vae.decoder(z)
    sample = sample.view(-1, 28, 28)
    
    fig, axs = plt.subplots(1, 10, figsize=(15, 3))
    for i in range(10):
        axs[i].imshow(sample[i].cpu().numpy(), cmap='gray')
        axs[i].axis('off')
    plt.show()

Variational autoencoder in PyTorch-visualization of outputs.

Visualizzazione degli output. La riga superiore è il dato MNIST originale, la riga centrale sono gli output ricostruiti e l’ultima riga i campioni generati—immagine dell’autore.

Variational Autoencoders: sfide e soluzioni

Sebbene i Variational Autoencoders (VAE) siano strumenti potenti per il generative modeling, presentano diverse sfide e limitazioni che possono influenzarne le prestazioni. Vediamone alcune e forniamo strategie di mitigazione.

Mode collapse

È un fenomeno in cui il VAE non riesce a catturare l’intera diversità della distribuzione dei dati. Il risultato sono campioni generati che rappresentano solo poche modalità (regioni distinte) della distribuzione, ignorando le altre. Ciò porta a una scarsa varietà negli output generati. 

Il mode collapse è causato da: 

  • Scarsa esplorazione dello spazio latente: se lo spazio latente non viene esplorato adeguatamente durante l’addestramento, il modello può imparare a generare campioni da poche regioni.
  • Dati di training insufficienti: dati limitati o non rappresentativi possono portare il modello a overfittare a modalità specifiche.

Il mode collapse può essere mitigato usando: 

  • Tecniche di regolarizzazione: l’uso di tecniche come dropout e batch normalization può migliorare la generalizzazione e ridurre il mode collapse.
  • Algoritmi di training migliorati: gli Important‑weighted autoencoders (IWAE) possono fornire stime del gradiente migliori e migliorare l’esplorazione dello spazio latente.

Spazi latenti non informativi

In alcuni casi, lo spazio latente appreso da un VAE può diventare poco informativo, ovvero il modello non usa in modo efficace le variabili latenti per catturare caratteristiche significative dei dati in ingresso. Questo può risultare in campioni generati e ricostruzioni di bassa qualità.

Ciò avviene tipicamente per i seguenti motivi: 

  • Componenti della loss sbilanciati: il trade‑off tra perdita di ricostruzione e divergenza KL può non essere ben bilanciato, portando all’ignorare le variabili latenti.
  • Posterior collapse: l’encoder impara a produrre una distribuzione a posteriori molto vicina alla prior, causando perdita di informazione nello spazio latente.

Gli spazi latenti poco informativi possono essere mitigati usando la strategia di warm‑up, che consiste nell’aumentare gradualmente il peso della divergenza KL durante l’addestramento, oppure modificando direttamente il peso del termine KL nella funzione di loss. 

Instabilità del training

L’addestramento dei VAE può talvolta essere instabile, con la funzione di loss che oscilla o diverge. Questo può rendere difficile raggiungere la convergenza e ottenere un modello ben addestrato.

Ciò accade perché: 

  • Paesaggio di loss complesso: la loss dei VAE combina termini di ricostruzione e regolarizzazione, portando a un panorama di ottimizzazione complesso.
  • Sensibilità agli iperparametri: i VAE sono sensibili alla scelta degli iperparametri, come il learning rate, il peso della divergenza KL e l’architettura delle reti neurali.

I passi per mitigare l’instabilità del training includono: 

  • Attenta messa a punto degli iperparametri: un’esplorazione sistematica degli iperparametri può aiutare a trovare configurazioni stabili per l’addestramento.
  • Optimizer avanzati: l’uso di optimizer a learning rate adattivo come Adam può aiutare a navigare più efficacemente nel complesso paesaggio di loss.

Costi computazionali

L’addestramento dei VAE, specialmente con dataset ampi e complessi, può essere costoso dal punto di vista computazionale. Ciò è dovuto alla necessità di campionamento e backpropagation attraverso layer stocastici.

Le cause degli alti costi computazionali includono:

  • Reti di grandi dimensioni: encoder e decoder possono diventare grandi e profondi, aumentando il carico computazionale.
  • Campionamento nello spazio latente: il campionamento dallo spazio latente e il calcolo dei gradienti attraverso questi campioni aggiungono costo computazionale.

Alcune azioni di mitigazione:

  • Semplificazione del modello: ridurre la complessità di encoder e decoder può aiutare a contenere i costi computazionali.
  • Tecniche di campionamento efficienti: l’uso di metodi di campionamento più efficienti o approssimazioni può ridurre il carico computazionale.

Conclusione

I Variational Autoencoders (VAE) si sono rivelati un progresso rivoluzionario nel mondo del machine learning e della generazione di dati. 

Introducendo elementi probabilistici nel framework dell’autoencoder tradizionale, i VAE consentono di generare nuovi dati di alta qualità e forniscono uno spazio latente più strutturato e continuo. Questa capacità unica ha aperto un’ampia gamma di applicazioni, dal generative modeling e rilevamento di anomalie all’imputazione dei dati e all’apprendimento semi‑supervisionato.

In questo articolo abbiamo trattato i fondamenti dei Variational Autoencoders, le diverse tipologie, come implementarli in PyTorch, nonché le sfide e le soluzioni quando si lavora con i VAE.

Dai un’occhiata a queste risorse per continuare a imparare: 

FAQ

Qual è la differenza tra un autoencoder e un variational autoencoder?

Un autoencoder è una rete neurale che comprime i dati in ingresso in uno spazio latente a dimensionalità inferiore e poi li ricostruisce, mappando ogni input in un punto fisso di questo spazio in modo deterministico. Un Variational Autoencoder (VAE) estende questo approccio codificando gli input in una distribuzione di probabilità, tipicamente Gaussiana, sullo spazio latente. Questo approccio probabilistico consente ai VAE di campionare dalla distribuzione latente, permettendo la generazione di nuove istanze di dati diversificate e una migliore modellazione della variabilità dei dati.

A cosa servono i VAE?

I Variational Autoencoders (VAE) vengono utilizzati per generare nuovi campioni di dati di alta qualità, risultando preziosi in applicazioni come la sintesi di immagini e l’aumento dei dati. Sono impiegati anche nel rilevamento di anomalie, dove identificano deviazioni dalle distribuzioni apprese, e nel denoising e nell’imputazione dei dati ricostruendo parti mancanti o corrotte.

Quali sono i vantaggi dei variational autoencoders?

I VAE generano campioni di dati diversificati e di alta qualità apprendendo uno spazio latente continuo e strutturato. Migliorano inoltre la robustezza nella rappresentazione dei dati e permettono di gestire in modo efficace l’incertezza, utile in compiti come rilevamento di anomalie, denoising e apprendimento semi‑supervisionato.

Perché usare un VAE invece di un autoencoder?

I Variational Autoencoders (VAE) offrono un approccio probabilistico alla codifica, consentendo di generare campioni di dati diversificati e nuovi modellando una distribuzione continua nello spazio latente. A differenza degli autoencoder tradizionali, che forniscono rappresentazioni latenti fisse, i VAE migliorano le capacità di generazione dei dati e gestiscono meglio incertezza e variabilità.

Quali sono gli svantaggi dei variational autoencoders?

I Variational Autoencoders (VAE) possono soffrire di problemi come il mode collapse, in cui non riescono a catturare l’intera diversità della distribuzione dei dati, generando campioni meno vari. Inoltre, possono produrre output sfocati o meno dettagliati rispetto ad altri modelli generativi come le GAN, e il loro training può essere intensivo dal punto di vista computazionale e instabile.


Kurtis Pykes 's photo
Author
Kurtis Pykes
LinkedIn
Argomenti

Approfondisci l’AI con questi corsi!

Corso

Introduzione al Deep Learning con PyTorch

4 h
85.4K
Impara a creare la tua prima rete neurale, a regolare gli iperparametri e ad affrontare problemi di classificazione e regressione in PyTorch.
Vedi dettagliRight Arrow
Inizia il corso
Mostra altroRight Arrow
Correlato

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

Mostra altroMostra altro