Generative Flow Networks (GFlowNets)
Descubre cómo las redes de flujo generativas (GFlowNets) utilizan el modelado probabilístico para muestrear objetos discretos diversos y de alta recompensa, aplicados al descubrimiento de fármacos y al aprendizaje causal.
Las redes generativas de flujo, o GFlowNets, son un potente marco de aprendizaje automático diseñado para el modelado probabilístico y el muestreo amortizado. Destacan en la generación de objetos discretos y composicionales al tratar el proceso de generación como una tarea secuencial de toma de decisiones. En lugar de limitarse a maximizar una recompensa, como es habitual en el aprendizaje por refuerzo tradicional, los GFlowNets aprenden a muestrear objetos con una probabilidad proporcional a una función de recompensa predefinida. Así pueden descubrir conjuntos diversos de candidatos con recompensas elevadas en espacios de muestreo excepcionalmente grandes y mitigar eficazmente el colapso del modelo, que afecta a menudo a otras arquitecturas generativas como las redes generativas antagónicas (GAN).
Principios y mecanismos fundamentales#
Los GFlowNets recorren un entorno estructurado y añaden elementos de construcción paso a paso para crear un objeto final.
- Políticas hacia delante y hacia atrás: Una red neuronal predice una política hacia delante que determina la distribución de probabilidad de las acciones posibles desde un estado dado. Al representar las trayectorias que recorren esos estados, el modelo aprende el «flujo» de probabilidad.
- Pérdida de equilibrio de trayectorias: El entrenamiento suele basarse en objetivos de optimización como la pérdida de equilibrio de trayectorias, que garantiza que la probabilidad de generar un objeto concreto se corresponda estrechamente con su recompensa observada. Un ajuste de hiperparámetros adecuado es esencial para estabilizar esta función de pérdida durante el entrenamiento.
- Muestreo proporcional: Al muestrear de forma proporcional a la recompensa, en lugar de buscar únicamente el máximo absoluto, las GFlowNets imponen diversidad de forma natural, algo crucial para recorrer espacios combinatorios complejos.
GFlowNets frente a otras IA generativas#
Aunque la IA generativa engloba muchas técnicas, las GFlowNets ocupan un nicho único. Los modelos de difusión estándar o técnicas como la coincidencia de flujos suelen transformar distribuciones de ruido continuo en datos. En cambio, las GFlowNets están diseñadas específicamente para generar estructuras discretas, como grafos o secuencias. Además, mientras que los agentes estándar de aprendizaje por refuerzo buscan encontrar una única trayectoria óptima mediante el proceso de decisión de Markov (MDP), las GFlowNets trazan múltiples trayectorias de alta recompensa para garantizar una gran variedad de resultados generados.
Aplicaciones en el mundo real#
La capacidad de generar candidatos diversos y muy optimizados hace que las GFlowNets sean especialmente valiosas en ámbitos científicos y estructurales.
- Descubrimiento de fármacos y diseño molecular: En la investigación farmacéutica, las GFlowNets se utilizan para generar nuevos péptidos terapéuticos y grafos moleculares. Los avances recientes, como las GFlowNets atómicas (A-GFN), construyen moléculas átomo a átomo para optimizar propiedades como la afinidad de unión y la facilidad de síntesis. Este proceso crea candidatos a fármacos más diversos que los métodos basados en fragmentos predefinidos.
- Aprendizaje de estructuras causales: Las GFlowNets también se aplican para descubrir la estructura de las redes bayesianas causales. Aproximan la distribución posterior sobre grafos acíclicos dirigidos (DAG), lo que ayuda a los investigadores a mantener una visión realista de la incertidumbre epistémica al modelar relaciones complejas entre datos.
Implementación de la política de avance#
Al crear una GFlowNet, la política de avance debe predecir una distribución de probabilidad sobre los siguientes pasos posibles. El siguiente fragmento de PyTorch muestra cómo definir una capa de política sencilla y muestrear una acción. Mientras que crear modelos de visión como Ultralytics YOLO26 requiere predecir las coordenadas de los cuadros delimitadores, una GFlowNet utiliza distribuciones categóricas para seleccionar el siguiente estado de su trayectoria de generación.
import torch
import torch.nn as nn
from torch.distributions import Categorical
# A simple linear policy mapping a 64-dim state to 4 possible actions
policy_network = nn.Sequential(nn.Linear(64, 4), nn.Softmax(dim=-1))
# Given a random state vector, compute action probabilities and sample
state = torch.randn(1, 64)
action_probs = policy_network(state)
sampled_action = Categorical(action_probs).sample()
print(f"Sampled Action: {sampled_action.item()}")Si desarrollas soluciones complejas de IA en Python, puedes anotar conjuntos de datos, entrenar y desplegar modelos sin complicaciones con la plataforma Ultralytics. Tanto si te centras en tareas de detección de objetos de alta velocidad como si exploras arquitecturas generativas, contar con una sólida canalización de operaciones de aprendizaje automático (MLOps) es esencial para escalar tus modelos de forma eficaz.









