0Pricing
Learn AI with Python · Lezione

Autoencoder variazionali (VAE)

Loss ELBO, reparameterization trick, esplorazione dello spazio latente, generazione di immagini con VAE

Autoencoder variazionali (VAE) è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.

Dall'autoencoder al VAE

Un autoencoder semplice apprende punti sparsi, quindi il campionamento di nuovi punti produce risultati senza senso. Un Variational Autoencoder (VAE) apprende uno spazio latente regolare e continuo da cui è possibile campionare, trasformandolo in un vero modello generativo.

Codifica in una distribuzione

Invece di un singolo punto, il codificatore di un VAE restituisce una distribuzione per ogni input: una media mu e una log-varianza log_var. Ogni input viene mappato in una piccola regione incerta dello spazio latente, non in un singolo punto.

class Encoder(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc = nn.Linear(784, 256)
        self.fc_mu = nn.Linear(256, 64)
        self.fc_logvar = nn.Linear(256, 64)

Perché mu e log_var?

Prediciamo log_var invece della varianza direttamente perché può assumere un qualsiasi numero reale (senza vincolo di positività) ed è numericamente stabile. L'esponenziazione permette di recuperare la varianza quando serve.

    def forward(self, x):
        h = torch.relu(self.fc(x))
        return self.fc_mu(h), self.fc_logvar(h)

Campionamento di z nello spazio latente

Per decodificare, dobbiamo campionare z dalla distribuzione stimata. Questo campionamento casuale, eseguito in modo ingenuo, non è differenziabile, quindi non possiamo propagare all'indietro il gradiente attraverso di esso. Il trucco della riparametrizzazione risolve il problema.

Il trucco della riparametrizzazione

Riscriviamo il campione come z = mu + eps * exp(0.5 * log_var), dove eps è rumore casuale. Ora la casualità risiede in eps (per il quale non serve il gradiente) e i gradienti fluiscono attraverso mu e log_var.

def reparameterize(mu, log_var):
    std = torch.exp(0.5 * log_var)
    eps = torch.randn_like(std)
    return mu + eps * std

Il decodificatore

Il decodificatore prende lo z campionato e ricostruisce l'immagine, proprio come il decodificatore di un autoencoder normale: espande le 64 dimensioni nuovamente in 784 pixel con un output Sigmoid.

decoder = nn.Sequential(
    nn.Linear(64, 256),
    nn.ReLU(),
    nn.Linear(256, 784),
    nn.Sigmoid()
)

Termine di perdita di ricostruzione

La prima metà della perdita del VAE riguarda la ricostruzione: quanto bene l'immagine decodificata corrisponde all'input. Sui pixel si usa l'entropia incrociata binaria (o l'MSE).

recon_loss = nn.functional.binary_cross_entropy(
    recon, x, reduction="sum"
)

Termine della divergenza KL

La seconda metà è la divergenza KL, che avvicina ogni distribuzione codificata a una normale standard. In questo modo regolarizza lo spazio latente, rendendolo regolare e continuo e consentendo la generazione.

kl = -0.5 * torch.sum(1 + log_var - mu.pow(2) - log_var.exp())

Obiettivo ELBO

I VAE massimizzano l'ELBO (limite inferiore dell'evidenza), equivalente a minimizzare reconstruction + KL. La ricostruzione rende fedeli gli output; la KL mantiene lo spazio ben strutturato. Bilanciare i due termini è l'intero obiettivo.

loss = recon_loss + kl
loss.backward()

Generazione di nuove immagini

Poiché lo spazio latente corrisponde a una normale standard, può generare immagini completamente nuove campionando z da N(0,1) e decodificandolo, senza bisogno di alcuna immagine di input.

with torch.no_grad():
    z = torch.randn(16, 64)
    new_images = decoder(z)  # 16 generated samples

Perché i VAE sono importanti

I VAE offrono uno spazio latente regolare e definito su basi teoriche, in cui è possibile interpolare e campionare. Sono alla base di molte tecniche generative e insegnano l'idea fondamentale di apprendere distribuzioni, non solo punti.

Verifica rapida

Verifichi la propria comprensione dei VAE.

Riepilogo: autoencoder variazionali

Ha imparato il VAE: un codificatore restituisce mu e log_var, il trucco della riparametrizzazione z = mu + eps * exp(0.5 * log_var) mantiene il campionamento differenziabile e la perdita è ELBO = ricostruzione + KL. Campionando z da N(0,1) e decodificandolo si generano nuove immagini.

Domande Frequenti

La lezione «Autoencoder variazionali (VAE)» è gratuita?

Sì — il testo completo di «Autoencoder variazionali (VAE)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.

Cosa imparerò in «Autoencoder variazionali (VAE)»?

Loss ELBO, reparameterization trick, esplorazione dello spazio latente, generazione di immagini con VAE Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Learn AI with Python?

Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Autoencoder variazionali (VAE)»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?

Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Autoencoder per l'apprendimento delle rappresentazioni
  2. Autoencoder variazionali (VAE)
  3. GAN: generatore e discriminatore
  4. GAN condizionali e style transfer
← Torna a Learn AI with Python