Medida de similaridade entre os embeddings
Agora que vimos o que são embeddings, sabemos que podemos medir a similaridade entre duas palavras medindo a similaridade entre seus embeddings. Na postagem embeddings, vimos o exemplo do uso da medida de similaridade do cosseno, mas há outras medidas de similaridade que podemos usar, o quadrado L2, a similaridade do produto escalar, a similaridade do cosseno e assim por diante.
Este caderno foi traduzido automaticamente para torná-lo acessível a mais pessoas, por favor me avise se você vir algum erro de digitação..
Nesta postagem, examinaremos os três itens mencionados.
Similaridade por quadrado L2
Essa similaridade é derivada da distância euclidiana, que é a distância em linha reta entre dois pontos em um espaço multidimensional, calculada com o teorema de Pitágoras.
A distância euclidiana entre dois pontos $p$ e $q$ é calculada como:
$$ d(p,q) = \sqrt{(p_1 - q_1)^2 + (p_2 - q_2)^2 + \cdots + (p_n - q_n)^2} = \sqrt{\sum_{i=1}^n (p_i - q_i)^2} $$A similaridade ao quadrado de L2 é o quadrado da distância euclidiana, ou seja, o quadrado da distância euclidiana:
$$ similaridade(p,q) = d(p,q)^2 = \sum_{i=1}^n (p_i - q_i)^2 $$Semelhança de cosseno
Se nos lembrarmos do que aprendemos sobre senos e cossenos na escola, lembraremos que quando dois vetores têm um ângulo de 0º entre eles, seu cosseno é 1, quando o ângulo entre eles é de 90º, seu cosseno é 0 e quando o ângulo é de 180º, seu cosseno é -1.
Portanto, podemos usar o cosseno do ângulo entre dois vetores para medir sua similaridade. É possível demonstrar que o cosseno do ângulo entre dois vetores é igual ao produto escalar dos dois vetores dividido pelo produto de seus módulos. Não é o objetivo desta postagem demonstrar isso, mas se você quiser, pode ver a demonstração [aqui] (https://www.wwwinsights.com/wp-content/uploads/2023/05/image-11-1024x694.png).
$$ similaridade(U,V) = \frac{U \V}{V}. $$Similaridade do produto escalar
A similaridade do produto escalar é o produto escalar de dois vetores
$$ similaridade(U,V) = U \cdot V $$Como escrevemos a fórmula de similaridade de cosseno, quando o comprimento dos vetores é 1, ou seja, eles são normalizados, a similaridade de cosseno é igual à similaridade do produto escalar.
Então, para que serve a similaridade do produto escalar? Bem, para medir a semelhança entre dois vetores que não são normalizados, ou seja, que não têm comprimento 1.
Por exemplo, o YouTube, para criar incorporações para seus vídeos, torna as incorporações dos vídeos que classifica como de qualidade superior mais longas do que as dos vídeos que classifica como de qualidade inferior.
Dessa forma, quando um usuário faz uma pesquisa, a similaridade por produto escalar dará maior similaridade a vídeos de maior qualidade, portanto, dará ao usuário os vídeos de maior qualidade primeiro.
Qual sistema de similaridade usar
Para escolher o sistema de similaridade a ser usado, devemos levar em conta o espaço em que estamos trabalhando.
- Se estivermos trabalhando em um espaço de alta dimensão, com embeddings normalizados, a similaridade de cosseno funciona melhor. Por exemplo, o OpenAI gera embeddings normalizados, portanto, a similaridade de cosseno funciona melhor.
- Se estivermos trabalhando em um sistema de classificação, em que a distância entre duas classes é importante, a similaridade L2-quadrado funciona melhor.
- Se estivermos trabalhando em um sistema de recomendação, em que o comprimento dos vetores é importante, a similaridade do produto escalar funciona melhor.