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 1012 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 y è quantizzato con qc y dove qc è il product quantizer x è il vettore di query Se stimiamo la distanza da d x, y d x, qc y Allora possiamo dire che EY d x, y d x, qc y EY y qc y MSE 2 2 cioè, l’errore della distanza al quadrato è statisticamente limitato dall’errore di quantizzazione Product Quantizer Il vettore è diviso in m subvector: y y ... y 1 m Subvector sono quantizzati separatamente dai quantizzatori q y q1 y1 ... qm ym dove ciascun qi è appreso dall’algoritmo k-means con un numero limitato di centroidi Esempio: y 128 dim , è diviso in m 8 subvector di dimensione 16 ciascun subvector è quantizzato con k * 256 centroidi 8 bit * lunghezza codebook: m log 2 k 64 bit Asymmetric Distance Computation (ADC) Calcolare la distanza approssimata nel dominio compresso m 2 2 d x, y d xi , qi yi i 1 Per calcolare la distanza tra la query x e i molti codici 2 calcolare d xi , ci , j per ciascun subvector xi 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 y è il vettore di database 1) quantizzare y con qc y ; 2) calcolare il residuo r y y qc y ; 3) quantizzare r y con q p r y ; 4) aggiungere una nuova entry alla lista invertita corrispondente a qc y . 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) x è la query 1) quantizzare x ai suoi w nearest neighbors nel codebook qc ; 2 2) calcolare la distanza d u j r x , c j ,i per ciascun subquantizer j e ciascuno dei suoi centroidi c j ,i ; 3) calcolare la distanza tra r x e tutti i vettori indici della lista invertita. Si utilizzano le distanze subvector-to-centroid calcolate nel passo precedente; 4) selezionare i K nearest neighbors di x 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 ESPERIMENTI 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 recall@R, 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 recall@R 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 recall@R 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