Scopri come le reti generative a flusso (GFlowNets) utilizzano la modellizzazione probabilistica per generare una varietà di oggetti discreti ad alto potenziale nell’ambito della scoperta di nuovi farmaci e dell’apprendimento causale.
Le Generative Flow Networks, o GFlowNets, sono un potente framework di apprendimento automatico progettato per la modellizzazione probabilistica e il campionamento ammortizzato. Esse eccellono nella generazione di oggetti discreti e composizionali, trattando il processo di generazione come un compito decisionale sequenziale . Invece di limitarsi a massimizzare una ricompensa, come avviene comunemente nel tradizionale apprendimento per rinforzo, le GFlowNets imparano a campionare oggetti con una probabilità proporzionale a una funzione di ricompensa predefinita . Ciò consente loro di individuare insiemi diversificati di candidati ad alto rendimento all'interno di spazi campionari eccezionalmente vasti, mitigando efficacemente il collasso del modello che spesso affligge altre architetture generative come le Generative Adversarial Networks (GAN).
Le reti GFlowNet funzionano muovendosi all'interno di un ambiente strutturato, aggiungendo passo dopo passo elementi costitutivi per costruire un oggetto finale.
Sebbene l'IA generativa comprenda numerose tecniche, le GFlowNets occupano una nicchia unica. I modelli di diffusione standard o tecniche come il Flow Matching trasformano tipicamente distribuzioni di rumore continue in dati. Al contrario, le GFlowNets sono progettate specificamente per generare strutture discrete, quali grafi o sequenze. Inoltre, mentre gli agenti di apprendimento per rinforzo standard mirano a trovare un unico percorso ottimale tramite il processo decisionale markoviano (MDP), i GFlowNets tracciano più percorsi ad alto rendimento per garantire un'ampia varietà di output generati.
La capacità di generare candidati diversificati e altamente ottimizzati rende GFlowNets particolarmente utile nei settori scientifici e strutturali.
Quando si costruisce una rete GFlowNet, la politica di propagazione in avanti deve prevedere una distribuzione di probabilità sui possibili passi successivi. Il seguente PyTorch dimostra come definire un semplice livello di policy e campionare un'azione. Mentre la creazione di modelli di visione come Ultralytics richiede la previsione delle coordinate dei bounding box , una GFlowNet utilizza distribuzioni categoriali per selezionare lo stato successivo nel proprio 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 facilmente annotare i set di dati, addestrare e distribuire i modelli utilizzando la Ultralytics . Che tu ti stia concentrando su attività di rilevamento di oggetti ad alta velocità o che tu stia esplorando architetture generative, disporre di una solida pipeline di operazioni di machine learning (MLOps) è essenziale per scalare i tuoi modelli in modo efficace.
Inizia il tuo viaggio con il futuro del machine learning