Suponha que você tenha um modelo de embedding. Como você decidiria quais usuários recomendar?
No tempo de exibição, dada uma consulta, você começa com uma das seguintes ações:
- Para um modelo de fatoração de matrizes, a incorporação da consulta (ou do usuário) é conhecida estaticamente, e o sistema pode simplesmente procurá-la na matriz de incorporação de usuários.
- Para um modelo de DNN, o sistema calcula a incorporação de consultas \(\psi(x)\) no momento da veiculação, executando a rede no vetor de atributos \(x\).
Quando você tiver a incorporação de consulta \(q\), pesquise as incorporações de itens \(V_j\) que estejam perto \(q\) do espaço de embedding. Esse é um problema vizinho mais próximo. Por exemplo, é possível retornar os mil principais itens de acordo com a pontuação de semelhança \(s(q, V_j)\).
É possível usar uma abordagem semelhante nas recomendações de itens relacionados. Por exemplo, quando o usuário assiste a um vídeo do YouTube, o sistema pode procurar primeiro a incorporação desse item e, em seguida, procurar incorporações de outros itens \(V_j\) que estejam próximos no espaço de embedding.
Recuperação em larga escala
Para calcular os vizinhos mais próximos no espaço de incorporação, o sistema pode pontuar exaustivamente todos os possíveis candidatos. A pontuação exaustiva pode ser cara para corpora muito grande, mas você pode usar uma das estratégias a seguir para torná-la mais eficiente:
- Se a incorporação da consulta for conhecida estaticamente, o sistema poderá executar uma pontuação completa off-line, pré-calcular e armazenar uma lista dos principais candidatos de cada consulta. Essa é uma prática comum para recomendações de itens relacionados.
- Use vizinhos mais próximos.