Quando dovrei usare un autoencoder variazionale anziché un autoencoder?


19

Comprendo la struttura di base del codificatore automatico variazionale e del codificatore automatico (deterministico) e la matematica che sta dietro, ma quando e perché preferirei un tipo di codificatore automatico all'altro? Tutto quello a cui riesco a pensare è che la precedente distribuzione di variabili latenti di autoencoder variazionale ci consente di campionare le variabili latenti e quindi costruire la nuova immagine. Qual è il vantaggio della stocasticità dell'autoencoder variazionale rispetto all'autoencoder deterministico?

Risposte:


13

VAE è un framework che è stato proposto come un modo scalabile per eseguire EM variazionale (o inferenza variazionale in generale) su set di dati di grandi dimensioni. Sebbene abbia una struttura simile ad AE, ha uno scopo molto più ampio.

Detto questo, ovviamente, si possono usare VAE per apprendere rappresentazioni latenti. È noto che i VAE danno rappresentazioni con fattori districati [1] Ciò accade a causa di priori isotropi gaussiani sulle variabili latenti. Modellarli come gaussiani consente a ciascuna dimensione della rappresentazione di spingersi il più lontano possibile dagli altri fattori. Inoltre, [1] ha aggiunto un coefficiente di regolarizzazione che controlla l'influenza del precedente.

Mentre i gaussiani isotropi sono sufficienti per la maggior parte dei casi, per casi specifici, si potrebbe voler modellare i priori in modo diverso. Ad esempio, nel caso delle sequenze, si potrebbe voler definire i priori come modelli sequenziali [2].

Tornando alla domanda, come si può vedere, in precedenza si ottiene un controllo significativo su come vogliamo modellare la nostra distribuzione latente. Questo tipo di controllo non esiste nel solito framework AE. Questo è in realtà il potere dei modelli bayesiani stessi, i VAE lo stanno semplicemente rendendo più pratico e fattibile per set di dati su larga scala. Quindi, per concludere, se vuoi un controllo preciso sulle tue rappresentazioni latenti e su cosa vorresti che rappresentassero, allora scegli VAE. A volte, la modellazione precisa può catturare rappresentazioni migliori come in [2]. Tuttavia, se AE è sufficiente per il lavoro che fai, quindi vai con AE, è abbastanza semplice e semplice. Dopotutto, con gli AE stiamo semplicemente facendo un PCA non lineare.

[1] Apprendimento precoce del concetto visivo con apprendimento profondo senza supervisione, 2016
Irina Higgins, Loic Matthey, Xavier Glorot, Arka Pal, Benigno Uria, Charles Blundell, Shakir Mohamed, Alexander Lerchner
https://arxiv.org/abs/1606.05579

[2] Un modello variabile latente ricorrente per dati sequenziali, 2015
Junyoung Chung, Kyle Kastner, Laurent Dinh, Kratarth Goel, Aaron Courville, Yoshua Bengio
https://arxiv.org/abs/1506.02216


6

TenaliRaman ha avuto alcuni punti positivi, ma ha anche perso molti concetti fondamentali. Innanzitutto, va notato che il motivo principale per utilizzare un framework simile ad AE è lo spazio latente che ci consente di comprimere le informazioni e, auspicabilmente, ricavarne da fattori indipendenti che rappresentano caratteristiche di alto livello dei dati. Un punto importante è che, mentre gli eventi avversi possono essere interpretati come l'estensione non lineare di PCA poiché le unità nascoste "X" occuperebbero lo stesso spazio del primo numero "X" dei componenti principali, un AE non produce necessariamente componenti ortogonali nel latente spazio (che equivarrebbe a una forma di disordine). Inoltre da un VAE, è possibile ottenere una parvenza della probabilità di dati (sebbene approssimativa) e anche un campione da esso (che può essere utile per varie attività diverse). Tuttavia,

La distribuzione precedente imposta alle unità latenti in un VAE contribuisce solo all'adattamento del modello a causa del termine di divergenza KL, che il riferimento [1] ha semplicemente aggiunto un moltiplicatore di iperparametro su quel termine e ne ha ricavato un documento completo (la maggior parte è abbastanza ovvio). Essenzialmente un precedente "non informativo" è uno che individualmente ha una divergenza di KL vicino allo zero e non contribuisce molto alla perdita, il che significa che una particolare unità non viene utilizzata per la ricostruzione nel decodificatore. Il disaccordo entra in gioco su un VAE naturalmente perché, nel caso più semplice di dati multimodali, il costo di divergenza KL è inferiore avendo un Gaussiano latente unico per ogni modalità rispetto a se il modello tenta di catturare più modalità con un singolo Gaussiano (che divergerebbe ulteriormente dal precedente poiché sarebbe penalizzato pesantemente dal costo di divergenza KL) - portando così districare nelle unità latenti. Pertanto, il VAE si presta naturalmente alla maggior parte delle fonti di dati a causa delle implicazioni statistiche ad esso associate.

Esistono quadri imponenti per la scarsità anche per AE, ma sfortunatamente non sono a conoscenza di alcun documento là fuori che confronta VAE vs AE rigorosamente sulla base della rappresentazione dello spazio latente e del disangolazione. Mi piacerebbe davvero vedere qualcosa in quell'arena, dato che gli eventi avversi sono molto più facili da addestrare e se riuscissero a ottenere un buon disordine rispetto ai VAE nello spazio latente, sarebbero ovviamente preferiti. In una nota correlata, ho anche visto qualche promessa da parte di metodi ICA (e ICA non lineari), ma quelli che ho visto hanno costretto lo spazio latente ad avere la stessa dimensione dei dati, che non è così utile come gli eventi avversi per l'estrazione di funzionalità di alto livello.


3

Il codificatore automatico standard può essere illustrato usando il seguente grafico: inserisci qui la descrizione dell'immagine

Come indicato nelle risposte precedenti, può essere visto come un'estensione non lineare di PCA.

Ma rispetto al codificatore automatico variazionale il codificatore automatico vaniglia presenta il seguente inconveniente:

Il problema fondamentale con i codificatori automatici, per generazione, è che lo spazio latente in cui convertono i loro input e dove si trovano i loro vettori codificati, potrebbe non essere continuo o consentire una facile interpolazione.

Cioè, la parte di codifica nel grafico sopra non può gestire input che l'encoder non ha mai visto prima perché diverse classi sono raggruppate senza mezzi termini e quegli input invisibili sono codificati in qualcosa che si trova da qualche parte nel vuoto:

inserisci qui la descrizione dell'immagine

Per affrontare questo problema, l'autocodificatore variazionale è stato creato aggiungendo uno strato contenente una media e una deviazione standard per ogni variabile nascosta nello strato intermedio:

inserisci qui la descrizione dell'immagine

Quindi, anche per lo stesso input, l'output decodificato può variare e gli input codificati e cluster diventano uniformi:

inserisci qui la descrizione dell'immagine

Quindi per denigrare o classificare (filtrare i dati diversi) dati, sarebbe sufficiente un autoencoder standard, mentre per la generazione utilizzeremmo un autoencoder variazionale.

Riferimento:
comprensione intuitiva degli autocodificatori variazionali


1

La scelta della distribuzione del codice in VAE consente un apprendimento della rappresentazione senza supervisione migliore in cui i campioni della stessa classe finiscono vicini l'uno all'altro nello spazio del codice. Anche in questo modo, trovare una semantica per le regioni nello spazio del codice diventa più facile. Ad esempio, sapresti da ogni area quale classe può essere generata.

Se hai bisogno di analisi più approfondite, dai un'occhiata alla tesi di Durk Kingma . È un'ottima fonte di inferenza variazionale.


Quando parli di "scegliere la distribuzione", di quale distribuzione stai parlando? p (z), p (z | x), p (x | z) o tutti loro? Ho visto solo usando la distribuzione normale o la distribuzione di Bernoulli, conosci qualche lavoro che confronta le prestazioni usando una distribuzione diversa? Per quanto riguarda il tuo secondo punto, non riesco a capire perché l'autoencoder variazionale farà un lavoro migliore di un normale autoencoder, potresti elaborare? Grazie.
DiveIntoML
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.