Arquitetura real · Sênior
YouTube DNN Recommendations (2016)
Arquitetura real em produção. Pontos centrais: geração de candidatos como classificação extrema, watch time esperado e example age.
Resposta curta
Arquitetura real em produção. Pontos centrais: geração de candidatos como classificação extrema, watch time esperado e example age. O caso resume o artigo "Deep Neural Networks for YouTube Recommendations", apresentado no RecSys em setembro de 2016. Segundo os autores, o YouTube passou por uma mudança de paradigma rumo ao uso de aprendizado profundo como solução de propósito geral para quase…
01 · CONTEXTO
Um funil de duas redes
O caso resume o artigo "Deep Neural Networks for YouTube Recommendations", apresentado no RecSys em setembro de 2016. Segundo os autores, o YouTube passou por uma mudança de paradigma rumo ao uso de aprendizado profundo como solução de propósito geral para quase todos os problemas de aprendizado.
O artigo aponta três desafios: escala, porque algoritmos que funcionam bem em problemas pequenos falham nessa escala; frescor, porque o acervo é dinâmico e o sistema precisa modelar vídeos recém-enviados e as últimas ações do usuário; e ruído, porque o comportamento histórico é difícil de prever e o sinal disponível é feedback implícito ruidoso.
Em termos de design de sistemas de ML, o sistema é composto por duas redes neurais, uma para geração de candidatos e outra para ranking. A primeira recebe eventos do histórico de atividade do usuário e recupera um subconjunto pequeno, na casa das centenas, de vídeos de um acervo grande, oferecendo apenas personalização ampla por filtragem colaborativa. A segunda dá uma nota a cada vídeo com um conjunto rico de atributos do vídeo e do usuário, e os de maior nota são mostrados em ordem.
O app pede as recomendações ao serviço de recomendação.
A rede de geração de candidatos recebe eventos do histórico de atividade do usuário e reduz o acervo grande a um subconjunto pequeno, na casa das centenas.
Candidatos de outras fontes podem ser misturados aos da rede de geração de candidatos.
O ranking pontua cada candidato. Como são só algumas centenas de vídeos, cabe usar muito mais atributos do vídeo e da relação do usuário com ele.
Os vídeos de maior nota chegam ao app, ordenados pela nota.
02 · CANDIDATOS
Recomendar como classificação extrema
Os autores formulam a recomendação como classificação multiclasse extrema: prever qual vídeo específico será assistido num dado momento, entre milhões de vídeos (as classes). A rede aprende um embedding do usuário, função do histórico e do contexto, útil para discriminar entre vídeos com um classificador softmax.
Para treinar, usam o feedback implícito das reproduções, em que o usuário concluir um vídeo é um exemplo positivo. A escolha se baseia na quantidade, ordens de grandeza maior, de histórico implícito, que permite recomendar bem na cauda, onde o feedback explícito é muito escasso.
Treinar com milhões de classes exige um atalho: amostram-se classes negativas da distribuição de fundo (candidate sampling) e corrige-se a amostragem por importance weighting; para cada exemplo, minimiza-se a entropia cruzada do rótulo verdadeiro e das classes negativas amostradas.
No treino, o histórico de reproduções vira exemplos: concluir um vídeo é exemplo positivo (feedback implícito).
Para treinar com milhões de classes, o treino amostra classes negativas e minimiza a entropia cruzada do rótulo verdadeiro e dos negativos amostrados.
Os embeddings dos vídeos são aprendidos em conjunto com os demais parâmetros do modelo, e a rede aprende o embedding do usuário como função do histórico e do contexto.
Ao servir, a rede do usuário transforma o histórico e o contexto em um vetor do usuário.
Como as probabilidades calibradas do softmax não são necessárias, a pontuação vira uma busca dos vizinhos mais próximos, no produto escalar, entre o vetor do usuário e os vetores dos vídeos.
Pontuar milhões de itens com latência de dezenas de milissegundos exige um esquema aproximado e sublinear no número de classes.
Ao servir, é preciso obter as classes mais prováveis para escolher as primeiras a apresentar. Pontuar milhões de itens com latência de dezenas de milissegundos exige um esquema aproximado e sublinear no número de classes. Como as probabilidades calibradas do softmax não são necessárias, o problema vira uma busca de vizinhos mais próximos no espaço do produto escalar, para a qual bibliotecas de propósito geral servem. Os autores relatam que os resultados dos testes A/B não foram particularmente sensíveis ao algoritmo escolhido.
A entrada é o histórico de reproduções, uma sequência de IDs de vídeos mapeada para um vetor denso por embeddings. O histórico de busca é tratado de forma parecida, e atributos demográficos fornecem priors para que as recomendações se comportem de forma razoável para usuários novos.
03 · FRESCOR
A idade do exemplo
Recomendar conteúdo recém-enviado é extremamente importante para o YouTube como produto. O problema, segundo o artigo, é que sistemas de aprendizado de máquina costumam ter um viés implícito para o passado, porque são treinados para prever o futuro.
A popularidade dos vídeos é muito não estacionária, mas a distribuição que o recomendador produz reflete a probabilidade média de reprodução na janela de treino, de várias semanas. Para corrigir isso, os autores passam a idade do exemplo de treino como atributo durante o treino.
| Situação | Idade do exemplo |
|---|---|
| No treino | A idade do exemplo de treino entra como atributo |
| Ao servir | Fica em zero (ou levemente negativa), para refletir que a previsão ocorre no fim da janela de treino |
| Sem o atributo | O modelo preveria aproximadamente a probabilidade média na janela de treino |
04 · RANKING
Prever o tempo assistido
O papel principal do ranking é usar dados de impressão para especializar e calibrar as previsões dos candidatos para a interface do usuário. Como só algumas centenas de vídeos são pontuados, em vez dos milhões da geração de candidatos, há 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 notas não são diretamente comparáveis.
Os sinais mais importantes descrevem a interação anterior do usuário com o próprio item e com itens semelhantes, por exemplo quantos vídeos ele já assistiu daquele canal. Atributos sobre a frequência de impressões passadas são críticos para introduzir variação (churn) nas recomendações, isto é, pedidos sucessivos não devolvem listas idênticas.
| Objetivo | O que o artigo diz |
|---|---|
| Taxa de cliques | Costuma promover vídeos enganosos que o usuário não completa (clickbait) |
| Tempo assistido | Captura melhor o engajamento |
| Objetivo final do ranking | Ajustado o tempo todo por testes A/B ao vivo; em geral uma função simples do tempo assistido esperado por impressão |
Para prever o tempo assistido esperado, usam regressão logística ponderada: as impressões positivas (clicadas) recebem peso igual ao tempo assistido observado, e as negativas (não clicadas) recebem peso unitário. Na inferência, a função exponencial é a ativação final e produz as chances que estimam de perto o tempo assistido esperado.
Aumentar a largura e a profundidade das camadas ocultas melhora os resultados, mas o custo é o tempo de CPU do servidor na inferência. A configuração que parte de uma camada ReLU de 1024 unidades e termina em uma de 256 deu os melhores resultados e ainda coube no orçamento de CPU de serving.
05 · LIÇÕES
Rótulo, contexto e testes ao vivo
Uma lição central é que a escolha do problema substituto (surrogate) tem importância desproporcional no desempenho em testes A/B, mas é muito difícil de medir com experimentos offline. Os autores lembram que os resultados A/B ao vivo nem sempre se correlacionam com os offline, e a determinação final da eficácia de um modelo vem de testes ao vivo.
Muitos sistemas de filtragem colaborativa escondem um item aleatório do histórico e o preveem a partir dos demais, . No artigo, reverte-se o histórico: escolhe-se uma reprodução aleatória e usam-se como entrada só as ações anteriores a ela. Os autores encontraram desempenho bem melhor ao prever a próxima reprodução, e concluem que classificar uma reprodução futura foi bem em métricas ao vivo ao capturar o comportamento assimétrico de co-reprodução e evitar o vazamento de informação futura.
Os exemplos de treino vêm de todas as reproduções do YouTube, inclusive as embutidas em outros sites, e não só das reproduções nas recomendações; caso contrário, seria difícil para conteúdo novo aparecer e o recomendador ficaria enviesado demais para a exploitation. Gerar um número fixo de exemplos por usuário pesa os usuários igualmente na perda e impediu que um pequeno grupo de usuários muito ativos dominasse a perda.
Também é preciso reter informação do classificador, para que ele não explore a estrutura do site e sobreajuste o problema substituto. No exemplo do artigo, reproduzir a última página de busca do usuário como recomendação da página inicial funciona muito mal; ao descartar a informação de sequência e representar as buscas como um saco de tokens sem ordem, o classificador deixa de saber diretamente a origem do rótulo.
Perguntas frequentes
O que é YouTube DNN Recommendations (2016)?
Arquitetura real em produção. Pontos centrais: geração de candidatos como classificação extrema, watch time esperado e example age.
O que o design de YouTube DNN Recommendations (2016) cobre?
Ele está organizado nestas seções: Um funil de duas redes, Recomendar como classificação extrema, A idade do exemplo, Prever o tempo assistido e Rótulo, contexto e testes ao vivo.
Quanto tempo leva YouTube DNN Recommendations (2016) e qual é o nível?
Leva cerca de 17 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.