Locality sensitive hashing

Page d’aide sur l’homonymie

Pour les articles homonymes, voir LSH.

Locality sensitive hashing (LSH) est une méthode de recherche approximative dans des espaces de grande dimension. C'est une solution au problème de la malédiction de la dimension qui apparait lors d'une recherche des plus proches voisins en grande dimension. L'idée principale est d'utiliser une famille de fonction de hachage choisies telles que des points proches dans l'espace d'origine aient une forte probabilité d'avoir la même valeur de hachage. La méthode a de nombreuses applications en vision artificielle, traitement automatique de la langue, bio-informatique…[citation nécessaire]

Définition

Une famille LSH F {\displaystyle {\mathcal {F}}} est définie pour un espace métrique M = ( M , d ) {\displaystyle {\mathcal {M}}=(M,d)} , un seuil R > 0 {\displaystyle R>0} et un facteur d'approximation c > 1 {\displaystyle c>1} et deux valeurs de probabilité P 1 {\displaystyle P_{1}} et P 2 {\displaystyle P_{2}} [1],[2]. En pratique, on a souvent M = R d {\displaystyle {\mathcal {M}}=\mathbb {R} ^{d}} .

F {\displaystyle {\mathcal {F}}} est une famille de fonctions h : M S {\displaystyle h:M\to S} satisfaisant les conditions suivantes pour deux points quelconques p , q M {\displaystyle p,q\in M} , et une fonction h {\displaystyle h} choisie aléatoirement parmi la famille F {\displaystyle {\mathcal {F}}}  :

  1. si d ( p , q ) R {\displaystyle d(p,q)\leq R} , alors P r h H [ h ( p ) = h ( q ) ] P 1 {\displaystyle Pr_{h\in H}[h(p)=h(q)]\geq P_{1}}
  2. si d ( p , q ) c R {\displaystyle d(p,q)\geq cR} , alors P r h H [ h ( p ) = h ( q ) ] P 2 {\displaystyle Pr_{h\in H}[h(p)=h(q)]\leq P_{2}}

Par construction, les fonctions de hachage doivent permettre aux points proches d'entrer fréquemment en collision (i.e. h ( p ) = h ( q ) {\displaystyle h(p)=h(q)} ). Inversement, les points éloignés ne doivent entrer que rarement en collision. Pour que la famille LSH soit intéressante, il faut donc P 2 < P 1 {\displaystyle P_{2}<P_{1}} . La famille F {\displaystyle {\mathcal {F}}} est alors appelée ( R , c R , P 1 , P 2 ) {\displaystyle (R,cR,P_{1},P_{2})} -sensitive. La famille est d'autant plus intéressante si P 1 {\displaystyle P_{1}} est très supérieure à P 2 {\displaystyle P_{2}} .

Une définition alternative[3] s'appuie sur un univers U {\displaystyle U} possédant une fonction de similarité ϕ : U × U [ 0 , 1 ] {\displaystyle \phi :U\times U\to [0,1]} . Une famille LSH est alors un ensemble de fonctions de hachage H {\displaystyle H} et une distribution de probabilité D {\displaystyle D} sur les fonctions, telle qu'une fonction h H {\displaystyle h\in H} choisie selon D {\displaystyle D} satisfait la propriété P r h H [ h ( a ) = h ( b ) ] = ϕ ( a , b ) {\displaystyle Pr_{h\in H}[h(a)=h(b)]=\phi (a,b)} pour tout a , b U {\displaystyle a,b\in U} .

Applications

LSH a été appliqué dans plusieurs domaines, en particulier pour la recherche d'image par le contenu, la comparaison de sequence d'ADN[4], la recherche par similarité de documents audios.

Méthodes

Échantillonnage par bit pour la distance de Hamming

L'échantillonnage de bit[2],[5] est une méthode simple permettant de construire une famille LSH. Cette approche est adaptée à la distance de Hamming dans un espace binaire de dimension d {\displaystyle d} , i.e. quand un point de l'espace appartient à { 0 , 1 } d {\displaystyle \{0,1\}^{d}} . La famille F {\displaystyle {\mathcal {F}}} de fonctions de hachage est alors l'ensemble des projections sur une des d {\displaystyle d} coordonnées, i.e., F = { h : { 0 , 1 } d { 0 , 1 } h ( x ) = x i , i = 1... d } {\displaystyle {\mathcal {F}}=\{h:\{0,1\}^{d}\to \{0,1\}\mid h(x)=x_{i},i=1...d\}} , où x i {\displaystyle x_{i}} est la ie coordonnée de x {\displaystyle x} . Une fonction aléatoire h {\displaystyle h} de F {\displaystyle {\mathcal {F}}} ne fait donc que sélectionner un bit au hasard dans le vecteur x {\displaystyle x} d'origine.

Cette famille possède les paramètres suivants :

  • P 1 = 1 R / d {\displaystyle P_{1}=1-R/d}
  • P 2 = 1 c R / d {\displaystyle P_{2}=1-cR/d} .

L'algorithme LSH pour la recherche de plus proches voisins

L'application principale de LSH est de fournir un algorithme efficace de recherche des plus proches voisins.

L'algorithme donne une méthode de construction d'une famille LSH G {\displaystyle {\mathcal {G}}} utilisable, c'est-à-dire telle que P 1 P 2 {\displaystyle P_{1}\gg P_{2}} , et ceci à partir d'une famille LSH F {\displaystyle {\mathcal {F}}} de départ. L'algorithme a deux paramètres principaux : le paramètre de largeur k {\displaystyle k} et le nombre de tables de hachage L {\displaystyle L} .

Pré-traitement

En pré-traitement, l'algorithme définit donc une nouvelle famille G {\displaystyle {\mathcal {G}}} de fonctions de hachage g {\displaystyle g} , où chaque fonction g {\displaystyle g} est obtenue par concaténation de k {\displaystyle k} fonctions h 1 , . . . , h k {\displaystyle h_{1},...,h_{k}} de F {\displaystyle {\mathcal {F}}} , i.e., g ( p ) = [ h 1 ( p ) , . . . , h k ( p ) ] {\displaystyle g(p)=[h_{1}(p),...,h_{k}(p)]} . En d'autres termes, une fonction de hachage aléatoire g {\displaystyle g} est obtenue par concaténation de k {\displaystyle k} fonctions de hachage choisies aléatoirement dans H {\displaystyle {\mathcal {H}}} .

L'algorithme construit ensuite L {\displaystyle L} tables de hachage, correspondant chacune à une fonction de hachage g {\displaystyle g} . La je table de hachage contient alors les points de M {\displaystyle {\mathcal {M}}} hachés par la fonction g j {\displaystyle g_{j}} . Seules les positions non-vides des tables de hachage sont conservées, en utilisant un hachage standard des valeurs de g j ( p ) {\displaystyle g_{j}(p)} . Les tables de hachage résultats n'ont alors que n {\displaystyle n} entrées (non-vides), réduisant l'espace mémoire par table à O ( n ) {\displaystyle O(n)} et donc O ( n L ) {\displaystyle O(nL)} pour la structure de donnée totale.

Recherche d'un point requête q {\displaystyle q}

Pour un point requête q {\displaystyle q} , l'algorithme itère sur les L {\displaystyle L} fonctions de hachage g {\displaystyle g} . Pour chaque g {\displaystyle g} considérée, on trouve les points hachés à la même position que le point requête q {\displaystyle q} dans la table correspondante. Le processus s'arrête dès qu'un point r est trouvé tel que d ( r , q ) c R {\displaystyle d(r,q)\leq cR} .

Étant donné les paramètres k {\displaystyle k} et L {\displaystyle L} , l'algorithme a les garanties de performance suivantes :

  • temps de pré-traitement : O ( n L k t ) {\displaystyle O(nLkt)} , où t {\displaystyle t} est le temps d'évaluation d'une fonction h F {\displaystyle h\in F} d'un point p {\displaystyle p} ;
  • mémoire : O ( n L ) {\displaystyle O(nL)}
  • temps de requête : O ( L ( k t + d n P 2 k ) ) {\displaystyle O(L(kt+dnP_{2}^{k}))} ;
  • l'algorithme a une probabilité de trouver un point à une distance c R {\displaystyle cR} de la requête q {\displaystyle q} (si un tel point existe) avec une probabilité Ω ( min { 1 , L P 1 k } ) {\displaystyle \Omega (\min\{1,LP_{1}^{k}\})} .

Notes et références

  1. (en) Gionis, P. Indyk et Rajeev Motwani, « Similarity Search in High Dimensions via Hashing », Proceedings of the 25th Very Large Database (VLDB) Conference,‎ (lire en ligne)
  2. a et b (en) Piotr Indyk et Rajeev Motwani, « Approximate Nearest Neighbors: Towards Removing the Curse of Dimensionality. », Proceedings of 30th Symposium on Theory of Computing,‎ (lire en ligne)
  3. (en) Moses S. Charikar, « Similarity Estimation Techniques from Rounding Algorithms », Proceedings of the 34th Annual ACM Symposium on Theory of Computing 2002,‎ , (ACM 1–58113–495–9/02/0005)… (DOI 10.1145/509907.509965, lire en ligne, consulté le )
  4. Jeremy Buhler, Efficient large-scale sequence comparison by locality-sensitive hashing, Bioinformatics 17: 419-428.
  5. (en) Alexandr Andoni et Piotr Indyk, « Near-optimal hashing algorithm for approximate nearest neighbour in high dimensions », Communications of the ACM, Vol. 51,‎ (lire en ligne)
  • (en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Locality-sensitive hashing » (voir la liste des auteurs).

Voir aussi

Articles connexes

Liens externes

  • Alex Andoni's LSH homepage
  • icône décorative Portail de l’imagerie numérique
  • icône décorative Portail de l'informatique théorique