Generative Flow Networks (GFlowNets)
探索生成流网络(GFlowNets)如何利用概率建模,为药物发现和因果学习采样多样化、高回报的离散对象。
生成流网络(GFlowNets)是一种强大的机器学习框架,专为概率建模和摊销采样而设计。它们擅长生成离散的组合对象,将生成过程视为序列决策任务。与传统强化学习中常见的直接最大化奖励不同,GFlowNets 学习以与预定义奖励函数成比例的概率对对象进行采样。这样,它们便能在极大的样本空间中发现多样化的高奖励候选对象,有效缓解其他生成架构(如生成对抗网络(GANs))常见的模型坍塌问题。
核心原理与机制#
GFlowNets 在结构化环境中运行,通过逐步添加构建模块来构造最终对象。
- 前向策略与后向策略:神经网络会预测前向策略,确定给定状态下各种可能动作的概率分布。通过映射这些状态之间的轨迹,模型可以学习概率的“流动”。
- 轨迹平衡损失:训练通常依赖轨迹平衡损失等优化目标,确保生成特定对象的概率与其观测到的奖励高度一致。适当的超参数调优对于在训练期间稳定这一损失函数至关重要。
- 按比例采样:按奖励比例进行采样,而不是只追求绝对最大值,GFlowNets 会自然地确保多样性;在探索复杂的组合空间时,这一点至关重要。
GFlowNets 与其他生成式 AI 的比较#
虽然生成式 AI涵盖了许多技术,但 GFlowNets 占据着独特的领域。标准扩散模型或流匹配等技术通常将连续噪声分布转换为数据。相比之下,GFlowNets 专为生成图或序列等离散结构而设计。此外,标准强化学习智能体的目标是通过马尔可夫决策过程(MDP)找到一条最优路径,而 GFlowNets 会绘制多条高奖励路径,以确保生成结果种类丰富。
实际应用#
GFlowNets 能够生成多样且高度优化的候选结果,因此在科学和结构领域尤其有价值。
- 药物发现与分子设计:在药物研究中,GFlowNets 用于生成新型治疗肽和分子图。原子 GFlowNets(A-GFN)等最新进展会逐个原子地构建分子,以优化结合亲和力和合成可及性等属性。与依赖预定义片段的方法相比,这一过程能够生成更多样化的候选药物。
- 因果结构学习:GFlowNets 也用于发现因果贝叶斯网络的结构。它们近似有向无环图(DAG)上的后验分布,帮助研究人员在对复杂数据关系建模时,合理看待认知不确定性。
实现前向策略#
构建 GFlowNet 时,前向策略必须预测下一步可能操作的概率分布。下面的 PyTorch代码片段演示了如何定义一个简单的策略层并采样一个动作。构建 Ultralytics YOLO26这类视觉模型需要预测边界框坐标,而 GFlowNet 则使用分类分布来选择生成路径中的下一个状态。
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()}")如果你正在使用 Python开发复杂的 AI 解决方案,可以通过Ultralytics Platform无缝完成数据集标注、模型训练和部署。无论你专注于高速目标检测任务,还是探索生成式架构,要有效扩展模型,可靠的机器学习运维(MLOps)流水线都必不可少。









