Compreendendo o algoritmo de vizinho mais próximo aproximado (ANN)

Neighbor.jpg

Se você cresceu antes da estreia da Internet, vai lembrar que nem sempre foi fácil encontrar coisas novas para gostar. Descobríamos novas bandas quando as ouvíamos no rádio, víamos um novo programa de TV sem querer porque nos esquecíamos de mudar de canal e encontrávamos um novo videogame favorito com base quase que totalmente na imagem da capa.

Hoje em dia, as coisas são muito diferentes. O Spotify me indica artistas que têm a ver com meus gostos, a Netflix destaca filmes e programas de TV que sabe que vamos gostar e o Xbox sabe o que provavelmente vamos querer jogar a seguir. Esses sistemas de recomendação tornam muito mais fácil encontrar o que realmente procuramos; eles são alimentados por algoritmos de vizinho mais próximo (NN). O NN analisa o oceano de informações que tem disponível e identifica o que mais se aproxima de algo de que você gosta ou que você está procurando.

Mas os algoritmos de NN têm uma falha inerente. Se a quantidade de dados que eles estiverem analisando ficar muito grande, rastrear cada opção levará uma eternidade. Isso é um problema, especialmente porque essas fontes de dados crescem cada vez mais a cada ano. É aqui que o vizinho mais próximo aproximado (ANN) pega o bastão do NN e muda o jogo.

Neste artigo, abordaremos os seguintes tópicos principais sobre ANN:

  • Definição de ANN

  • Como funciona o ANN

  • Quando usar a busca de ANN

  • Importância do ANN na busca vetorial

  • Vários tipos de algoritmos de ANN

Vizinho mais próximo aproximado — uma explicação

Vizinho mais próximo aproximado (ANN, pelas iniciais em inglês) é um algoritmo que encontra um ponto de dados em um conjunto de dados que está muito próximo do ponto de consulta fornecido, mas não necessariamente o mais próximo absoluto. Um algoritmo de NN faz uma busca exaustiva em todos os dados para encontrar a correspondência perfeita, enquanto um algoritmo de ANN se contenta com uma correspondência que seja próxima o suficiente.

Essa pode parecer uma solução pior, mas na verdade é a chave para conseguir uma busca rápida por similaridade. O ANN usa atalhos inteligentes e estruturas de dados para navegar com eficiência no espaço de busca. Portanto, em vez de consumir enormes quantidades de tempo e recursos, ele pode identificar com muito menos esforço pontos de dados que estejam próximos o suficiente para serem úteis na maioria dos cenários práticos.

Essencialmente, é uma troca. Se você realmente precisa encontrar a melhor combinação, pode fazer isso às custas da velocidade e do desempenho com o NN. Mas se você pode tolerar uma pequena queda na precisão, o ANN é quase sempre uma solução melhor.

Como funcionam os algoritmos de vizinho mais próximo aproximado

A primeira parte de como o ANN funciona é a redução da dimensionalidade, na qual o objetivo é transformar um conjunto de dados de dimensão superior em um conjunto de dimensão inferior. O objetivo é tornar a tarefa do modelo preditivo menos complicada e mais eficiente do que ter de analisar todos os dados.

Esses algoritmos baseiam-se no conceito matemático de espaços métricos, onde residem os pontos de dados e as distâncias entre eles são definidas. Essas distâncias devem obedecer a regras específicas (não negatividade, identidade, simetria, desigualdade triangular), e funções comuns como distância euclidiana ou similaridade de cosseno são usadas para calculá-las.

Para entender melhor, imagine que você esteja de férias procurando a casa que alugou. Em vez de olhar cada edifício um por um (dimensional superior), você usaria um mapa, o que reduz o problema a duas dimensões (dimensional inferior). (Este é um exemplo deliberadamente simplista. A redução da dimensionalidade não é o único método empregado pelos algoritmos de ANN para melhorar a eficiência.)

Os algoritmos de ANN também utilizam estruturas de dados inteligentes chamadas índices para melhorar a eficiência. Ao pré-processar os dados nesses índices, o ANN pode navegar no espaço de busca com muito mais rapidez. Pense neles como placas de rua, ajudando você a descobrir onde está no mapa para chegar mais rápido à sua casa de veraneio.

Quando usar a busca de vizinho mais próximo aproximado

No mundo acelerado da ciência de dados, a eficiência reina suprema. Embora encontrar o verdadeiro vizinho mais próximo (busca do vizinho mais próximo exato) tenha valor, muitas vezes tem um custo computacional, como já falamos. É aqui que a busca de ANN se destaca, oferecendo uma compensação atraente: precisão alta, mas não absoluta, na velocidade da luz.

Mas quando exatamente você deve escolher o ANN em vez de outros métodos de busca?

O vizinho mais próximo exato pode ser lento, mas é a melhor opção quando a precisão é sua prioridade ou você está usando pequenos conjuntos de dados. Os k-vizinhos mais próximos (kNN) se situam entre o NN e o ANN, fornecendo resultados mais rápidos e mantendo alta precisão. Mas pode ser difícil acertar ao decidir o valor de k, e também há dificuldades com dados de alta dimensão.

A velocidade e a eficiência do ANN combinadas com sua alta (mas não absoluta) precisão a tornam perfeita em diversas situações:

  • Grandes conjuntos de dados. Ao lidar com milhões ou mesmo bilhões de pontos de dados, a natureza exaustiva do NN exato torna-se lenta. O ANN é excelente para navegar por vastos cenários de dados, entregando resultados com agilidade.

  • Dados de alta dimensão. À medida que as dimensões aumentam, os cálculos exatos de NN explodem. As técnicas de redução de dimensionalidade dos ANNs reduzem de forma eficaz o espaço de busca e aumentam a eficiência em dados complexos, como imagens ou texto.

  • Aplicações em tempo real. Precisa de resultados instantaneamente? Os sistemas de recomendação, detecção de fraude e detecção de anomalia dependem de insights em tempo real. A velocidade do ANN o torna ideal para esses cenários.

  • Aproximação aceitável. Se sua aplicação puder tolerar pequenas imprecisões nos resultados, a velocidade do ANN se tornará inestimável. Por exemplo, na busca de imagens, encontrar imagens visualmente semelhantes em vez da mais próxima absoluta pode ser suficiente.

Importância do ANN na busca vetorial

A busca vetorial lida com dados codificados como vetores densos, capturando relações complexas e significados incorporados. Isso a torna ideal para buscar conteúdo como imagens, texto e preferências do usuário, onde a busca tradicional baseada em palavras-chave geralmente fica devendo. Mas a maldição da dimensionalidade também se aplica aqui. Porque à medida que o número de dimensões que representam esses vetores aumenta, os métodos de busca tradicionais enfrentam dificuldades, tornando-se lentos e ineficientes.

O ANN resolve esse problema com uma mudança de foco, de encontrar uma correspondência exata para correspondências “suficientemente próximas”. Isso permite a recuperação rápida, ou seja, sua busca vetorial pode encontrar vetores semelhantes em enormes conjuntos de dados com uma rapidez incrível. Ele também oferece escalabilidade integrada, para que você possa aumentar seu conjunto de dados o quanto quiser, sem prejuízo da velocidade.

Essas respostas em tempo real, combinadas com maior relevância e eficiência, muitas vezes significam que o ANN pode desempenhar um papel fundamental para revelar o verdadeiro potencial da sua busca vetorial.

Tipos de algoritmos de vizinho mais próximo aproximado

Embora o conceito de ANN ofereça uma vantagem convincente de velocidade na busca, esse termo na verdade abrange uma caixa de ferramentas diversificada de algoritmos. Todos eles têm seus próprios pontos fortes e vantagens, e compreender essas nuances é fundamental ao escolher a ferramenta certa para suas necessidades específicas de dados e busca.

Árvores KD

As árvores KD organizam os pontos de dados em uma estrutura de árvore hierárquica, particionando o espaço com base em dimensões específicas. Isso permite buscas rápidas e eficientes em espaços de baixa dimensão e consultas baseadas em distância euclidiana.

Mas embora as árvores KD sejam excelentes para encontrar vizinhos mais próximos em dimensões baixas, elas sofrem da “maldição da dimensionalidade”. É aqui que, à medida que o número de dimensões aumenta, o espaço entre os pontos explode. Nessas altas dimensões, a estratégia de divisão das árvores KD com base em eixos únicos torna-se ineficaz. Isso faz com que a busca examine a maior parte dos dados, perdendo a vantagem da eficiência e aproximando-se da lentidão de uma simples varredura linear em todos os pontos.

Hashing sensível à localidade (LSH)

O LSH é uma técnica poderosa de ANN que funciona com “hashing” dos pontos de dados em espaços de dimensões inferiores, preservando de forma inteligente suas relações de similaridade. Esse agrupamento os torna mais fáceis de encontrar e permite que o LSH se destaque na busca de grandes conjuntos de dados de alta dimensão, como imagens ou texto, com velocidade e escalabilidade. Ele faz tudo isso ao mesmo tempo em que retorna correspondências “suficientemente próximas” com boa precisão. Mas tenha em mente que o LSH também pode ocasionalmente produzir falsos positivos (encontrar pontos não semelhantes como semelhantes), e sua eficácia pode variar com base na métrica de distância e no tipo de dados. Existem várias famílias de LSH projetadas para trabalhar com diferentes métricas (por exemplo, distância euclidiana, similaridade de Jaccard), o que significa que o LSH permanece versátil.

Annoy

O Annoy (Approximate Nearest Neighbors Oh Yeah) não é um algoritmo único, mas uma biblioteca C++ open source que usa seus próprios algoritmos para criar e consultar árvores, sem implementar diretamente LSH ou árvores KD. Foi projetado para buscas rápidas e com uso eficiente de memória em espaços de alta dimensão, tornando-o adequado para consultas em tempo real. Essencialmente, é uma interface amigável que oferece flexibilidade para diferentes tipos de dados e cenários de busca. A força do Annoy está em aproveitar múltiplas abordagens de ANN sob o mesmo teto, permitindo que você escolha a que melhor se adapte às suas necessidades. Embora simplifique o processo, lembre-se de que escolher o algoritmo interno correto no Annoy é crucial para o desempenho ideal, e sua eficácia ainda depende de fatores como seus requisitos de dados e precisão.

Algoritmo de varredura linear

Embora não seja normalmente classificada como uma técnica de ANN, vale a pena mencionar a varredura linear porque é uma abordagem de força bruta que fornece resultados semelhantes aos de outros algoritmos de ANN. Ela percorre cada ponto de dados sequencialmente, calculando as distâncias entre os registros e acompanhando as melhores correspondências. Devido à natureza simplista do algoritmo, ele é fácil de implementar e excelente para pequenos conjuntos de dados. A desvantagem da abordagem mais básica é que é ineficiente para grandes conjuntos de dados, lenta quando usada com dados de alta dimensão e impraticável para aplicações em tempo real.

Como escolher o ANN certo

Antes de começar a escolher um ANN, há alguns fatores que você deve considerar antes de decidir:

  • Tamanho e dimensionalidade do conjunto de dados. Considere a possibilidade de usar hashing sensível à localidade para conjuntos de dados grandes e de alta dimensão e árvores KD para conjuntos de dados menores e de menor dimensão.

  • Nível de precisão desejado. Se a precisão absoluta for vital, a varredura linear é provavelmente a melhor opção. Caso contrário, pense no LSH ou no Annoy para obter boa precisão com velocidade.

  • Recursos computacionais. O Annoy oferece flexibilidade, mas considere as limitações de memória e processamento antes de escolher um algoritmo dentro dele.

Lembre-se: não existe uma solução única para todos. Experimente diferentes algoritmos de ANN e avalie o desempenho em seus dados específicos para encontrar a combinação perfeita para suas necessidades de busca vetorial. Além dessas opções, o mundo dos algoritmos de ANN está em constante evolução. Por isso, também vale a pena ficar de olho para não perder alguma novidade que possa melhorar sua busca.

O ANN é o ingrediente secreto para uma melhor busca

O vasto e complexo mundo dos dados exige ferramentas eficientes para navegar em seus labirintos. É aqui que o ANN pode ser o ingrediente secreto que fará sua busca por similaridade passar de boa a excelente. Ele oferece velocidade e escalabilidade, embora ao custo de um leve perda de precisão. E há pesquisas em andamento com desenvolvimentos sendo feitos semanalmente, o que contribuirá para a natureza dinâmica do espaço do ANN. Por exemplo, os avanços na computação quântica e no machine learning podem levar a novos tipos de algoritmos de ANN que sejam ainda mais rápidos e eficientes.

Exploramos diferentes algoritmos de ANN, cada um com seus pontos fortes e fracos exclusivos. Mas, em última análise, a escolha ideal depende das suas necessidades específicas. Considere fatores como volume dos dados, dimensionalidade, requisitos de precisão e recursos. Experimente, explore e escolha o algoritmo certo para aproveitar os ANNs ao máximo. Da busca de imagens à detecção de fraude, esses algoritmos podem fazer uma enorme diferença, revelando conexões ocultas e fornecendo insights orientados por dados rapidamente.

Portanto, da próxima vez que você procurar a próxima música, filme ou videogame, lembre-se dos heróis silenciosos nos bastidores (os algoritmos de ANN), ligando os pontos e fazendo conexões.

O que você deve fazer a seguir

Quando estiver pronto(a), veja aqui quatro maneiras para ajudar você a aproveitar os insights dos dados da sua empresa:

  1. Inicie uma avaliação gratuita e veja como a Elastic pode ajudar sua empresa.

  2. Conheça nossas soluções para ver como a Elasticsearch Platform funciona e como nossas soluções atenderão às suas necessidades.

  3. Descubra como incorporar a IA generativa na empresa.

  4. Compartilhe este artigo com alguém que você conhece e que gostaria de lê-lo. Compartilhe por email, LinkedIn, Twitter ou Facebook.

Saiba mais sobre a tecnologia de busca:

O lançamento e o tempo de amadurecimento de todos os recursos ou funcionalidades descritos neste post permanecem a exclusivo critério da Elastic. Os recursos ou funcionalidades não disponíveis atualmente poderão não ser entregues dentro do prazo previsto ou nem chegar a ser entregues.

Neste post do blog, podemos ter usado ou nos referido a ferramentas de IA generativa de terceiros, que pertencem a seus respectivos proprietários e são operadas por eles. A Elastic não tem nenhum controle sobre as ferramentas de terceiros e não temos nenhuma responsabilidade por seu conteúdo, operação ou uso nem por qualquer perda ou dano que possa surgir do uso de tais ferramentas. Tenha cuidado ao usar ferramentas de IA com informações pessoais, sensíveis ou confidenciais. Os dados que você enviar poderão ser usados para treinamento de IA ou outros fins. Não há garantia de que as informações fornecidas serão mantidas em segurança ou em confidencialidade. Você deve se familiarizar com as práticas de privacidade e os termos de uso de qualquer ferramenta de IA generativa antes de usá-la. 

Elastic, Elasticsearch, ESRE, Elasticsearch Relevance Engine e marcas associadas são marcas comerciais, logotipos ou marcas registradas da Elasticsearch N.V. nos Estados Unidos e em outros países. Todos os outros nomes de empresas e produtos são marcas comerciais, logotipos ou marcas registradas de seus respectivos proprietários.