Design clássico · Sênior
Feed de notícias personalizado
Projeto de entrevista clássico. Pontos centrais: multi-task de engajamento, score ponderado e frescor e diversidade.
Resposta curta
Projeto de entrevista clássico. Pontos centrais: multi-task de engajamento, score ponderado e frescor e diversidade. O ranqueamento do News Feed do Facebook decide, para cada pessoa, quais publicações aparecem primeiro. O post de engenharia da Meta descreve o desafio de projetar um ranqueamento personalizado para mais de dois bilhões de pessoas, cada uma com interesses diferentes.
01 · CONTEXTO
Decidir o que cada pessoa vê primeiro
O ranqueamento do News Feed do Facebook decide, para cada pessoa, quais publicações aparecem primeiro. O post de engenharia da Meta descreve o desafio de projetar um ranqueamento personalizado para mais de dois bilhões de pessoas, cada uma com interesses diferentes. A empresa diz que usa aprendizado de máquina para prever qual conteúdo será mais importante para cada pessoa.
Sem aprendizado de máquina, o feed poderia ficar inundado de conteúdo que a pessoa não acha relevante ou interessante, incluindo conteúdo excessivamente promocional ou de conhecidos que postam com frequência, o que pode soterrar o conteúdo de quem ela tem mais proximidade.
A escala complica o problema: é preciso pontuar as publicações disponíveis para mais de dois bilhões de pessoas, com mais de mil publicações por pessoa por dia, em média. Além disso, o sistema precisa saber se um artigo recebeu muitas curtidas mesmo que tenha sido publicado minutos antes.
02 · O OBJETIVO
De uma curtida a vários sinais
O ponto de partida é um sinal observável de valor: a pessoa clicar em curtir. A previsão usa características da publicação, como o tipo ou a relação entre quem vê e quem publicou. O algoritmo ranqueia mais alto o item com maior probabilidade prevista de a pessoa curtir.
Curtir não é a única forma de expressar preferência. Há vários valores, como curtidas, comentários e compartilhamentos, que precisam ser agregados em um único valor por publicação. Às vezes os modelos discordam, e o peso de cada previsão se baseia nas ações que as pessoas dizem, em pesquisas, serem mais significativas.
O objetivo geral é o valor de longo prazo. Para avaliá-lo, o post defende escolher métricas alinhadas ao que as pessoas dizem ser importante para elas, e a empresa pesquisa as pessoas sobre quão significativa foi uma interação ou se uma publicação vale o tempo.
03 · ARQUITETURA
Do pedido ao feed ranqueado
Quando alguém abre o Facebook, em qualquer interface, o pedido vai a uma camada Web/PHP, que consulta o agregador do feed. O agregador coleta as informações relevantes de cada publicação e analisa seus atributos para prever o valor da publicação para a pessoa e calcular a pontuação final, agregando todas as previsões.
O diagrama começa pelo cliente, seja um iPhone, um Android ou um navegador, que envia o pedido à camada Web/PHP.
A camada Web/PHP consulta o agregador do feed.
O agregador busca ações e objetos, com um resumo do objeto, nos bancos folha do feed.
Os modelos rodam sobre todas as histórias candidatas em paralelo, em várias máquinas chamadas preditores.
O agregador devolve a lista de histórias ranqueadas ao front-end, que a renderiza para a pessoa.
04 · CANDIDATOS E PASSADAS
Inventário, funil e diversidade
O inventário elegível inclui qualquer publicação não apagada, compartilhada por amigo, grupo ou página com quem a pessoa se conecta, feita desde o último login. Há também lógica de reaparecimento: publicações novas que a pessoa não viu, mas que foram ranqueadas em sessões anteriores, voltam a ser elegíveis, e publicações já vistas que geraram uma conversa interessante entre amigos podem ser elegíveis de novo como publicação impulsionada por comentário.
A pontuação acontece em várias passadas, necessárias para economizar poder computacional e aplicar regras, como a diversidade de tipos de conteúdo, que dependem de uma pontuação inicial. Antes delas, processos de integridade são aplicados a cada publicação.
O diagrama começa pelo inventário elegível, que reúne as publicações desde o último login e as que voltam a ser elegíveis.
Processos de integridade são aplicados a cada publicação antes das passadas de pontuação.
Um modelo leve seleciona cerca de quinhentas das publicações mais relevantes entre as elegíveis.
Na passada principal, cada história é pontuada de forma independente e as elegíveis são ordenadas por pontuação.
Na passada contextual entram regras como a diversidade de tipos de conteúdo.
| Passada | O que faz | Por que existe |
|---|---|---|
| Leve | Seleciona, com um modelo leve, as publicações mais relevantes entre as elegíveis | Permite ranquear menos histórias, com alto recall, e usar redes neurais mais poderosas nas passadas seguintes |
| Principal | Pontua cada história de forma independente e ordena as elegíveis por pontuação | É onde acontece a maior parte da personalização |
| Contextual | Adiciona atributos contextuais, como regras de diversidade de tipo de conteúdo | Evita que a pessoa veja tipos de conteúdo redundantes, como vários vídeos em sequência |
05 · O SCORE
Das previsões multitarefa à combinação linear
Cada publicação é pontuada com redes neurais multitarefa. Os atributos incluem o tipo da publicação, embeddings, isto é, representações geradas por modelos de aprendizado profundo, e o que a pessoa costuma interagir. Para cada pessoa, há milhares de sinais a avaliar.
O diagrama começa pelos atributos que alimentam o modelo: tipo da publicação, embeddings e o que a pessoa costuma interagir.
A rede neural multitarefa recebe os atributos e pontua a publicação.
O sistema gera várias previsões para a pessoa, como curtir, comentar e compartilhar.
As previsões são combinadas de forma linear em um único valor por publicação.
Uma ação rara, com previsão próxima de zero, tem papel mínimo no resultado.
Por simplicidade e tratabilidade, as previsões são combinadas de forma linear. Para algumas pessoas, o score pode ser maior para curtidas do que para comentários, porque há quem se expresse mais curtindo. Uma vantagem do formato é que uma ação com que a pessoa raramente interage, como uma previsão de curtida muito próxima de zero, automaticamente tem papel mínimo no ranqueamento.
06 · FRESCOR E LIMITES
Frescor, diversidade e o que levar para a entrevista
O frescor aparece em mais de um lugar. O sistema precisa saber, em tempo real, se um artigo recebeu muitas curtidas mesmo publicado minutos antes, e também se a pessoa curtiu muito conteúdo um minuto antes, para usar isso no ranqueamento. A lógica de reaparecimento faz publicações ainda não vistas serem reconsideradas.
A diversidade, por sua vez, entra na passada contextual, porque regras como a variedade de tipos de conteúdo dependem de uma pontuação inicial.
O post cita ainda sistemas de aprendizado offline entre as técnicas por trás dos modelos de interações significativas e de qualidade de conteúdo.
Perguntas frequentes
O que é Feed de notícias personalizado?
Projeto de entrevista clássico. Pontos centrais: multi-task de engajamento, score ponderado e frescor e diversidade.
O que o design de Feed de notícias personalizado cobre?
Ele está organizado nestas seções: Decidir o que cada pessoa vê primeiro, De uma curtida a vários sinais, Do pedido ao feed ranqueado, Inventário, funil e diversidade, Das previsões multitarefa à combinação linear e Frescor, diversidade e o que levar para a entrevista.
Quanto tempo leva Feed de notícias personalizado e qual é o nível?
Leva cerca de 16 minutos para ler e tem nível Sênior.
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.