Design clássico · Staff
Sistema de recomendação
Projeto de entrevista clássico. Pontos centrais: feature store.
Resposta curta
Projeto de entrevista clássico. Pontos centrais: feature store. Um sistema de recomendação escolhe, para cada pessoa, poucos itens de um catálogo enorme. Este caso usa como referência principal o paper de recomendações do YouTube, que aponta três dificuldades, e é um bom exercício de projeto de sistemas de ML.
01 · CONTEXTO E REQUISITOS
O que um sistema de recomendação precisa resolver
Um sistema de recomendação escolhe, para cada pessoa, poucos itens de um catálogo enorme. Este caso usa como referência principal o paper de recomendações do YouTube, que aponta três dificuldades, e é um bom exercício de projeto de sistemas de ML.
Na escala, o paper afirma que algoritmos de aprendizado distribuído altamente especializados e sistemas de serviço eficientes são essenciais. No frescor, o sistema deve responder bem a conteúdo recém-enviado e às últimas ações do usuário. No ruído, quase nunca se obtém a verdade sobre a satisfação do usuário, e por isso se modelam sinais implícitos e ruidosos.
02 · O FUNIL EM DUAS ETAPAS
Geração de candidatos e ranking
O paper descreve o sistema como duas redes neurais: uma de geração de candidatos e outra de ranking. A primeira recebe eventos do histórico de atividade do usuário e recupera, de um corpus grande, um pequeno subconjunto de vídeos. A segunda atribui uma pontuação a cada vídeo, e os de maior pontuação são apresentados ao usuário, ordenados por ela.
A vantagem da divisão, segundo o paper, é recomendar a partir de um corpus muito grande e ainda ter certeza de que os poucos itens exibidos são personalizados e engajantes. O desenho também permite misturar candidatos vindos de outras fontes.
No diagrama, o aplicativo se liga ao serviço de recomendação, que coordena as duas etapas.
No paper do YouTube, a geração de candidatos recebe eventos do histórico de atividade do usuário e recupera um pequeno subconjunto de vídeos de um corpus grande.
Na etapa de serviço, a pontuação se reduz a uma busca de vizinhos mais próximos no espaço de produto escalar, para a qual bibliotecas de uso geral podem ser usadas.
O ranking atribui uma pontuação a cada vídeo segundo uma função objetivo, usando um conjunto rico de atributos do vídeo e do usuário.
Como só algumas centenas de vídeos são pontuadas, o ranking tem acesso a muito mais atributos do vídeo e da relação do usuário com ele; no diagrama, eles vêm do feature store online.
Os vídeos de maior pontuação são apresentados ao usuário, ordenados pela pontuação.
| Critério | Geração de candidatos | Ranking |
|---|---|---|
| Papel | Reduz o corpus grande a um pequeno subconjunto de candidatos | Atribui uma pontuação a cada vídeo |
| Atributos | Personalização ampla por filtragem colaborativa | Conjunto rico de atributos do vídeo e do usuário |
| Foco | Candidatos relevantes de modo geral, com alta precisão | Representação fina para distinguir a importância relativa, com alto recall |
03 · GERAR CANDIDATOS
Embeddings, vizinhos mais próximos e a escolha do rótulo
Para treinar a geração de candidatos, o paper usa o feedback implícito de assistir: terminar um vídeo é um exemplo positivo. A justificativa é que há ordens de magnitude mais histórico implícito, o que permite recomendar itens na cauda, onde o feedback explícito é extremamente esparso.
Um embedding é um mapeamento de entidades esparsas, como vídeos e usuários, em um vetor denso. Em serviço, pontuar milhões de itens sob latência de dezenas de milissegundos exige um esquema aproximado e sublinear no número de classes; como as verossimilhanças calibradas não são necessárias, o problema se reduz a uma busca de vizinhos mais próximos no espaço de produto escalar.
A escolha do que prever também pesa. O paper gera exemplos de treino a partir de todas as reproduções, inclusive de vídeos incorporados em outros sites, e não só das feitas nas próprias recomendações; do contrário, seria muito difícil o conteúdo novo aparecer e o recomendador ficaria excessivamente enviesado em direção ao aproveitamento (exploitation). O paper também encontrou desempenho muito melhor ao prever a próxima reprodução do usuário do que uma reprodução retirada ao acaso.
04 · RANKING E FEATURE STORE
Atributos ricos, tempo assistido e consistência entre treino e serviço
No ranking só algumas centenas de vídeos são pontuadas, em vez dos milhões da geração de candidatos; por isso o paper diz haver acesso a muito mais atributos do vídeo e da relação do usuário com ele. O ranking também é crucial para combinar fontes de candidatos cujas pontuações não são diretamente comparáveis.
O objetivo final do ranking, segundo o paper, é em geral uma função simples do tempo assistido esperado por impressão. Ranquear por taxa de cliques costuma promover vídeos enganosos que o usuário não completa.
Atributos servidos ao vivo exigem infraestrutura própria: o paper chama de façanha de engenharia, fora do seu escopo, servir o histórico de impressões e reproduções atualizado até o segundo, e o considera vital para recomendações responsivas.
É aqui que entra o feature store. A documentação do Feast o descreve, entre seus componentes, com um armazém offline para extração histórica de atributos usada no treino de modelos, e um armazém online, que serve atributos com baixa latência em sistemas de produção. A mesma documentação diz que ele evita vazamento de dados ao gerar conjuntos de atributos corretos no ponto no tempo, de modo que valores futuros não vazem para os modelos durante o treino.
O diagrama começa no aplicativo, cujos eventos de uso passam por uma fila até um pipeline de atributos.
A documentação do Feast afirma que ele depende de pipelines de dados a montante para produzir os valores dos atributos; aqui, esse papel é do pipeline de atributos.
O armazém offline serve à extração histórica de atributos usada no treino de modelos.
Conjuntos de atributos corretos no ponto no tempo evitam o vazamento de dados: valores futuros dos atributos não chegam ao modelo durante o treino.
O feature store empurra os valores para o armazém online, o que reduz a latência de recuperação dos atributos.
O armazém online serve atributos com baixa latência em produção; no diagrama, o serviço de ranking os lê dali.
O Feast não orquestra fluxos complexos: ele depende de pipelines de dados a montante para produzir os valores dos atributos. Em contrapartida, oferece um catálogo central de definições de atributos, uma única fonte de verdade, e busca disponibilizar atributos de forma consistente para o treino e para o serviço de baixa latência.
05 · FRESCOR E AVALIAÇÃO
Itens novos, repetição e como saber se melhorou
O conteúdo novo importa: o paper observa que usuários preferem conteúdo recente, mas não à custa da relevância. Sistemas de ML costumam ter viés implícito em direção ao passado. Para corrigir isso, o modelo recebe a idade do exemplo de treino como atributo; em serviço, esse atributo vale zero (ou levemente negativo), refletindo previsões feitas no fim da janela de treino.
Atributos sobre a frequência de impressões passadas são críticos para introduzir “churn”, isto é, pedidos sucessivos que não devolvem listas idênticas: se um vídeo foi recomendado recentemente e o usuário não o assistiu, o modelo naturalmente o rebaixa na próxima carga da página.
Na avaliação, o paper usa métricas offline, como precisão, recall e perda de ranking, para guiar as melhorias, mas para a determinação final recorre a testes A/B com experimentos ao vivo, porque os resultados A/B ao vivo nem sempre se correlacionam com os offline.
| Problema | Correção descrita no paper |
|---|---|
| Viés em direção ao passado | Idade do exemplo de treino como atributo |
| Vídeos enganosos | Objetivo baseado em tempo assistido esperado, não em taxa de cliques |
| Listas repetidas | Atributos sobre a frequência de impressões passadas |
| Viés em direção ao aproveitamento | Exemplos de treino de todas as reproduções, não só das recomendadas |
| Rótulo de treino | Prever a próxima reprodução, não uma retirada ao acaso |
06 · EVOLUÇÃO E LIMITES
O que este caso não cobre
Usuários novos são um caso à parte: segundo o paper, atributos demográficos fornecem priors para que as recomendações se comportem de forma razoável para eles.
Para ampliar o desenho em entrevista, vale discutir como medir o sucesso, o que fazer quando o índice de vizinhos ou o armazém online ficam indisponíveis e como incluir outras fontes de candidatos.
Perguntas frequentes
O que é Sistema de recomendação?
Projeto de entrevista clássico. Pontos centrais: feature store.
O que o design de Sistema de recomendação cobre?
Ele está organizado nestas seções: O que um sistema de recomendação precisa resolver, Geração de candidatos e ranking, Embeddings, vizinhos mais próximos e a escolha do rótulo, Atributos ricos, tempo assistido e consistência entre treino e serviço, Itens novos, repetição e como saber se melhorou e O que este caso não cobre.
Quanto tempo leva Sistema de recomendação e qual é o nível?
Leva cerca de 17 minutos para ler e tem nível Staff.
Agora projete você mesmo
Rode este caso como uma entrevista na escola de System Design: você toma as decisões, o tutor as questiona e você vê a nota do seu desenho.