Generative Flow Networks (GFlowNets)
Scopri come le Generative Flow Networks (GFlowNets) utilizzano la modellazione probabilistica per campionare oggetti discreti diversificati ad alta ricompensa per la scoperta di farmaci e l'apprendimento causale.
Le Generative Flow Networks, o GFlowNets, sono un potente framework di machine learning progettato per la modellazione probabilistica e il campionamento ammortizzato. Eccellono nella generazione di oggetti discreti e composizionali, trattando il processo di generazione come un'attività di processo decisionale sequenziale. Invece di massimizzare semplicemente una ricompensa, come è comune nel reinforcement learning tradizionale, le GFlowNets imparano a campionare oggetti con una probabilità proporzionale a una reward function predefinita. Ciò consente loro di scoprire diversi set di candidati ad alta ricompensa all'interno di spazi di campionamento eccezionalmente ampi, mitigando efficacemente il model collapse che spesso affligge altre architetture generative come le Generative Adversarial Networks (GANs).
Link to this sectionPrincipi e meccanismi fondamentali#
Le GFlowNets operano muovendosi attraverso un ambiente strutturato, aggiungendo blocchi di costruzione passo dopo passo per costruire un oggetto finale.
- Policy in avanti e all'indietro: Una neural network prevede una policy in avanti, dettando la distribuzione di probabilità sulle possibili azioni da un determinato stato. Mappando le traiettorie attraverso questi stati, il modello apprende il "flusso" di probabilità.
- Trajectory Balance Loss: L'addestramento si basa spesso su obiettivi di ottimizzazione come la trajectory balance loss, che garantisce che la probabilità di generare uno specifico oggetto si allinei strettamente alla sua ricompensa osservata. Una corretta hyperparameter tuning è essenziale per stabilizzare questa loss function durante l'addestramento.
- Proportional Sampling: Campionando in modo proporzionale alla ricompensa anziché cercare solo il massimo assoluto, le GFlowNets impongono naturalmente la diversità, che è fondamentale quando si naviga in complessi combinatorial spaces.
Link to this sectionGFlowNets vs. Altra AI generativa#
Sebbene la Generative AI comprenda molte tecniche, le GFlowNets occupano una nicchia unica. I Diffusion Models standard o tecniche come il Flow Matching trasformano tipicamente distribuzioni di rumore continuo in dati. Al contrario, le GFlowNets sono esplicitamente adattate per generare strutture discrete, come grafi o sequenze. Inoltre, laddove gli agenti di reinforcement learning standard mirano a trovare un singolo percorso ottimale tramite il Markov Decision Process (MDP), le GFlowNets mappano molteplici percorsi ad alta ricompensa per garantire un'ampia varietà di output generati.
Link to this sectionApplicazioni nel mondo reale#
La capacità di generare candidati diversi e altamente ottimizzati rende le GFlowNets particolarmente preziose nei domini scientifici e strutturali.
- Drug Discovery and Molecular Design: Nella pharmaceutical research, le GFlowNets vengono utilizzate per generare nuovi peptidi terapeutici e grafi molecolari. Recenti progressi, come le Atomic GFlowNets (A-GFN), costruiscono molecole atomo per atomo per ottimizzare proprietà come l'affinità di legame e l'accessibilità sintetica. Questo processo crea candidati farmaceutici più diversificati rispetto ai metodi che si basano su frammenti predefiniti.
- Causal Structure Learning: Le GFlowNets vengono applicate anche per scoprire la struttura di Bayesian Networks causali. Approssimano la distribuzione a posteriori su Directed Acyclic Graphs (DAGs), aiutando i ricercatori a mantenere una visione realistica dell'epistemic uncertainty durante la modellazione di relazioni complesse tra i dati.
Link to this sectionImplementazione della policy in avanti#
Quando costruisci una GFlowNet, la policy in avanti deve prevedere una distribuzione di probabilità sui prossimi passi possibili. Il seguente snippet PyTorch mostra come definire un semplice livello di policy e campionare un'azione. Mentre la costruzione di modelli di visione come Ultralytics YOLO26 richiede la previsione delle coordinate del riquadro di delimitazione, una GFlowNet utilizza categorical distributions per selezionare il prossimo stato nel suo percorso di generazione.
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()}")Se stai sviluppando soluzioni AI complesse in Python, puoi annotare facilmente i dataset, addestrare e distribuire i modelli utilizzando la Ultralytics Platform. Che tu ti stia concentrando su attività di object detection ad alta velocità o esplorando architetture generative, avere una solida pipeline di machine learning operations (MLOps) è essenziale per scalare i tuoi modelli in modo efficace.






