Salta al contenuto
Note per Studenti Autoencoder

Autoencoder

In questa pagina 5

Finora la rete riceve un'etichetta yy da prevedere (apprendimento supervisionato). Con i dati senza etichetta ci sono quattro compiti non supervisionati (Clustering e k-meansIl clustering raggruppa osservazioni simili senza etichette, come preprocessing (un modello per ogni cluster) o come obiettivo (segmentazione clienti, organizzazione di documenti). K-means: si sceglie $K$, si inizializzano $K$ centroidi, si alterna assegnazione di ogni punto al centroide più vicino e aggiornamento di ogni centroide alla media dei suoi punti, fino a convergenza; minimizza $\mathrm{MSE}{\text{within}}=\frac1N\sum_k\sum{x_i\in C_k}|x_i-\mu_k|^2$ ma solo fino a un minimo locale, quindi dipende dall'inizializzazione. Il numero di cluster si sceglie col metodo del gomito (la dispersione cala sempre, si cerca dove rallenta) o con la gap statistic $\mathrm{Gap}(K)=E[\log W_K^{ref}]-\log W_K$ (si prende il più piccolo $K$ con $\mathrm{Gap}(K)\ge\mathrm{Gap}(K+1)-s_{K+1}$). Il clustering gerarchico agglomerativo parte da un cluster per punto e fonde i due più vicini (linkage single, complete, average, Ward) costruendo un dendrogramma; quello divisivo parte da un solo cluster. Programma di Telecomunicazioni: clustering.Clustering e k-means →, Anomaly detectionUn'anomalia (outlier) è un'osservazione che si discosta tanto dalle altre da far pensare che sia generata da un meccanismo diverso. Rilevarle serve come pulizia dei dati (solo se sono errori o rumore, non per migliorare artificialmente le metriche), come obiettivo finale (frodi, guasti, cybersicurezza) e per il monitoraggio di un modello in produzione. Metodi semplici: box plot (oltre $1{,}5,\mathrm{IQR}$), carte di controllo univariate ($\mu\pm3\sigma$) e la statistica multivariata di Hotelling $T^2=(x-\bar x)^TS^{-1}(x-\bar x)$ con soglia $\chi^2_{p,1-\alpha}$, valida per dati gaussiani e unimodali. Metodi non supervisionati multivariati danno un anomaly score: l'isolation forest isola ogni punto con split casuali (le anomalie hanno cammini corti) e calcola $s(x,n)=2^{-E(h(x))/c(n)}$, con soglia scelta dalla contaminazione. Senza etichette si valuta con esperti, eventi noti o anomalie sintetiche. Approfondimento: non nel programma di Telecomunicazioni.Anomaly detection →, Analisi delle componenti principali (PCA)Con $p>3$ variabili non si può disegnare il dataset. La PCA (analisi delle componenti principali) lo proietta su pochi assi ortogonali, le componenti principali: dopo aver centrato (e di solito standardizzato) i dati, le direzioni sono gli autovettori della matrice di covarianza $S=\frac1{n-1}X_c^TX_c$ ordinati per autovalore $\lambda_1\ge\lambda_2\ge\dots$; $\lambda_k$ è la varianza lungo la componente $k$ e $\lambda_k/\sum\lambda_j$ la frazione spiegata (scree plot). Trovare la retta che minimizza le distanze dai punti equivale a massimizzare la varianza delle proiezioni (Pitagora). È lineare e conserva la struttura globale, non quella locale; t-SNE e UMAP sono alternative non lineari solo per visualizzare. Approfondimento: non nel programma di Telecomunicazioni.Analisi delle componenti principali (PCA) →): clustering, riduzione della dimensionalità / apprendimento di rappresentazioni latenti, anomaly detection, generazione di dati. Gli autoencoder e le loro varianti coprono gli ultimi tre.

1. Rappresentazioni latenti e ipotesi del manifold

In un dataset ad alta dimensionalità i dati stanno in genere su (o vicino a) un manifold: una superficie liscia e curva di dimensione molto più bassa. Esempio: le immagini 28×2828\times28 di una cifra scritta a mano sono vettori in R784\mathbb R^{784}, ma le immagini sensate sono poche e variano per pochi fattori (spessore, inclinazione, forma). Trovare coordinate sul manifold dà una rappresentazione compatta e significativa.

Il metodo lineare è la PCA. Il problema di trovare una rappresentazione minima e significativa ricorre ovunque in ingegneria: nelle telecomunicazioni è la codifica di un segnale prima della trasmissione e la decodifica dopo.

2. L'autoencoder

Definizione (autoencoder). Un autoencoder è una rete deterministica addestrata con la backpropagation (Addestramento delle reti neurali - backpropagation e ottimizzatoriAddestrare una rete significa minimizzare la loss empirica $J(W)=\frac1n\sum_i\mathcal L(f(x^{(i)};W),y^{(i)})$ con la discesa del gradiente $W\leftarrow W-\eta,\partial J/\partial W$; in pratica a mini-batch (SGD). Il gradiente di tutti i pesi si ottiene con la backpropagation, cioè la regola della catena applicata all'indietro: $\delta^{(L)}=\partial J/\partial a^{(L)}\odot g'(z^{(L)})$, $\delta^{(l)}=(W^{(l+1)\top}\delta^{(l+1)})\odot g'(z^{(l)})$, $\partial J/\partial W^{(l)}=\delta^{(l)}a^{(l-1)\top}$ (con sigmoide e cross-entropy $\delta=\hat y-y$). Per far funzionare reti profonde: attivazioni ReLU, inizializzazione di Xavier o He (varianza $2/(n_{in}+n_{out})$ e $2/n_{in}$), batch normalization, ottimizzatori con momento o adattivi (Momentum, AdaGrad, RMSProp, Adam con $\beta_1=0{,}9$, $\beta_2=0{,}999$, lr $10^{-3}$) e un learning rate che varia nel tempo (a gradini, coseno). Si addestra tenendo d'occhio la loss di training e di validazione.Addestramento delle reti neurali - backpropagation e ottimizzatori →) in cui l'uscita deve coincidere con l'ingresso. Per non imparare l'identità, il segnale passa per un collo di bottiglia (bottleneck, codice) di dimensione limitata.

  • L'encoder ee mappa xx in una rappresentazione a bassa dimensione z=e(x)z=e(x) (il vettore latente);
  • il decoder dd ricostruisce x^=d(z)\hat x=d(z) a partire da zz.

Formula (loss di ricostruzione). loss=∥x−x^∥2=∥x−d(z)∥2=∥x−d(e(x))∥2,\text{loss}=\|x-\hat x\|^2=\|x-d(z)\|^2=\|x-d(e(x))\|^2, mediata sul training set; ∥v∥2=∑kvk2\|v\|^2=\sum_kv_k^2 è l'errore quadratico (Prodotto scalare, norma e angoliIl prodotto scalare aggiunge a uno spazio vettoriale lunghezze e angoli: norma, disuguaglianza di Cauchy-Schwarz, angolo tra vettori in R^n, ortogonalità, proiezione su una retta, aree e volumi con il determinante della matrice dei prodotti scalari.Prodotto scalare, norma e angoli →). Se l'ingresso è binario o in [0,1][0,1] si usa spesso la cross-entropy binaria per pixel.

Non servono etichette: il bersaglio è l'ingresso stesso. Di solito l'architettura è simmetrica (il decoder è l'immagine speculare dell'encoder) e il numero di unità del codice è minore di quello dell'ingresso.

Esempio (conteggio dei parametri). Autoencoder denso 784→128→32→128→784784\to128\to32\to128\to784 con ReLU (e sigmoide in uscita): 784⋅128+128=100 480784\cdot128+128=100\,480; 128⋅32+32=4 128128\cdot32+32=4\,128; 32⋅128+128=4 22432\cdot128+128=4\,224; 128⋅784+784=101 136128\cdot784+784=101\,136; in tutto 209 968209\,968 parametri. Il codice ha 3232 numeri per rappresentare 784784 pixel: compressione di 784/32=24,5784/32=24{,}5 volte.

python
from tensorflow.keras import Sequential, Input
from tensorflow.keras.layers import Dense
ae = Sequential([Input((784,)),
                 Dense(128, activation="relu"), Dense(32, activation="relu"),   # encoder
                 Dense(128, activation="relu"), Dense(784, activation="sigmoid")])  # decoder
ae.compile(optimizer="adam", loss="mse")
ae.fit(x_train, x_train, epochs=20, batch_size=256, validation_split=0.1)  # bersaglio = ingresso

Autoencoder e PCA

Se encoder e decoder sono lineari (attivazione identità) e la loss è l'errore quadratico, l'autoencoder impara lo stesso sottospazio della PCA: lo spazio generato dalle prime kk componenti principali, dove kk è la dimensione del codice (Analisi delle componenti principali (PCA)Con $p>3$ variabili non si può disegnare il dataset. La PCA (analisi delle componenti principali) lo proietta su pochi assi ortogonali, le componenti principali: dopo aver centrato (e di solito standardizzato) i dati, le direzioni sono gli autovettori della matrice di covarianza $S=\frac1{n-1}X_c^TX_c$ ordinati per autovalore $\lambda_1\ge\lambda_2\ge\dots$; $\lambda_k$ è la varianza lungo la componente $k$ e $\lambda_k/\sum\lambda_j$ la frazione spiegata (scree plot). Trovare la retta che minimizza le distanze dai punti equivale a massimizzare la varianza delle proiezioni (Pitagora). È lineare e conserva la struttura globale, non quella locale; t-SNE e UMAP sono alternative non lineari solo per visualizzare. Approfondimento: non nel programma di Telecomunicazioni.Analisi delle componenti principali (PCA) →; è il problema di miglior approssimazione di rango kk). Le attivazioni non lineari (ReLU, tanh) permettono di seguire un manifold curvo e di comprimere meglio.

Varianti

3. Anomaly detection con un autoencoder

Si addestra l'autoencoder solo su dati normali. Impara a ricostruire bene ciò che somiglia al normale; su un'anomalia, mai vista, la ricostruzione è cattiva e l'errore alto. Un'osservazione è un outlier (nella definizione di Hawkins) se devia tanto dalle altre da far sospettare che sia stata prodotta da un meccanismo diverso. L'errore di ricostruzione è lo anomaly score:

Formula (regola di decisione). Con MSE(x,x′)=1p∑k(xk−xk′)2\text{MSE}(x,x')=\frac1p\sum_k(x_k-x'_k)^2 e una soglia θ\theta: normale se MSE≤θ\text{MSE}\le\theta, anomalo se MSE>θ\text{MSE}>\theta.

La soglia si sceglie sui dati normali: per esempio θ=media+3⋅deviazione standard\theta=\text{media}+3\cdot\text{deviazione standard} degli errori di training, oppure un percentile alto (il 99%99\%). Così circa l'1%1\% dei dati normali è segnalato falsamente.

Esempio. Errori di ricostruzione sul training: media 0,0150{,}015, deviazione standard 0,0040{,}004, quindi θ=0,015+3⋅0,004=0,027\theta=0{,}015+3\cdot0{,}004=0{,}027. Cinque nuovi campioni hanno errori 0,010; 0,022; 0,015; 0,200; 0,0310{,}010;\ 0{,}022;\ 0{,}015;\ 0{,}200;\ 0{,}031: sono anomali il quarto (0,200>0,0270{,}200>0{,}027) e il quinto (0,031>0,0270{,}031>0{,}027).

Grafico interattivo: Densità schematiche dell'errore di ricostruzione: i dati normali stanno sotto la soglia θ = 0,027, le anomalie sopra

Tra gli altri approcci di anomaly detection: metodi basati sulla densità (LOF, DBSCAN), sulla distanza (ORCA), sul clustering (CBLOF), Isolation Forest (Anomaly detectionUn'anomalia (outlier) è un'osservazione che si discosta tanto dalle altre da far pensare che sia generata da un meccanismo diverso. Rilevarle serve come pulizia dei dati (solo se sono errori o rumore, non per migliorare artificialmente le metriche), come obiettivo finale (frodi, guasti, cybersicurezza) e per il monitoraggio di un modello in produzione. Metodi semplici: box plot (oltre $1{,}5,\mathrm{IQR}$), carte di controllo univariate ($\mu\pm3\sigma$) e la statistica multivariata di Hotelling $T^2=(x-\bar x)^TS^{-1}(x-\bar x)$ con soglia $\chi^2_{p,1-\alpha}$, valida per dati gaussiani e unimodali. Metodi non supervisionati multivariati danno un anomaly score: l'isolation forest isola ogni punto con split casuali (le anomalie hanno cammini corti) e calcola $s(x,n)=2^{-E(h(x))/c(n)}$, con soglia scelta dalla contaminazione. Senza etichette si valuta con esperti, eventi noti o anomalie sintetiche. Approfondimento: non nel programma di Telecomunicazioni.Anomaly detection →); gli autoencoder sono il rappresentante delle reti neurali.

4. Generare dati: il Variational Autoencoder (VAE)

In un autoencoder ordinario lo spazio latente è irregolare: due codici vicini possono dare ricostruzioni molto diverse e senza senso, e punti di zz lontani da quelli visti producono immagini spazzatura. Quindi non si può estrarre un zz a caso per generare nuovi dati. I modelli generativi vogliono invece imparare a produrre nuovi campioni da una distribuzione complessa di cui i dati sono un campione. Il VAE rende lo spazio latente regolare in due mosse:

  1. L'encoder non restituisce un punto ma una distribuzione sullo spazio latente: una gaussiana multivariata a covarianza diagonale (Distribuzione gaussiana (normale)N(μ, σ²) ha densità e^(−(x−μ)²/(2σ²)) / √(2πσ²), a campana centrata in μ con larghezza σ; media μ, varianza σ²; si standardizza con Z = (X − μ)/σ ~ N(0, 1) e si calcola P(X ≤ x) = Φ((x − μ)/σ), con Φ(−z) = 1 − Φ(z); aX + b è ancora gaussiana, N(aμ + b, a²σ²).Distribuzione gaussiana (normale) →, Vettori gaussianiX = (X₁, ..., Xₙ) è un vettore gaussiano N(m, Σ) se ogni combinazione lineare a·X è gaussiana (equivalentemente X = m + AZ con Z gaussiane standard indipendenti); se Σ è invertibile ha densità exp(−½(x−m)ᵀΣ⁻¹(x−m)) / √((2π)ⁿ det Σ). Proprietà chiave: AX + b ~ N(Am + b, AΣAᵀ), le marginali sono gaussiane e componenti non correlate sono indipendenti.Vettori gaussiani →), cioè due vettori, la media μx\mu_x e la deviazione standard σx\sigma_x (la rete ha due «teste» di uscita).
  2. La loss ha un termine di regolarizzazione che spinge queste distribuzioni verso la normale standard N(0,I)\mathcal N(0,I), così lo spazio latente è «ben organizzato» attorno all'origine e si può campionare da N(0,I)\mathcal N(0,I).

Formula (loss del VAE). loss=∥x−d(z)∥2+KL[N(μx,σx) ∥ N(0,I)],z∼N(μx,σx).\text{loss}=\|x-d(z)\|^2+KL\big[\mathcal N(\mu_x,\sigma_x)\,\big\|\,\mathcal N(0,I)\big],\qquad z\sim\mathcal N(\mu_x,\sigma_x). Il primo termine è l'errore di ricostruzione; il secondo è la divergenza di Kullback-Leibler tra la distribuzione stimata e quella standard. Spesso il primo termine è moltiplicato per una costante CC che ne regola il peso.

Definizione (divergenza KL). Per due densità PP e QQ, DKL(P ∥ Q)=∫P(x)log⁡P(x)Q(x) dx=EP[log⁡PQ] ≥0,D_{KL}(P\,\|\,Q)=\int P(x)\log\frac{P(x)}{Q(x)}\,dx=E_P\Big[\log\frac P Q\Big]\ \ge0, e vale 00 se e solo se P=QP=Q (disuguaglianza di Jensen, Disuguaglianze di Markov, Chebyshev e JensenMarkov: per X ≥ 0, P(X ≥ a) ≤ E[X]/a; Chebyshev: P(|X − μ| ≥ ε) ≤ Var(X)/ε²; Jensen: per φ convessa, φ(E[X]) ≤ E[φ(X)]. Stimano probabilità e medie conoscendo solo media e varianza.Disuguaglianze di Markov, Chebyshev e Jensen →). Misura quanto PP è diversa da QQ (non è simmetrica).

Forma chiusa per due gaussiane. Con P=N(μ,σ2)P=\mathcal N(\mu,\sigma^2) e Q=N(0,1)Q=\mathcal N(0,1) in una dimensione si procede così. I logaritmi delle densità (Esponenziale e logaritmoLa funzione esponenziale a^x (base positiva diversa da 1) e la sua inversa, il logaritmo in base a, con grafici e proprietà.Esponenziale e logaritmo →) sono log⁡P=−12ln⁡(2πσ2)−(x−μ)22σ2\log P=-\frac12\ln(2\pi\sigma^2)-\frac{(x-\mu)^2}{2\sigma^2} e log⁡Q=−12ln⁡(2π)−x22\log Q=-\frac12\ln(2\pi)-\frac{x^2}2, quindi log⁡PQ=−ln⁡σ−(x−μ)22σ2+x22\log\frac PQ=-\ln\sigma-\frac{(x-\mu)^2}{2\sigma^2}+\frac{x^2}2. Si prende il valore atteso rispetto a PP (Valore attesoIl valore atteso E[X] = Σ x p_X(x) è la media dei valori di X pesata con le loro probabilità (esiste se la serie converge assolutamente); per una funzione g vale E[g(X)] = Σ g(x) p_X(x) senza trovare la legge di g(X), ed E è lineare: E[aX + bY + c] = aE[X] + bE[Y] + c.Valore atteso →, Varianza e momentiI momenti E[X^k] e i momenti centrati E[(X − μ)^k] descrivono la forma di una legge; la varianza Var(X) = E[(X − μ)²] = E[X²] − E[X]² misura quanto X si disperde attorno alla media, vale Var(aX + b) = a² Var(X) e Var(X) = 0 solo se X è costante.Varianza e momenti →) usando E[(x−μ)2]=σ2E[(x-\mu)^2]=\sigma^2 e E[x2]=σ2+μ2E[x^2]=\sigma^2+\mu^2: KL=−ln⁡σ−σ22σ2+σ2+μ22=12(μ2+σ2−1−ln⁡σ2).KL=-\ln\sigma-\frac{\sigma^2}{2\sigma^2}+\frac{\sigma^2+\mu^2}2=\frac12\big(\mu^2+\sigma^2-1-\ln\sigma^2\big). Con dd variabili latenti indipendenti si sommano le dd componenti: KL=12∑k=1d(μk2+σk2−1−ln⁡σk2)KL=\frac12\sum_{k=1}^{d}(\mu_k^2+\sigma_k^2-1-\ln\sigma_k^2). Il termine vale 00 solo per μk=0\mu_k=0, σk=1\sigma_k=1: è minimo quando la distribuzione coincide con la normale standard, cresce con μ2\mu^2 (media lontana dall'origine) e quando σ\sigma si allontana da 11 (troppo piccola: −ln⁡σ2-\ln\sigma^2 grande, il codice diventa un punto come in un autoencoder normale).

Grafico interattivo: KL(N(μ,σ²) ‖ N(0,1)) al variare di σ con μ = 0: minimo 0 in σ = 1; con μ ≠ 0 si aggiunge μ²/2

Esempio. μ=(1,0)\mu=(1,0), σ=(1;0,5)\sigma=(1;0{,}5): componente 11: 12(1+1−1−0)=0,5\frac12(1+1-1-0)=0{,}5; componente 22: 12(0+0,25−1−ln⁡0,25)=12(−0,75+1,386)=0,318\frac12(0+0{,}25-1-\ln0{,}25)=\frac12(-0{,}75+1{,}386)=0{,}318. KL=0,818KL=0{,}818.

Il trucco di riparametrizzazione

Per l'addestramento serve la backpropagation, ma estrarre un campione casuale z∼N(μ,σ2)z\sim\mathcal N(\mu,\sigma^2) non è un'operazione derivabile rispetto a μ\mu e σ\sigma: il gradiente non può attraversare il campionamento. Si sposta la casualità fuori dalla rete: si estrae un rumore ζ\zeta indipendente dai parametri e si costruisce zz con una funzione derivabile.

Formula (reparametrization trick). z=μx+σx⊙ζ,ζ∼N(0,I)z=\mu_x+\sigma_x\odot\zeta,\qquad\zeta\sim\mathcal N(0,I) (nelle slide z=h(x)ζ+g(x)z=h(x)\zeta+g(x) con g(x)=μxg(x)=\mu_x e h(x)=σxh(x)=\sigma_x prodotti dall'encoder).

zz ha la distribuzione giusta, perché una gaussiana standard scalata per σ\sigma e traslata per μ\mu è N(μ,σ2)\mathcal N(\mu,\sigma^2) (Distribuzione gaussiana (normale)N(μ, σ²) ha densità e^(−(x−μ)²/(2σ²)) / √(2πσ²), a campana centrata in μ con larghezza σ; media μ, varianza σ²; si standardizza con Z = (X − μ)/σ ~ N(0, 1) e si calcola P(X ≤ x) = Φ((x − μ)/σ), con Φ(−z) = 1 − Φ(z); aX + b è ancora gaussiana, N(aμ + b, a²σ²).Distribuzione gaussiana (normale) →). Ora zz dipende da μx,σx\mu_x,\sigma_x con derivate ∂z/∂μ=1\partial z/\partial\mu=1 e ∂z/∂σ=ζ\partial z/\partial\sigma=\zeta (con ζ\zeta trattato come costante): la regola della catena funziona e si addestra l'encoder.

Esempio. μ=0,5\mu=0{,}5, σ=2\sigma=2, ζ=−0,3\zeta=-0{,}3 estratto: z=0,5+2⋅(−0,3)=−0,1z=0{,}5+2\cdot(-0{,}3)=-0{,}1.

Dopo l'addestramento si genera: si estrae z∼N(0,I)z\sim\mathcal N(0,I) e si passa dal decoder. Per la regolarità dello spazio latente, spostandosi con continuità tra due codici si ottengono immagini che cambiano con continuità (interpolazione).

β\beta-VAE e rappresentazioni disaccoppiate

Un VAE si può spingere a imparare rappresentazioni disaccoppiate (disentangled): ogni unità latente sensibile a un solo fattore generativo (per esempio colore dei capelli) e invariante agli altri (colore della pelle). Nel β\beta-VAE il termine KL ha peso β>1\beta>1. Nella notazione probabilistica, da massimizzare:

L(θ,ϕ,x)=Eqϕ(z∣x)[log⁡pθ(x∣z)]−β DKL(qϕ(z∣x) ∥ p(z)),\mathcal L(\theta,\phi,x)=E_{q_\phi(z|x)}\big[\log p_\theta(x|z)\big]-\beta\,D_{KL}\big(q_\phi(z|x)\,\|\,p(z)\big),

con qϕq_\phi l'encoder (probabilistico) e pθp_\theta il decoder. Il primo termine è la log-verosimiglianza della ricostruzione: se il decoder è gaussiano con varianza fissa, log⁡pθ(x∣z)=−∥x−x^∥22s2+cost\log p_\theta(x|z)=-\frac{\|x-\hat x\|^2}{2s^2}+\text{cost}, e si ricade nell'errore quadratico (la costante CC della loss sopra). Cambiando segno si ottiene la loss da minimizzare. Con β\beta grande il vincolo di indipendenza pesa di più e la ricostruzione peggiora: si scambia accuratezza con disaccoppiamento. Percorrere un solo asse dello spazio latente cambia un solo aspetto del dato generato (forma, dimensione, rotazione).

Cenno ai GAN

Le Generative Adversarial Networks hanno due reti: un generatore che trasforma rumore casuale in dati finti e un discriminatore addestrato a distinguere dati veri e finti. Le due si addestrano in competizione: il generatore migliora finché il discriminatore non distingue più.

Esercizi: Esercizio - Autoencoder, anomaly detection e KL del VAE.

5. Errori tipici

  • Usare un codice grande quanto l'ingresso: la rete impara l'identità e non comprime.
  • Addestrare l'autoencoder per anomaly detection anche su dati anomali: l'anomalia viene ricostruita bene e non si distingue.
  • Campionare zz senza riparametrizzazione (il gradiente si ferma).
  • Scambiare KL(P∥Q)(P\|Q) con KL(Q∥P)(Q\|P) (non è simmetrica) o dimenticare che vale 00 solo per P=QP=Q.
  • Pensare che un autoencoder ordinario possa generare dati affidabili: serve lo spazio latente regolare del VAE.

Versione ripasso

Esercizi su questo argomento

Lezioni in cui compare

Teoria collegata