Product Quantization for Nearest Neighbor search

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