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 compositivi trattando il processo di generazione come un'attività decisionale sequenziale. Invece di massimizzare semplicemente una ricompensa, come è comune nel tradizionale reinforcement learning, le GFlowNets imparano a campionare oggetti con una probabilità proporzionale a una funzione di ricompensa predefinita. Ciò consente loro di scoprire diversi insiemi di candidati ad alta ricompensa all'interno di spazi campionari eccezionalmente ampi, mitigando efficacemente il collasso del modello che spesso affligge altre architetture generative come le Generative Adversarial Networks (GANs).
Principi e meccanismi fondamentali#
Le GFlowNets operano muovendosi attraverso un ambiente strutturato, aggiungendo blocchi di costruzione passo dopo passo per costruire un oggetto finale.
- Politiche di Forward e Backward: Una rete neurale predice una politica di forward, 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 spesso si basa su obiettivi di ottimizzazione come la perdita di bilanciamento delle traiettorie, che garantisce che la probabilità di generare un oggetto specifico si allinei strettamente con la sua ricompensa osservata. Una corretta ottimizzazione degli iperparametri è essenziale per stabilizzare questa funzione di perdita durante l'addestramento.
- Campionamento Proporzionale: Campionando in modo proporzionale alla ricompensa anziché cercare semplicemente il massimo assoluto, le GFlowNets impongono naturalmente la diversità, che è fondamentale quando si naviga in complessi spazi combinatori.
GFlowNets vs. Altra AI generativa#
Mentre l'Intelligenza Artificiale Generativa comprende molte tecniche, le GFlowNets occupano una nicchia unica. I Modelli di Diffusione standard o tecniche come il Flow Matching tipicamente trasformano distribuzioni di rumore continuo in dati. Al contrario, le GFlowNets sono esplicitamente create per generare strutture discrete, come grafi o sequenze. Inoltre, laddove i normali agenti di reinforcement learning mirano a trovare un singolo percorso ottimale tramite il Markov Decision Process (MDP), le GFlowNets mappano percorsi multipli ad alta ricompensa per garantire un'ampia varietà di output generati.
Applicazioni nel mondo reale#
La capacità di generare candidati diversi e altamente ottimizzati rende le GFlowNets particolarmente preziose nei domini scientifici e strutturali.
- Scoperta di Farmaci e Progettazione Molecolare: Nella ricerca farmaceutica, 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ù diversi rispetto ai metodi basati su frammenti predefiniti.
- Apprendimento della Struttura Causale: Le GFlowNets vengono anche applicate per scoprire la struttura di Reti Bayesiane causali. Approssimano la distribuzione a posteriori su Directed Acyclic Graphs (DAGs), aiutando i ricercatori a mantenere una visione realistica dell'incertezza epistemica quando modellano relazioni di dati complesse.
Implementazione della policy in avanti#
Durante la creazione di una GFlowNet, la politica di forward deve predire una distribuzione di probabilità sui successivi passi possibili. Il seguente snippet PyTorch dimostra 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 bounding box, una GFlowNet utilizza distribuzioni categoriche per selezionare lo stato successivo 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 di intelligenza artificiale complesse in Python, puoi annotare set di dati, addestrare e distribuire modelli senza problemi utilizzando la Ultralytics Platform. Che tu ti stia concentrando su attività ad alta velocità di rilevamento di oggetti o stia esplorando architetture generative, avere una solida pipeline di machine learning operations (MLOps) è essenziale per scalare i tuoi modelli in modo efficace.






