Previsão de links e classificação de grafos
Tarefa de previsão de arestas, amostragem negativa, agrupamento no nível do grafo e GINConv para classificação de grafos.
Previsão de links e classificação de grafos é uma aula grátis de Learn AI with Python no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Learn AI with Python, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Learn AI with Python inclui 4 aulas no total.
Duas novas tarefas em grafos
Além de classificar nós, as GNNs lidam com:
- Previsão de conexões: existirá uma aresta entre dois nós? (sugestões de amizade, interações entre medicamentos)
- Classificação de grafos: atribuir um rótulo a um grafo inteiro (essa molécula é tóxica?)
Configuração da previsão de conexões
Na previsão de conexões, primeiro calculamos as representações vetoriais dos nós com uma GNN e depois pontuamos pares candidatos de nós. Uma pontuação alta significa que o modelo acredita que uma aresta deve conectá-los.
Pontuando uma aresta
Uma pontuação comum para uma aresta é o produto escalar das duas representações vetoriais dos nós: score = dot(h_u, h_v). Representações vetoriais semelhantes produzem um produto escalar alto, prevendo uma conexão provável.
h = gnn(data.x, data.edge_index) # node embeddings
score = (h[u] * h[v]).sum(dim=-1) # dot product per pairAmostragem negativa
O grafo lista apenas as arestas existentes (positivas). Para treinar um classificador, também precisamos de pares sem aresta. A amostragem negativa seleciona aleatoriamente pares de nós que não estão conectados como exemplos negativos, equilibrando o conjunto de treinamento.
from torch_geometric.utils import negative_sampling
neg_edge_index = negative_sampling(
edge_index=data.edge_index,
num_nodes=data.num_nodes,
num_neg_samples=data.edge_index.size(1),
)BCEWithLogitsLoss
A previsão de conexões é binária (aresta ou ausência de aresta). Pontuamos os pares positivos e negativos, atribuímos a eles os rótulos 1 e 0 e treinamos com BCEWithLogitsLoss, que combina uma sigmoide com a entropia cruzada binária de forma numericamente estável.
import torch
pos = (h[pos_u] * h[pos_v]).sum(-1)
neg = (h[neg_u] * h[neg_v]).sum(-1)
scores = torch.cat([pos, neg])
labels = torch.cat([torch.ones_like(pos), torch.zeros_like(neg)])
loss = torch.nn.functional.binary_cross_entropy_with_logits(scores, labels)Mudando para a classificação de grafos
Para a classificação de grafos, precisamos de um único vetor por grafo, não por nó. Depois que as camadas GNN produzem as representações vetoriais dos nós, nós as agregamos em uma representação no nível do grafo.
global_mean_pool
global_mean_pool calcula a média de todas as representações vetoriais dos nós de um grafo para produzir um vetor de tamanho fixo, independentemente do tamanho do grafo. Um índice batch informa quais nós pertencem a cada grafo quando os grafos são agrupados.
from torch_geometric.nn import global_mean_pool
h = gnn(x, edge_index) # [num_nodes, dim]
hg = global_mean_pool(h, batch) # [num_graphs, dim]
logits = classifier(hg)Por que a agregação é importante
A agregação torna o modelo invariante à ordenação dos nós e ao tamanho do grafo: dois grafos isomorfos produzem o mesmo vetor agregado. A agregação pela média é simples; a agregação pela soma e pelo máximo são alternativas com sensibilidades diferentes.
GINConv
GINConv (Rede de Isomorfismo de Grafos) é uma convolução mais expressiva. Ela usa uma MLP e uma agregação por soma projetadas especificamente para maximizar o poder discriminativo da passagem de mensagens em tarefas no nível do grafo.
from torch_geometric.nn import GINConv
import torch
mlp = torch.nn.Sequential(
torch.nn.Linear(in_dim, hid),
torch.nn.ReLU(),
torch.nn.Linear(hid, hid),
)
conv = GINConv(mlp)A conexão com Weisfeiler-Leman
GIN foi projetada para ser tão poderosa quanto o teste de Weisfeiler-Leman (WL), um algoritmo clássico para distinguir grafos não isomorfos. Muitas GNNs mais simples não conseguem diferenciar determinados grafos; GIN consegue, dentro dos limites do teste WL, o que a torna forte para a classificação de grafos.
Escolhendo a ferramenta certa
Associe a arquitetura à tarefa:
- Predição de links: representações vetoriais de GNN + pontuação por produto escalar + amostragem negativa + perda BCE
- Classificação de grafos: convoluções expressivas, como GINConv + agrupamento global + classificador
Verificação rápida
Teste seus conhecimentos.
Recapitulação
Você aprendeu sobre predição de links e classificação de grafos:
- Pontuação da aresta =
dot(h_u, h_v), treinada com amostragem negativa e perda de entropia cruzada binária com logits - global_mean_pool transforma as representações vetoriais dos nós em um vetor no nível do grafo
- GINConv é altamente expressiva e corresponde ao teste de Weisfeiler-Leman
Perguntas Frequentes
A aula “Previsão de links e classificação de grafos” é grátis?
Sim — o texto completo de “Previsão de links e classificação de grafos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Learn AI with Python, atualize para CoddyKit PRO. O curso de Learn AI with Python inclui 4 aulas no total.
O que vou aprender em “Previsão de links e classificação de grafos”?
Tarefa de previsão de arestas, amostragem negativa, agrupamento no nível do grafo e GINConv para classificação de grafos. Você pratica Learn AI with Python com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Learn AI with Python?
Nenhuma experiência prévia é necessária. Learn AI with Python no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Previsão de links e classificação de grafos”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Learn AI with Python?
Sim. Cada aula de Learn AI with Python inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Teoria dos grafos para aprendizado de máquina
- Redes convolucionais de grafos (GCN)
- Classificação de nós com GNN
- Previsão de links e classificação de grafos