Generative Flow Networks (GFlowNets)
Descubre cómo las redes de flujo generativo (GFlowNets) utilizan el modelado probabilístico para muestrear objetos discretos diversos y de alta recompensa para el descubrimiento de fármacos y el aprendizaje causal.
Los Generative Flow Networks, o GFlowNets, son un potente marco de machine learning diseñado para el modelado probabilístico y el amortized sampling. Destacan en la generación de objetos discretos y composicionales al tratar el proceso de generación como una tarea de toma de decisiones secuencial. En lugar de limitarse a maximizar una recompensa, como es habitual en el reinforcement learning tradicional, los GFlowNets aprenden a muestrear objetos con una probabilidad proporcional a una reward function predefinida. Esto les permite descubrir conjuntos diversos de candidatos con alta recompensa dentro de espacios de muestreo excepcionalmente grandes, mitigando eficazmente el model collapse que a menudo afecta a otras arquitecturas generativas como las Generative Adversarial Networks (GANs).
Principios y mecanismos fundamentales#
Las GFlowNets funcionan moviéndose a través de un entorno estructurado, añadiendo bloques de construcción paso a paso para construir un objeto final.
- Forward and Backward Policies: Una neural network predice una política hacia adelante (forward policy), dictando la distribución de probabilidad sobre las posibles acciones a partir de un estado dado. Al mapear las trayectorias a través de estos estados, el modelo aprende el "flujo" de probabilidad.
- Trajectory Balance Loss: El entrenamiento a menudo se basa en objetivos de optimización como la pérdida de balance de trayectoria (trajectory balance loss), que garantiza que la probabilidad de generar un objeto específico se alinee estrechamente con su recompensa observada. Un correcto hyperparameter tuning es fundamental para estabilizar esta loss function durante el entrenamiento.
- Proportional Sampling: Al realizar un muestreo proporcional a la recompensa en lugar de buscar únicamente el máximo absoluto, los GFlowNets imponen de forma natural la diversidad, lo cual es crucial al navegar por combinatorial spaces complejos.
GFlowNets frente a otra IA generativa#
Aunque la Generative AI abarca muchas técnicas, los GFlowNets ocupan un nicho único. Los Diffusion Models estándar o técnicas como el Flow Matching transforman normalmente distribuciones de ruido continuo en datos. En contraste, los GFlowNets están diseñados explícitamente para generar estructuras discretas, como grafos o secuencias. Además, mientras que los agentes de aprendizaje por refuerzo estándar buscan encontrar una única ruta óptima a través del Markov Decision Process (MDP), los GFlowNets trazan múltiples rutas de alta recompensa para garantizar una gran variedad de resultados generados.
Aplicaciones en el mundo real#
La capacidad de generar candidatos diversos y altamente optimizados hace que las GFlowNets sean especialmente valiosas en dominios científicos y estructurales.
- Drug Discovery and Molecular Design: En la pharmaceutical research, los GFlowNets se utilizan para generar nuevos péptidos terapéuticos y grafos moleculares. Avances recientes, como los Atomic GFlowNets (A-GFN), construyen moléculas átomo por átomo para optimizar propiedades como la afinidad de unión y la accesibilidad sintética. Este proceso crea candidatos a fármacos más diversos en comparación con los métodos que se basan en fragmentos predefinidos.
- Causal Structure Learning: Los GFlowNets también se aplican para descubrir la estructura de Bayesian Networks causales. Aproximan la distribución posterior sobre Directed Acyclic Graphs (DAGs), ayudando a los investigadores a mantener una visión realista de la epistemic uncertainty al modelar relaciones de datos complejas.
Implementación de la política hacia adelante (Forward Policy)#
Al construir un GFlowNet, la política hacia adelante debe predecir una distribución de probabilidad sobre los siguientes pasos posibles. El siguiente fragmento de PyTorch demuestra cómo definir una capa de política simple y muestrear una acción. Mientras que la construcción de modelos de visión como Ultralytics YOLO26 requiere predecir coordenadas de cuadros delimitadores, un GFlowNet utiliza categorical distributions para seleccionar el siguiente estado en su ruta 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 estás desarrollando soluciones de IA complejos en Python, puedes anotar conjuntos de datos, entrenar y desplegar modelos de forma fluida utilizando la Ultralytics Platform. Ya sea que te centres en tareas de object detection de alta velocidad o explores arquitecturas generativas, disponer de una sólida tubería de machine learning operations (MLOps) es esencial para escalar tus modelos eficazmente.






