Redes convolucionales de grafos (GCN)
Marco de propagación de mensajes, GCNConv, agregación de características de nodos y configuración de PyTorch Geometric.
Redes convolucionales de grafos (GCN) es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.
De las CNN a las GCN
Las CNN aprovechan la estructura de cuadrícula de las imágenes. Una red convolucional de grafos (GCN) generaliza la convolución a grafos irregulares, lo que permite que cada nodo actualice su representación usando información de sus vecinos. Esto permite trabajar con datos que no tienen una cuadrícula fija.
Paso de mensajes
Las GCN siguen el marco de paso de mensajes: en cada capa, cada nodo (1) recopila mensajes de sus vecinos, (2) los agrega y (3) actualiza su propia representación vectorial. Apilar capas permite que la información fluya por todo el grafo.
Agregación de vecinos
La operación principal es agregar las características de los vecinos. Una capa GCN sencilla calcula el promedio de los vectores de características de los vecinos de un nodo (incluido el propio nodo) y después aplica una transformación lineal aprendida y una no linealidad.
# For each node v:
# h_v = activation( W * mean(features of v and its neighbors) )Por qué normalizar la adyacencia
Los nodos con muchos grados dominarían si sumáramos los vecinos de forma ingenua. Las GCN utilizan la adyacencia normalizada para escalar las contribuciones y mantener estable la magnitud de las representaciones vectoriales de los nodos, aunque tengan grados distintos.
La fórmula de normalización
La normalización simétrica añade bucles propios y después escala según los grados de los nodos; se expresa como D^(-1/2) (A + I) D^(-1/2). Añadir la identidad I permite que un nodo conserve sus propias características durante la agregación.
# 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) es la biblioteca estándar para GNN en PyTorch. Proporciona capas listas para usar, como GCNConv, que implementan por usted la convolución de paso de mensajes normalizada.
import torch
import torch.nn.functional as F
from torch_geometric.nn import GCNConvUna capa GCNConv
GCNConv(in_channels, out_channels) crea una convolución de grafos. Recibe la matriz de características de los nodos x y edge_index (la conectividad del grafo en formato COO) y devuelve las representaciones vectoriales actualizadas de los nodos.
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]Una GCN de 2 capas
Una GCN típica apila dos capas: la primera proyecta las características y agrega las de los vecinos a un salto de distancia; la segunda agrega las de los vecinos a dos saltos, lo que proporciona a cada nodo un 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)El campo receptivo crece con la profundidad
Cada capa GCN amplía en un salto el campo receptivo de un nodo. Dos capas ven vecindarios a 2 saltos, tres capas ven vecindarios a 3 saltos, y así sucesivamente. La profundidad permite que la información distante llegue a un nodo.
Sobre-suavizado
Sin embargo, apilar demasiadas capas provoca sobre-suavizado: el promedio repetido de los vecinos hace que todas las representaciones vectoriales de los nodos converjan hacia un vector casi idéntico, destruyendo las diferencias necesarias para la clasificación. Por eso, la mayoría de las GCN utilizan solo 2 o 3 capas.
Cómo mitigar el sobre-suavizado
Entre las técnicas para combatir el sobre-suavizado se incluyen las conexiones residuales o de salto, las redes de conocimiento saltante que combinan las salidas de las capas y, sencillamente, mantener la red poco profunda. Las GCN poco profundas suelen superar a las profundas en los benchmarks estándar.
Comprobación rápida
Ponga a prueba sus conocimientos sobre GCN.
Resumen
Ha aprendido sobre las redes convolucionales de grafos:
- Las GCN siguen el marco de paso de mensajes: agregan las características de los vecinos y después actualizan el nodo
- La adyacencia normalizada con bucles propios mantiene estables las representaciones vectoriales
GCNConvde PyTorch Geometric implementa una convolución- Una arquitectura habitual es una GCN de 2 capas
- Una profundidad excesiva provoca sobre-suavizado
Preguntas frecuentes
¿La lección «Redes convolucionales de grafos (GCN)» es gratis?
Sí — el texto completo de «Redes convolucionales de grafos (GCN)» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.
¿Qué aprenderé en «Redes convolucionales de grafos (GCN)»?
Marco de propagación de mensajes, GCNConv, agregación de características de nodos y configuración de PyTorch Geometric. Practicas Learn AI with Python con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Learn AI with Python?
No se requiere experiencia previa. Learn AI with Python en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Redes convolucionales de grafos (GCN)»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Learn AI with Python?
Sí. Cada lección de Learn AI with Python incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Teoría de grafos para aprendizaje automático
- Redes convolucionales de grafos (GCN)
- Clasificación de nodos con GNN
- Predicción de enlaces y clasificación de grafos