Visão geral da geração de candidatos

A geração de candidatos é a primeira etapa da recomendação. Dada uma consulta, a sistema gera um conjunto de candidatos relevantes. A tabela a seguir mostra duas abordagens comuns de geração de candidatos:

TipoDefiniçãoExemplo
Filtro com base no conteúdo Usa similaridade entre itens para recomendar itens semelhantes ao que o usuário gosta. Se o usuário A assistir a dois vídeos de gatinhos fofos, o sistema poderá recomendar vídeos de animais fofos a ele.
Filtragem colaborativa Usa similaridades entre consultas e itens simultaneamente para fornecer recomendações. Se o usuário A for semelhante ao usuário B e o usuário B gostar do vídeo 1, o sistema pode recomendar o vídeo 1 para o usuário A (mesmo que ele não vi algum vídeo semelhante ao vídeo 1).

Espaço de embedding

A filtragem com base em conteúdo e a colaborativa mapeiam cada item e cada consulta (ou contexto) a um vetor de embedding em um espaço comum \(E = \mathbb R^d\): Normalmente, o espaço de embedding é de baixa dimensão (ou seja, \(d\) é muito menor que o tamanho do corpus) e captura alguma estrutura latente do item ou conjunto de consultas. Itens semelhantes, como YouTube vídeos que normalmente são assistidos pelo mesmo usuário ficam próximos uns dos outros espaço de embedding. A noção de "proximidade" é definida por uma medida de similaridade.

Medidas de similaridade

Uma medida de similaridade é uma função \(s : E \times E \to \mathbb R\) que usa um par de embeddings e retorna um escalar que mede a semelhança entre eles. Os embeddings podem ser usados para a geração de candidatos da seguinte forma: considerando uma o embedding de consulta \(q \in E\), o sistema procura os embeddings do item \(x \in E\) que estejam próximas de \(q\), ou seja, embeddings com alto similaridade \(s(q, x)\).

Para determinar o grau de semelhança, a maioria dos sistemas de recomendação usa em um ou mais dos seguintes:

  • cosseno
  • produto escalar
  • Distância euclidiana

Cosseno

Isso é simplesmente o cosseno do ângulo entre os dois vetores, \(s(q, x) = \cos(q, x)\)

Produto escalar

O produto escalar de dois vetores é \(s(q, x) = \langle q, x \rangle = \sum_{i = 1}^d q_i x_i\): Também é fornecido por \(s(q, x) = \|x\| \|q\| \cos(q, x)\) (o cosseno do ângulo multiplicado pelo produto das normas). Assim, se os embeddings forem normalizado, o produto escalar e o cosseno coincidem.

Distância euclidiana

Esta é a distância normal em euclidiano espaço, \(s(q, x) = \|q - x\| = \left[ \sum_{i = 1}^d (q_i - x_i)^2\right]^{\frac{1}{2}}\). Uma distância menor significa maior semelhança. Quando os embeddings forem normalizadas, a distância euclidiana ao quadrado coincide com o produto escalar (e o cosseno) até uma constante, caso \(\frac{1}{2}\|q - x\|^2 = 1 - \langle q, x \rangle\).

Imagem mostrando um espaço de embedding bidimensional, que contém um embedding de consulta e três itens candidatos.

Como comparar medidas de similaridade

Considere o exemplo na figura à direita. O vetor preto ilustra a o embedding de consultas. Os outros três vetores de embedding (Item A, Item B, Item C) representam itens candidatos. Dependendo da medida de similaridade usada, a classificação dos itens pode ser diferente.

Usando a imagem, tente determinar a classificação do item usando as três medidas de similaridade: cosseno, produto escalar e distância euclidiana.

Qual medida de similaridade?

Em comparação com o cosseno, a semelhança do produto escalar é sensível a o padrão do embedding. Ou seja, quanto maior for o padrão Embedding, maior a semelhança (para itens com um ângulo agudo) e maior a chance de o item ser recomendado. Isso pode afetar da seguinte forma:

  • Itens que aparecem com muita frequência no conjunto de treinamento (por exemplo, vídeos populares do YouTube) tendem a ter embeddings com normas grandes. Se você quiser capturar informações de popularidade, preferem produto escalar. No entanto, se você não tiver cuidado, os aplicativos itens podem acabar dominando as recomendações. Na prática, você pode usar outras variantes de medidas de similaridade que colocam menos ênfase sobre a norma do item. Por exemplo, defina \(s(q, x) = \|q\|^\alpha \|x\|^\alpha \cos(q, x)\) para alguns \(\alpha \in (0, 1)\).

  • Itens que aparecem muito raramente podem não ser atualizados com frequência durante treinamento. Consequentemente, se eles forem inicializados com uma norma grande, o sistema pode recomendar itens raros em vez de itens mais relevantes. Para evitar isso, tenha cuidado com a inicialização da incorporação e use as regularização. Vamos detalhar esse problema no primeiro exercício.