Generative Flow Networks (GFlowNets)
Scopri come le reti generative di flussi (GFlowNets) usano la modellazione probabilistica per campionare oggetti discreti diversificati e con ricompense elevate, utili per la scoperta di farmaci e l'apprendimento causale.
Le reti di flusso generativo, o GFlowNet, 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à decisionale sequenziale. Invece di limitarsi a massimizzare una ricompensa, come avviene comunemente nell'apprendimento per rinforzo tradizionale, le GFlowNet imparano a campionare oggetti con una probabilità proporzionale a una funzione di ricompensa predefinita. In questo modo possono individuare insiemi diversificati di candidati con ricompensa elevata in spazi di campionamento molto ampi, mitigando efficacemente il collasso del modello che spesso affligge altre architetture generative, come le reti generative avversarie (GAN).
Principi e meccanismi fondamentali#
Le GFlowNet operano in un ambiente strutturato, aggiungendo elementi costitutivi un passaggio alla volta per creare un oggetto finale.
- Politiche in avanti e all'indietro: Una rete neurale prevede una politica in avanti, che determina la distribuzione di probabilità delle azioni possibili a partire da uno stato specifico. Mappando le traiettorie attraverso questi stati, il modello apprende il "flusso" della probabilità.
- Loss di bilanciamento delle traiettorie: L'addestramento si basa spesso su obiettivi di ottimizzazione come il loss di bilanciamento delle traiettorie, che garantisce che la probabilità di generare un oggetto specifico sia strettamente correlata alla ricompensa osservata. Una corretta ottimizzazione degli iperparametri è essenziale per stabilizzare questa funzione di loss durante l'addestramento.
- Campionamento proporzionale: Campionando in proporzione alla ricompensa, anziché cercare soltanto il massimo assoluto, i GFlowNet impongono naturalmente la diversità, fondamentale per esplorare complessi spazi combinatori.
GFlowNet a confronto con altre forme di IA generativa#
Sebbene l'IA generativa comprenda molte tecniche, i GFlowNet occupano una nicchia unica. I modelli di diffusione standard e tecniche come il Flow Matching trasformano in genere distribuzioni di rumore continue in dati. Al contrario, i GFlowNet sono progettati esplicitamente per generare strutture discrete, come grafi o sequenze. Inoltre, mentre gli agenti standard di apprendimento per rinforzo mirano a trovare un singolo percorso ottimale tramite il processo decisionale di Markov (MDP), i GFlowNet individuano molteplici percorsi con ricompensa elevata per garantire un'ampia varietà di risultati generati.
Applicazioni nel mondo reale#
La capacità di generare candidati diversi e altamente ottimizzati rende i GFlowNet particolarmente preziosi nei settori scientifici e strutturali.
- Scoperta di farmaci e progettazione molecolare: Nella ricerca farmaceutica, i GFlowNet vengono utilizzati per generare nuovi peptidi terapeutici e grafi molecolari. I recenti progressi, come gli Atomic GFlowNet (A-GFN), costruiscono le molecole atomo per atomo per ottimizzare proprietà quali l'affinità di legame e la facilità di sintesi. Questo processo crea candidati farmaci più diversificati rispetto ai metodi basati su frammenti predefiniti.
- Apprendimento della struttura causale: I GFlowNet vengono applicati anche alla scoperta della struttura delle reti bayesiane causali. Approssimano la distribuzione a posteriori sui grafi aciclici diretti (DAG), aiutando i ricercatori a mantenere una visione realistica dell'incertezza epistemica quando modellano relazioni complesse tra i dati.
Implementazione della policy forward#
Quando crei un GFlowNet, la policy forward deve prevedere una distribuzione di probabilità sui possibili passi successivi. Il seguente esempio di PyTorch mostra come definire un semplice livello di policy e campionare un'azione. Mentre la creazione di modelli di visione come Ultralytics YOLO26 richiede la previsione delle coordinate dei riquadri di delimitazione, un GFlowNet usa distribuzioni categoriche per selezionare lo stato successivo nel 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 sviluppi soluzioni IA complesse in Python, puoi annotare dataset, addestrare e distribuire modelli senza interruzioni usando la Ultralytics Platform. Che tu ti stia concentrando su attività di rilevamento di oggetti ad alta velocità o stia esplorando architetture generative, una solida pipeline di operazioni di apprendimento automatico (MLOps) è essenziale per scalare efficacemente i tuoi modelli.









