
Resumo — O feed do Pinterest parece mágico: como ele sabe exatamente qual pin de receita ou decoração você quer ver, dentre bilhões de opções? A resposta é um dos papers mais influentes da área de grafos: o PinSage. O Pinterest modelou seu ecossistema como um imenso grafo de usuários, pins e pastas, e desenvolveu uma GNN (Graph Neural Network) para “passear” por esse grafo e aprender o “DNA” (embedding) de cada pin. O resultado é um sistema de recomendação que escala para bilhões de itens e definiu uma geração de GNNs industriais.
1. O Problema: Um Grafo (Tri)partido de Bilhões de Arestas
Para entender o PinSage, primeiro precisamos ver o Pinterest como um grafo. Ele não é apenas uma coleção de imagens, mas sim um mapa de conexões:
- Nós (Entidades): Temos principalmente
Usuários,Pins(as imagens/links) eBoards(as pastas onde os pins são salvos). - Arestas (Relações): As conexões são ações como
(usuáriosalvou o pin) ou(pinpertence ao board).
Isso forma um grafo gigantesco e heterogêneo. O desafio de recomendação é: dado um pin que você está vendo agora (o “query pin”), quais são os outros pins que são mais parecidos ou relevantes para ele, em todo o universo de bilhões de pins?
Abordagens “clássicas” (como as que vimos no post da Netflix) teriam dificuldades. A Fatoração Matricial pura, por exemplo, não aproveitaria o rico conteúdo de cada pin (a imagem em si e o texto da descrição).
2. A Ideia-Chave do PinSage: GNNs com “Passeios Aleatórios”
A solução do Pinterest foi criar uma Graph Neural Network (GNN) para aprender um embedding — um “DNA” numérico — para cada pin. A grande ideia do PinSage é que o DNA de um pin deve ser uma combinação de duas coisas:
- O Conteúdo do Pin: O que a imagem mostra e o que o texto diz (isso é extraído por modelos de visão computacional e NLP).
- A Vizinhança do Pin: Quais outros pins estão “perto” dele no grafo? (ex: pins que são salvos nas mesmas pastas).
Aqui surge o desafio de engenharia: como você “olha” a vizinhança de um nó em um grafo com bilhões de conexões? A resposta do PinSage é brilhante: você não olha tudo, você amostra de forma inteligente.
O PinSage introduziu duas inovações cruciais:
Inovação 1: Amostragem por “Passeios Aleatórios” (Random Walks) Em vez de tentar processar todos os vizinhos de um pin (o que seria impossível), o PinSage simula “passeios aleatórios” a partir dele. É como soltar 50 “exploradores” virtuais que pulam de pin em pin, seguindo as conexões do grafo (ex: de um pin para uma pasta, dessa pasta para outro pin).
Os nós que são visitados com mais frequência por esses “exploradores” são considerados os vizinhos mais importantes. O PinSage foca seu poder computacional apenas nesses vizinhos amostrados.
Inovação 2: Agregação por Importância Uma vez que temos a amostra de vizinhos importantes, a GNN “agrega” a informação deles. O PinSage usa um agregador (como uma média ponderada ou um pooling) para combinar os embeddings dos vizinhos e fundi-los com o embedding de conteúdo do pin original. O resultado desse processo é o embedding final do PinSage: um vetor denso que captura tanto o conteúdo quanto o contexto do pin no grafo.
3. O Pipeline de Produção: Um Funil de Duas Etapas
Na prática, gerar recomendações em tempo real exige velocidade. O PinSage (que é pesado para rodar) é usado “offline” para calcular os embeddings de todos os pins. O sistema de recomendação ao vivo funciona como um funil:
Etapa 1: Geração de Candidatos (Rápida) Quando você precisa de uma recomendação, o sistema pega o embedding do seu “pin-query” e usa um sistema de busca por similaridade ultrarrápido (como ANN – Approximate Nearest Neighbors, ex: FAISS ou ScaNN) para encontrar os pins (ex: ) cujos embeddings são mais parecidos. Esta etapa é um “filtro grosso” que reduz bilhões de opções para mil.
Etapa 2: Re-ranqueamento (Inteligente) Esses 1000 pins candidatos são então passados para um segundo modelo, mais complexo e caro (que pode ser outra GNN ou um modelo de ML mais pesado). Este modelo de “re-ranking” analisa os 1000 candidatos com mais cuidado, usando features adicionais (como recência, seu histórico, diversidade), e gera a lista final de 10-20 pins que você vê na tela.
4. Lições do PinSage: O Blueprint da GNN Industrial
O paper do PinSage (KDD 2018) é considerado um marco porque foi a primeira vez que uma arquitetura GNN (baseada na GraphSAGE) foi comprovadamente escalada para um grafo de recomendação de tamanho web-scale (bilhões de nós).
Ele estabeleceu um blueprint de engenharia que é usado até hoje:
- Amostragem é a Chave: O Random walk sampling (ou suas variantes) tornou as GNNs viáveis em grafos gigantes.
- Features + Estrutura: A forma mais poderosa de GNN é aquela que combina features de conteúdo (texto, imagem) com a estrutura do grafo.
- Treinamento com Negativos Difíceis: O PinSage foi treinado para diferenciar um pin “bom” não de um pin aleatório (fácil), mas de um pin “ruim” que é muito parecido com o bom. Isso torna o modelo muito mais robusto.
- Evolução: O PinSage abriu caminho para arquiteturas mais recentes e eficientes, como a LightGCN (que simplifica a GNN) e a NGCF (que foca na estrutura), que se tornaram baselines fortes na área.
Conclusão
O PinSage é um estudo de caso fundamental que vai além do Pinterest. Ele é a prova de que as GNNs não são apenas conceitos acadêmicos, mas ferramentas de engenharia robustas capazes de resolver problemas de recomendação em uma escala que era impensável com algoritmos anteriores. Ele uniu, de forma elegante, a teoria dos grafos (random walks), o deep learning (GNNs) e a engenharia de sistemas (ANN) para criar valor de negócio real.
Referências
- Ying, R. et al. (2018). Graph Convolutional Neural Networks for Web-Scale Recommender Systems (PinSage). KDD 2018.
- He, X. et al. (2020). LightGCN: Simplifying and Powering Graph Convolutional Networks for Recommendation. SIGIR 2020.
- Wang, X. et al. (2019). Neural Graph Collaborative Filtering (NGCF). SIGIR 2019.
- Adamic, L. A., & Adar, E. (2003). Friends and Neighbors on the Web. Social Networks.
Sobre o autor
Rener Menezes
Cofundador & CTO — FitBank
Rener Menezes é cofundador e CTO do FitBank, fintech brasileira de Banking-as-a-Service. Com mais de 25 anos de experiência projetando sistemas financeiros em larga escala, é bacharel em Sistemas de Informação e mestrando na Unifor, onde pesquisa Redes Neurais de Grafos e aprendizado por reforço para detecção de fraude. Interesses: sistemas distribuídos, infraestrutura de pagamentos e graph ML.
Links: LinkedIn · ORCID · contato@grafolab.ia.br
Deixe uma resposta