Product Quantization for Nearest Neighbor search
Introduzione La ricerca Nearest Neighbor (NN) è fondamentale per l’analisi e l’elaborazione dei dati su larga scala, in particolare: per l’analisi di contenuti multimediali (alta dimensionalità) recupero di immagini in base al contenuto (data mining multimediale), dove i dati sono rappresentati da vettori multidimensionali Questo rende la ricerca NN su larga scala di dati ad alta dimensionalità molto onerosa dal momento che gli archivi sono limitati, così come lo sono le risorse computazionali Invece di realizzare l’esatto algoritmo NN, la ricerca è orientata ad approssimare l’algoritmo NN con il cosiddetto algoritmo di ricerca Approximate Nearest Neighbor (ANN)
Approximate Nearest Neighbors è Necessario 1 milione di immagini, 1000 descrittori per immagine 1 miliardo di distanze per descrittore locale distanze in totale Più di 1 ora per eseguire la query Per migliorare la scalabilità si utilizza la ricerca Approximate Nearest Neighbor (ANN) Tre criteri di performance per ANN qualità della ricerca velocità uso della memoria
Ricerca Approximate Nearest Neighbors (ANN) Tre criteri di performance per ANN qualità della ricerca velocità uso della memoria La maggior parte degli algoritmi ottimizzano principalmente i due primi criteri: LSH, FLANN Locality Sensitive Hashing: buone proprietà teoriche consumo di memoria: 10 tabelle hash significa almeno 40 byte per vettore nessun adattamento dei dati FLANN[Muja and Lowe, 2009] eccellente compromesso accuratezza/velocità ha bisogno di molta memoria
Ricerca con quantization [Jégou et al., 2011] Ogni vettore di database è quantizzato con dove è il product quantizer è il vettore di query Se stimiamo la distanza da Allora possiamo dire che cioè, l’errore della distanza al quadrato è statisticamente limitato dall’errore di quantizzazione Per migliorare la scalabilità si utilizza la ricerca Approximate Nearest Neighbor (ANN) Assumiamo di quantizzare Tre criteri di performance per ANN qualità della ricerca velocità uso della memoria
Product Quantizer Il vettore è diviso in m subvector: Subvector sono quantizzati separatamente dai quantizzatori dove ciascun è appreso dall’algoritmo k-means con un numero limitato di centroidi Esempio:, è diviso in subvector di dimensione 16 ciascun subvector è quantizzato con centroidi 8 bit lunghezza codebook: bit
Asymmetric Distance Computation (ADC) Calcolare la distanza approssimata nel dominio compresso Per calcolare la distanza tra la query e i molti codici calcolare per ciascun subvector e tutti i possibili centroidi memorizzati in look-up table costi fissi per quantizzazione per ciascun codice di database: sommare le distanze Ciascun codice 8x8=64 bit richiede soltanto m=8 somme per distanza IVFADC: combinazione con un inverted file per evitare la ricerca esaustiva
IVFADC: Combinazione con un Inverted File System Algoritmo di Indexing è il vettore di database 1) quantizzare con ; 2) calcolare il residuo ; 3) quantizzare con ; 4) aggiungere una nuova entry alla lista invertita corrispondente a. La list entry contiene l’id del vettore e il code (indici del product quantizer).
IVFADC: Combinazione con un Inverted File System Algoritmo di Searching del nearest neighbor(s) è la query 1) quantizzare ai suoi nearest neighbors nel codebook ; 2) calcolare la distanza per ciascun subquantizer e ciascuno dei suoi centroidi 3) calcolare la distanza tra e tutti i vettori indici della lista invertita. Si utilizzano le distanze subvector-to-centroid calcolate nel passo precedente; 4) selezionare i nearest neighbors di in base alle distanze stimate.
DATASET Eseguiamo i nostri esperimenti su due dataset, ANN_SIFT1M e ANN_SIFT10K. Abbiamo tre sottoinsiemi di vettori per dataset: learning; database; query.
ESPERIMENTI
La tabella seguente mostra i risultati ottenuti con codice di lunghezza 64 bit relativo al database SIFTsmall: Il metodo PQ si comporta sempre meglio di SH, sia in termini di sia per quanto riguarda il time cost. Il costo del passo extra di quantizzazione richiesto da IVFPQ appare chiaramente quando il database è di piccole dimensioni.
ESPERIMENTI La seguente tabella riassume i risultati di SIFTsmall con diverse lunghezze di codice: Tutti i metodi con codici a 64 bit si comportano meglio in termini di rispetto ai codici a 16 e 32 bit. Il metodo PQ a 64 bit, per database di piccole dimensioni, è più veloce rispetto a SH 64 bit e IVFADC 64 bit.
ESPERIMENTI La seguente tabella mostra i risultati con codice di lunghezza 64 bit relativamente al database SIFT1M: Per database di grosse dimensioni, PQ 64 bit si comporta meglio in termini di rispetto a SH 64 bit. La maggiore qualità di PQ rispetto a SH ha però un costo, infatti PQ è molto più lento di SH (25%).
Comparazione con i risultati riportati dal paper di Jégou