quando se trata do algoritmo de feed de notícias, existem muitas teorias e mitos. A maioria das pessoas entende que há um algoritmo no trabalho, e muitos conhecem alguns dos fatores que informam esse algoritmo (se você gosta de um post ou se envolve com ele, etc.). Mas ainda há muita coisa que é mal compreendida.
compartilhamos publicamente muitos dos detalhes e recursos do Feed de notícias. Mas sob o capô, o sistema de classificação machine learning (ML) que alimenta o feed de notícias é incrivelmente complexo, com muitas camadas. Estamos compartilhando novos detalhes sobre como nosso sistema de classificação funciona e os desafios de construir um sistema para personalizar o conteúdo para mais de 2 bilhões de pessoas e mostrar a cada um deles conteúdo relevante e significativo para elas, toda vez que elas chegam ao Facebook.
o que há de tão difícil nisso?
Primeiro, o volume é enorme. Mais de 2 bilhões de pessoas em todo o mundo usam o Facebook. Para cada uma dessas pessoas, existem mais de mil postagens “candidatas” (ou postagens que podem aparecer no feed dessa pessoa). Agora estamos falando de trilhões de postagens em todas as pessoas no Facebook.
agora considere que para cada pessoa no Facebook, existem milhares de sinais que precisamos avaliar para determinar o que essa pessoa pode achar mais relevante. Portanto, temos trilhões de postagens e milhares de sinais — e precisamos prever o que cada uma dessas pessoas quer ver em seu feed instantaneamente. Quando você abre o Facebook, esse processo acontece em segundo plano apenas no segundo ou mais necessário para carregar seu Feed de notícias.
e uma vez que temos tudo isso funcionando, as coisas mudam, e precisamos levar em consideração novos problemas que surgem, como clickbait e a disseminação de desinformação. Quando isso acontece, precisamos encontrar novas soluções. Na realidade, o sistema de classificação não é apenas um único algoritmo; são várias camadas de modelos e classificações de ML que aplicamos para prever o conteúdo mais relevante e significativo para cada usuário. À medida que avançamos em cada etapa, o sistema de classificação restringe esses milhares de postagens de candidatos às poucas centenas que aparecem no Feed de notícias de alguém a qualquer momento.
como funciona?
simplificando, o sistema determina quais postagens aparecem em seu Feed de notícias e em que ordem, prevendo o que é mais provável que você esteja interessado ou se envolva. Essas previsões são baseadas em uma variedade de fatores, incluindo o que e com quem você seguiu, gostou ou se envolveu recentemente. Para entender como isso funciona na prática, vamos começar com o que acontece com uma pessoa fazendo login no Facebook: vamos chamá-lo de Juan.
desde o login de Juan ontem, seu amigo Wei postou uma foto de seu cocker spaniel. Outra amiga, Saanvi, postou um vídeo de sua corrida matinal. Sua página favorita publicou um artigo interessante sobre a melhor maneira de ver a Via Láctea à noite, enquanto seu grupo de culinária favorito postou quatro novas receitas de massa fermentada.
todo esse conteúdo provavelmente será relevante ou interessante para Juan porque ele escolheu seguir as pessoas ou páginas que o compartilham. Para decidir qual dessas coisas deve parecer maior no Feed de notícias de Juan, precisamos prever o que mais importa para ele e qual conteúdo carrega o maior valor para ele. Em termos matemáticos, precisamos definir uma função objetiva para Juan e realizar uma otimização de objetivo único.
podemos usar as características de uma postagem, Como quem é marcado em uma foto e quando foi postado, para prever se Juan pode gostar. Por exemplo, se Juan tende a interagir com as postagens de Saanvi (por exemplo., compartilhando ou comentando) muitas vezes e seu vídeo em execução é muito recente, há uma grande probabilidade de que Juan goste de sua postagem. Se Juan se envolveu com mais conteúdo de vídeo do que fotos no passado, a previsão semelhante para a foto de Wei de seu cocker spaniel pode ser bastante baixa. Nesse caso, nosso algoritmo de classificação classificaria o vídeo em execução de Saanvi mais alto do que a foto do cão de Wei porque prevê uma probabilidade maior de que Juan gostaria.
mas gostar não é a única maneira de as pessoas expressarem suas preferências no Facebook. Todos os dias, as pessoas compartilham artigos que acham interessantes, assistem a vídeos de pessoas ou celebridades que seguem ou deixam comentários atenciosos nas postagens de seus amigos. Matematicamente, as coisas ficam mais complexas quando precisamos otimizar para vários objetivos que somam ao nosso objetivo principal: criar o valor mais longo para as pessoas, mostrando-lhes conteúdo significativo e relevante para elas.
vários modelos de ML produzem várias previsões para Juan: a probabilidade de ele se envolver com a foto de Wei, o vídeo de Saanvi, o Artigo da Via Láctea ou as receitas de fermento. Cada modelo tenta classificar essas peças de conteúdo para Juan. Às vezes eles discordam — pode haver uma probabilidade maior de que Juan gostaria do vídeo em execução de Saanvi do que o Artigo da Via Láctea, mas ele pode ser mais propenso a comentar o artigo do que no vídeo. Portanto, precisamos de uma maneira de combinar essas previsões variadas em uma pontuação otimizada para nosso objetivo principal de valor de longo prazo.Como podemos medir se algo cria valor a longo prazo para uma pessoa? Nós perguntamos a eles. Por exemplo, pesquisamos as pessoas para perguntar o quão significativo elas encontraram uma interação com seus amigos ou se uma postagem valeu o tempo delas para que nosso sistema reflita o que as pessoas dizem que gostam e acham significativo. Então podemos levar em conta cada Previsão para Juan com base nas ações que as pessoas nos dizem (por meio de pesquisas) são mais significativas e valem seu tempo.
retirando as camadas
para classificar mais de mil postagens por usuário, por dia, para mais de 2 bilhões de pessoas — em tempo real — precisamos tornar o processo eficiente. Gerenciamos isso em várias etapas, estrategicamente organizadas para torná-lo rápido e limitar a quantidade de recursos de computação necessários.
Primeiro, o sistema coleta todas as postagens candidatas que podemos classificar para Juan (a foto cocker spaniel, o vídeo em execução, etc.). Este inventário elegível inclui qualquer postagem compartilhada com Juan por um amigo, grupo ou Página à qual ele está conectado que foi feita desde seu último login e não foi excluída. Mas como devemos lidar com postagens criadas antes do último login de Juan que ele ainda não viu?
para garantir que postagens não vistas sejam reconsideradas, aplicamos uma lógica não lida: novas postagens que foram classificadas para Juan (mas não vistas por ele) em suas sessões anteriores são adicionadas ao inventário elegível para esta sessão. Também aplicamos uma lógica de ação para que quaisquer postagens que Juan já tenha visto que desencadearam uma conversa interessante entre seus amigos também sejam adicionadas ao inventário elegível.
em seguida, o sistema precisa marcar cada postagem para uma variedade de fatores, como o tipo de postagem, semelhança com outros itens e quanto a postagem corresponde ao que Juan tende a interagir. Para calcular isso para mais de 1.000 postagens, para cada um dos bilhões de Usuários — tudo em tempo real — executamos esses modelos para todas as histórias de candidatos em paralelo em várias máquinas, chamadas preditores.
antes de combinarmos todas essas previsões em uma única pontuação, precisamos aplicar algumas regras adicionais. Esperamos até depois de termos essas primeiras previsões para que possamos restringir o pool de postagens a serem classificadas — e as aplicamos em vários passes para economizar poder computacional.
Primeiro, certos processos de integridade são aplicados a cada postagem. Estes são projetados para determinar quais medidas de detecção de integridade, se houver, precisam ser aplicadas às histórias selecionadas para classificação. Na próxima passagem, um modelo leve restringe o grupo de candidatos a aproximadamente 500 dos posts mais relevantes para Juan. Classificar menos histórias nos permite usar modelos de rede neural mais poderosos para os próximos passes.
em seguida é o passe de pontuação principal, onde a maior parte da personalização acontece. Aqui, uma pontuação para cada história é calculada de forma independente e, em seguida, todas as 500 postagens são colocadas em ordem por Pontuação. Para alguns, a pontuação pode ser maior para Curtidas do que para comentários, já que algumas pessoas gostam de se expressar mais gostando do que comentando. Qualquer ação em que uma pessoa raramente se envolve (por exemplo, uma previsão semelhante que é muito próxima de zero) obtém automaticamente um papel mínimo na classificação, pois o valor previsto é muito baixo. Finalmente, executamos o passe contextual, no qual recursos contextuais como regras de diversidade de tipo de conteúdo são adicionados para garantir que o feed de notícias de Juan tenha uma boa mistura de tipos de Conteúdo e que ele não esteja vendo várias postagens de vídeo, Uma após a outra. Todas essas etapas de classificação acontecem no tempo que leva para Juan abrir o aplicativo do Facebook e, em segundos, ele tem um Feed de notícias Marcado que está pronto para ele navegar e aproveitar.