Spazi latenti interpretabili utilizzando la quantizzazione vettoriale di riempimento dello spazio |  di Mohammad Hassan Vali |  Aprile 2024

 | Intelligenza-Artificiale

Un nuovo metodo non supervisionato che combina due concetti di quantizzazione vettoriale e curve di riempimento dello spazio per interpretare lo spazio latente delle DNN

Questo post è una breve spiegazione della nostra nuova tecnica di modellazione della distribuzione non supervisionata chiamata quantizzazione vettoriale di riempimento dello spazio (1) pubblicata alla conferenza Interspeech 2023. Per maggiori dettagli, consultare il documento qui sotto questo link.

Immagine da StockSnap.io

I modelli generativi profondi sono architetture ben note basate su reti neurali che apprendono uno spazio latente i cui campioni possono essere mappati su dati sensibili del mondo reale come immagini, video e parlato. Tali spazi latenti agiscono come una scatola nera e spesso sono difficili da interpretare. In questo post presentiamo la nostra nuova tecnica di modellazione della distribuzione non supervisionata che combina due concetti di curve di riempimento dello spazio e quantizzazione vettoriale (VQ) chiamata Quantizzazione vettoriale per riempire lo spazio (SFVQ). SFVQ aiuta a rendere interpretabile lo spazio latente catturandone la struttura morfologica sottostante. È importante notare che SFVQ è uno strumento generico per modellare le distribuzioni e il suo utilizzo non è limitato a nessuna specifica architettura di rete neurale né a nessun tipo di dati (ad esempio immagine, video, parlato e così via). In questo post dimostriamo l'applicazione di SFVQ per interpretare lo spazio latente di un modello di conversione vocale. Per comprendere questo post non è necessario conoscere tecnicamente i segnali vocali, perché spieghiamo tutto in generale (non tecnico). Prima di tutto lasciami spiegare cos’è la tecnica SFVQ e come funziona.

Quantizzazione vettoriale di riempimento dello spazio (SFVQ)

Quantizzazione vettoriale (VQ) è una tecnica di compressione dei dati simile all'algoritmo k-means che può modellare qualsiasi distribuzione dei dati. La figura seguente mostra un VQ applicato su una distribuzione gaussiana. VQ raggruppa questa distribuzione (punti grigi) utilizzando 32 vettori di codici (punti blu) o cluster. Ciascuna cella di voronoi (linee verdi) contiene un vettore di codici in modo tale che questo vettore di codici sia il vettore di codici più vicino (in termini di distanza euclidea) a tutti i punti dati situati in quella cella di voronoi. In altre parole, ciascun vettore del libro di codici è il vettore rappresentativo di tutti i punti dati situati nella cella voronoi corrispondente. Pertanto, applicare VQ su questa distribuzione gaussiana significa mappare ciascun punto dati con il vettore di codici più vicino, ovvero rappresentare ciascun punto dati con il vettore di codici più vicino. Per ulteriori informazioni su VQ e le sue altre varianti puoi consultare questo post.

Quantizzazione vettoriale applicata su una distribuzione gaussiana utilizzando 32 vettori di codici. (immagine dell'autore)

Curva di riempimento dello spazio è una linea continua a tratti generata con una regola ricorsiva e se le iterazioni di ricorsione vengono ripetute all'infinito, la curva si piega fino a riempire completamente uno spazio multidimensionale. La figura seguente illustra la curva di Hilbert (2) che è un tipo ben noto di curve di riempimento dello spazio in cui i punti d'angolo sono definiti utilizzando una specifica formulazione matematica ad ogni iterazione di ricorsione.

Cinque prime iterazioni della curva di Hilbert per riempire una distribuzione quadrata 2D. (immagine dell'autore)

Prendendo intuizione dalle curve di riempimento dello spazio, possiamo quindi pensare alla quantizzazione vettoriale (VQ) come alla mappatura di punti dati di input su una curva di riempimento dello spazio (piuttosto che mappare solo punti dati esclusivamente su vettori di codici come ciò che facciamo nella normale VQ). Pertanto, incorporiamo la quantizzazione vettoriale nelle curve di riempimento dello spazio, in modo tale che il nostro quantizzatore vettoriale di riempimento dello spazio proposto (SFVQ) modella una distribuzione di dati D-dimensionale mediante curve lineari continue a tratti i cui punti d'angolo sono vettori di codici di quantizzazione vettoriale. La figura seguente illustra VQ e SFVQ applicati su una distribuzione gaussiana.

Vettori del libro di codici (punti blu) di un quantizzatore vettoriale e un quantizzatore vettoriale che riempie lo spazio (curva in nero) su una distribuzione gaussiana (punti grigi). Le regioni di Voronoi per VQ sono mostrate in verde. (immagine dell'autore)

Per i dettagli tecnici su come addestrare SFVQ e su come mappare i punti dati sulla curva di SFVQ, vedere la sezione 2 in il nostro giornale (1).

Si noti che quando addestriamo un normale VQ su una distribuzione, i vettori di codici adiacenti che esistono all'interno della matrice di codici appresa possono riferirsi a contenuti totalmente diversi. Ad esempio, il primo elemento del codebook potrebbe riferirsi a un telefono vocale e il secondo potrebbe riferirsi a una parte muta del segnale del discorso. Tuttavia, quando addestriamo SFVQ su una distribuzione, i vettori dei codici appresi saranno posizionati in una forma organizzata in modo tale che gli elementi adiacenti nella matrice dei codici (cioè gli indici dei codici adiacenti) si riferiranno a contenuti simili nella distribuzione. Possiamo utilizzare questa proprietà di SFVQ per interpretare ed esplorare gli spazi latenti nelle reti neurali profonde (DNN). Come esempio tipico, di seguito spiegheremo come abbiamo utilizzato il nostro metodo SFVQ per interpretare lo spazio latente di un modello di conversione vocale (3).

Conversione vocale

La figura seguente mostra un modello di conversione vocale (3) basato sull'architettura dell'autocodificatore variazionale quantizzato vettoriale (VQ-VAE) (4). Secondo questo modello, il codificatore prende il segnale vocale dell'altoparlante A come input e passa l'output nel blocco di quantizzazione vettoriale (VQ) per estrarre le informazioni fonetiche (foni) da questo segnale vocale. Quindi, queste informazioni fonetiche insieme all'identità dell'oratore B entrano nel decodificatore che emette il segnale vocale convertito. Il discorso convertito conterrebbe le informazioni fonetiche (contesto) del parlante A con l'identità del parlante B.

Modello di conversione vocale basato sull'architettura VQ-VAE. (immagine dell'autore)

In questo modello, il modulo VQ agisce come un collo di bottiglia delle informazioni che apprende una rappresentazione discreta del parlato che cattura solo il contenuto fonetico e scarta le informazioni relative al parlante. In altre parole, ci si aspetta che i vettori del codebook VQ raccolgano solo i contenuti del discorso relativi al telefono. Qui, la rappresentazione dell'output VQ è considerata lo spazio latente di questo modello. Il nostro obiettivo è sostituire il modulo VQ con il metodo SFVQ proposto per interpretare lo spazio latente. Per interpretazione intendiamo capire a quale telefono corrisponde ciascun vettore latente (vettore cifrario).

Interpretazione dello spazio latente utilizzando SFVQ

Valutiamo le prestazioni del nostro quantizzatore vettoriale di riempimento dello spazio (SFVQ) sulla sua capacità di trovare la struttura nello spazio latente (che rappresenta l'informazione fonetica) nel modello di conversione vocale sopra. Per le nostre valutazioni, abbiamo utilizzato il set di dati TIMIT (5), poiché contiene dati etichettati a livello telefonico utilizzando l'apparecchio telefonico di (6). Per i nostri esperimenti utilizziamo il seguente raggruppamento fonetico:

  • Esplosive (stop): {p, b, t, d, k, g, jh, ch}
  • Fricative: {f, v, th, dh, s, z, sh, zh, hh, hv}
  • Nasali: {m, em, n, nx, ng, eng, it}
  • vocali: {iy, ih, ix, eh, ae, aa, ao, ah, ax, ax-h, uh, uw, ux}
  • Semivocali (Approssimanti): {l, el, r, è, axr, w, y}
  • Dittonghi: {Ehi, aw, ay, oy, ow}
  • Silenzio: {H#}.

Per analizzare le prestazioni del nostro SFVQ proposto, passiamo i file vocali TIMIT etichettati attraverso il codificatore addestrato e i moduli SFVQ, rispettivamente, ed estraiamo gli indici vettoriali del libro di codici corrispondenti a tutti i telefoni esistenti nel discorso. In altre parole, trasmettiamo un segnale vocale con i telefoni etichettati e quindi calcoliamo l'indice del vettore del codice SFVQ appreso su cui quei telefoni vengono mappati. Come spiegato sopra, ci aspettiamo che il nostro SFVQ mappi contenuti fonetici simili uno accanto all'altro (in termini di indice nella matrice del libro di codici appreso). Per esaminare questa aspettativa, nella figura seguente visualizziamo il spettrogramma della frase “aveva il tuo abito scuro”e i suoi corrispondenti indici vettoriali del libro di codici per il quantizzatore vettoriale ordinario (VQ) e il nostro SFVQ proposto.

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *