0Pricing
Learn AI with Python · Aula

Redes convolucionais de grafos (GCN)

Estrutura de passagem de mensagens, GCNConv, agregação de atributos dos nós e configuração do PyTorch Geometric.

Redes convolucionais de grafos (GCN) é uma aula grátis de Learn AI with Python no CoddyKit. Esta é a aula 2 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.

Das redes convolucionais às GCNs

As redes convolucionais exploram a estrutura em grade das imagens. Uma Rede Convolucional em Grafos (GCN) generaliza a convolução para grafos irregulares, permitindo que cada nó atualize sua representação usando informações de seus vizinhos. Isso lida com dados que não têm uma grade fixa.

Propagação de mensagens

As GCNs seguem a estrutura de propagação de mensagens: em cada camada, todo nó (1) coleta mensagens de seus vizinhos, (2) agrega essas mensagens e (3) atualiza sua própria representação vetorial. Empilhar camadas permite que as informações percorram o grafo.

Agregação de vizinhos

A operação central é a agregação dos atributos dos vizinhos. Uma camada GCN simples calcula a média dos vetores de atributos dos vizinhos de um nó (incluindo o próprio nó) e, em seguida, aplica uma transformação linear aprendida e uma não linearidade.

# For each node v:
#   h_v = activation( W * mean(features of v and its neighbors) )

Por que normalizar a matriz de adjacência

Nós com muitos graus dominariam o resultado se somássemos os vizinhos de forma ingênua. A GCN usa a matriz de adjacência normalizada para dimensionar as contribuições, mantendo estável a magnitude das representações vetoriais dos nós entre nós com graus diferentes.

A fórmula de normalização

A normalização simétrica adiciona laços próprios e depois escala pelos graus dos nós, sendo escrita como D^(-1/2) (A + I) D^(-1/2). Adicionar a identidade I permite que um nó mantenha seus próprios atributos durante a agregação.

# A_hat = A + I  (add self-loops)
# D_hat = degree matrix of A_hat
# A_norm = D_hat^(-1/2) * A_hat * D_hat^(-1/2)

PyTorch Geometric

PyTorch Geometric (PyG) é a biblioteca padrão para GNNs no PyTorch. Ela fornece camadas prontas, como GCNConv, que implementam a convolução com propagação de mensagens normalizada para você.

import torch
import torch.nn.functional as F
from torch_geometric.nn import GCNConv

Uma única camada GCNConv

GCNConv(in_channels, out_channels) cria uma convolução em grafo. Ela recebe a matriz de atributos dos nós x e o edge_index (a conectividade do grafo no formato COO) e retorna representações vetoriais atualizadas dos nós.

conv = GCNConv(in_channels=16, out_channels=32)
# x: [num_nodes, 16], edge_index: [2, num_edges]
h = conv(x, edge_index)  # -> [num_nodes, 32]

Uma GCN de 2 camadas

Uma GCN típica empilha duas camadas: a primeira projeta os atributos e agrega os vizinhos a um salto de distância; a segunda agrega os vizinhos a dois saltos de distância, dando a cada nó um campo receptivo de 2 saltos.

class GCN(torch.nn.Module):
    def __init__(self, in_dim, hid, out):
        super().__init__()
        self.conv1 = GCNConv(in_dim, hid)
        self.conv2 = GCNConv(hid, out)

    def forward(self, x, edge_index):
        x = F.relu(self.conv1(x, edge_index))
        x = F.dropout(x, training=self.training)
        return self.conv2(x, edge_index)

O campo receptivo cresce com a profundidade

Cada camada GCN expande o campo receptivo de um nó em um salto. Duas camadas veem vizinhanças a 2 saltos, três camadas veem vizinhanças a 3 saltos e assim por diante. A profundidade permite que informações distantes alcancem um nó.

Suavização excessiva

No entanto, empilhar camadas demais causa suavização excessiva: a média repetida dos vizinhos faz com que todas as representações vetoriais dos nós convirjam para quase o mesmo vetor, destruindo as distinções necessárias para a classificação. É por isso que a maioria das GCNs usa apenas 2 ou 3 camadas.

Como reduzir a suavização excessiva

As técnicas para combater a suavização excessiva incluem conexões residuais/de atalho, redes que combinam as saídas das camadas e simplesmente manter a rede superficial. GCNs superficiais geralmente superam as profundas em conjuntos de referência padrão.

Verificação rápida

Teste seus conhecimentos sobre GCNs.

Revisão

Você aprendeu sobre Redes Convolucionais em Grafos:

  • As GCNs seguem a estrutura de propagação de mensagens: agregam os atributos dos vizinhos e depois atualizam o nó
  • A matriz de adjacência normalizada com laços próprios mantém estáveis as representações vetoriais
  • GCNConv no PyTorch Geometric implementa uma convolução
  • Uma arquitetura comum é uma GCN de 2 camadas
  • Profundidade excessiva causa suavização excessiva

Perguntas Frequentes

A aula “Redes convolucionais de grafos (GCN)” é grátis?

Sim — o texto completo de “Redes convolucionais de grafos (GCN)” é 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 “Redes convolucionais de grafos (GCN)”?

Estrutura de passagem de mensagens, GCNConv, agregação de atributos dos nós e configuração do PyTorch Geometric. 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 2 de 4.

Quanto tempo leva a aula “Redes convolucionais de grafos (GCN)”?

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

  1. Teoria dos grafos para aprendizado de máquina
  2. Redes convolucionais de grafos (GCN)
  3. Classificação de nós com GNN
  4. Previsão de links e classificação de grafos
← Voltar para Learn AI with Python