Hashing Sensível à Localidade e Vizinhos Mais Próximos Aproximados
Objetivos de Aprendizagem
- Explicar a maldição da dimensionalidade para a busca exata de vizinhos mais próximos e por que respostas aproximadas são o objetivo prático em alta dimensão.
- Definir uma família de hash sensível à localidade pelos parâmetros e dar dois exemplos: MinHash para similaridade de Jaccard e hiperplanos aleatórios para distância angular.
- Calcular a probabilidade de colisão da construção em bandas (AND-OR) e localizar o seu limiar de similaridade.
- Enunciar o expoente do tempo de consulta e explicar o que ele ganha em relação a uma varredura linear.
Contexto e Motivação
algorithms-software/data-structures-ii estudou o hashing universal, cujo objetivo é fazer chaves distintas colidirem o mais raramente possível. Muitos problemas reais querem o contrário. Um buscador precisa achar páginas quase duplicadas entre bilhões; um sistema de recomendação precisa achar usuários com gostos parecidos; a etapa de recuperação da geração aumentada por recuperação da Trilha B precisa achar os vetores guardados mais próximos de um embedding de consulta. Todos são problemas de vizinho mais próximo: dado um ponto de consulta, encontre os pontos mais próximos num conjunto grande.
Em poucas dimensões, árvores de particionamento do espaço (kd-trees) respondem essas consultas rápido. Em centenas de dimensões elas degradam para varrer quase tudo, porque em alta dimensão quase todos os pontos ficam mais ou menos à mesma distância de uma consulta, e a poda raramente funciona. Essa é a maldição da dimensionalidade. A resposta de Indyk e Motwani em 1998 foi o hashing sensível à localidade (LSH): projetar funções hash aleatórias sob as quais pontos próximos tendem a colidir e pontos distantes não, e então olhar só os baldes em que a consulta colide. A mesma ideia, desenvolvida por Broder na AltaVista para detecção de duplicatas (MinHash) e por Charikar para vetores (hiperplanos aleatórios), é vista no CS168 de Stanford e no 6.854 do MIT.
Teoria Central
Vizinhos próximos aproximados
A busca exata não consegue vencer uma varredura no pior caso em alta dimensão, sob conjecturas amplamente aceitas, então o alvo é relaxado: para um raio e um fator de aproximação , se algum ponto estiver a distância no máximo da consulta, devolva um ponto a distância no máximo . Permitir uma resposta um pouco mais distante é o que abre a porta para tempo de consulta sublinear.
Famílias sensíveis à localidade
Uma família de funções hash é -sensível, com e , se para sorteada de :
- se , então ;
- se , então .
Duas famílias clássicas:
MinHash (similaridade de Jaccard). Para conjuntos e , . Sorteie uma permutação aleatória do universo e defina . O elemento mínimo de sob tem a mesma chance de ser qualquer um dos seus elementos, e exatamente quando esse elemento está em , então . Na prática, uma função hash aleatória faz o papel da permutação.
Hiperplanos aleatórios (distância angular). Para vetores , sorteie um vetor gaussiano aleatório e defina . O hiperplano ortogonal a separa e com probabilidade , em que é o ângulo entre eles, então . Isso se liga diretamente à similaridade de cosseno na busca por embeddings.
Amplificação: AND, depois OR
Um único hash tem uma diferença fraca entre e . Amplifique-a em dois passos:
- AND: concatene hashes independentes numa única chave; dois pontos compartilham a chave com probabilidade . Isso empurra a probabilidade de pares distantes para perto de 0, mas também prejudica pares próximos.
- OR: construa tabelas independentes assim; um par vira candidato se colidir em pelo menos uma. Probabilidade: .
Para MinHash com similaridade , a probabilidade de candidato é uma curva em S com a parte íngreme perto do limiar . Escolher e coloca o limiar onde a aplicação precisa. Os candidatos são então checados de forma exata, então falsos positivos custam só tempo e falsos negativos são o erro de verdade.
Tempo de consulta
Com os parâmetros certos, o LSH responde consultas de vizinho próximo -aproximado em tempo de cerca de com , usando espaço . Para distância de Hamming com amostragem de bits, ; para distância euclidiana, Andoni e Indyk alcançaram , que se sabe ser ótimo para esse tipo de esquema de hashing. Para no espaço euclidiano, isso dá cerca de de trabalho por consulta em vez de .
Exemplos Resolvidos
Exemplo 1: ajustando as bandas para detectar quase duplicatas
Problema: Documentos são representados por 100 valores MinHash divididos em bandas de linhas. Qual a probabilidade de um par com similaridade de Jaccard 0,8 virar candidato? E com similaridade 0,3? Onde fica o limiar?
Rastreamento: Para : , então . Para : , então . Limiar: . Quase duplicatas verdadeiras quase nunca são perdidas (cerca de 1 em 2.800), e só uns 5% dos pares diferentes precisam de checagem exata. Subir para 10 com leva o limiar para cerca de , útil se "duplicata" deve significar muito próximo.
Exemplo 2: hiperplanos aleatórios para embeddings
Problema: Embeddings são comparados por ângulo. Cada tabela concatena bits de hiperplano, e há tabelas. Compare a probabilidade de recuperar um vizinho a 30 graus com a de um a 90 graus (ortogonal, sem relação).
Rastreamento: Um bit concorda com probabilidade a 30 graus e a 90 graus. Dez bits: contra . Em 20 tabelas: contra . Assim, um vizinho próximo é encontrado 97% das vezes, enquanto um vetor sem relação é examinado menos de 2% das vezes, e a consulta inspeciona só uma pequena fração do banco.
Equívocos Comuns e Armadilhas
- "LSH é uma tabela hash com um hash esperto." Uma única tabela quase nunca funciona; as garantias vêm da amplificação AND-OR sobre muitas tabelas independentes, o que multiplica o uso de memória. Espaço, e não tempo, costuma ser a restrição que aperta.
- "Busca aproximada devolve respostas erradas." Ela devolve candidatos verificados pela distância exata; a aproximação é que pode perder o vizinho mais próximo verdadeiro com pequena probabilidade ou devolver um um pouco mais distante. Para recuperação e deduplicação, isso costuma ser indistinguível em qualidade da busca exata.
- "LSH é o que bancos de dados vetoriais usam." Muitos sistemas modernos usam índices baseados em grafos (como o HNSW) ou quantização, que costumam se sair melhor na prática em dados reais; o LSH continua sendo o método com as garantias de pior caso mais limpas e é comum para similaridade de conjuntos com MinHash.
Resumo
A busca exata pelo vizinho mais próximo em alta dimensão degrada para uma varredura linear, então o objetivo vira a busca aproximada. Famílias de hash sensíveis à localidade fazem pontos próximos colidirem com probabilidade e pontos distantes com probabilidade : o MinHash colide com probabilidade igual à similaridade de Jaccard, e os hiperplanos aleatórios com probabilidade . Concatenar hashes e usar tabelas transforma essa diferença num limiar nítido perto de , e o índice resultante responde consultas em tempo de cerca de com . O próximo conceito sai da busca e vai para a otimização, e de respostas exatas para respostas comprovadamente boas em problemas NP-difíceis.