了解生成式流网络(GFlowNets)如何利用概率建模,为药物发现和因果学习采样多样化且高回报的离散对象。
生成流网络(Generative Flow Networks,简称 GFlowNets)是一个强大的 机器学习框架,专为 概率建模和摊销采样而设计。它们 通过将生成过程视为一个序列决策 任务,在生成离散的、可组合的对象方面表现出色。 与传统 强化学习中常见的单纯最大化奖励不同,GFlowNets学会 以与预定义 奖励函数成正比的概率对对象进行采样。这使其能够在极其庞大的样本空间中发现多样化的 高奖励候选集合,从而有效缓解了 常困扰生成对抗网络(GANs)等其他生成 架构的 模型坍缩问题。
GFlowNets 的运作方式是在结构化环境中移动,逐步添加构建模块,从而构建出最终的 对象。
虽然生成式人工智能涵盖了许多技术, 但 GFlowNets 占据着独特的地位。标准的 扩散模型或诸如 流匹配等技术通常将连续噪声 分布转换为数据。相比之下,GFlowNets 专门用于生成离散结构,例如 图或序列。 此外,标准强化学习代理旨在通过 马尔可夫决策过程(MDP)寻找单一最优路径, 而 GFlowNets 则规划出多条高回报路径,以确保生成的输出具有广泛的多样性。
凭借生成多样且高度优化的候选方案的能力,GFlowNets在科学 和结构领域具有特别重要的价值。
在构建 GFlowNet 时,前向策略必须预测下一系列可能步骤的概率分布。 以下 PyTorch 代码片段演示了如何定义一个简单的策略层并 采样一个动作。虽然构建像 Ultralytics 这样的视觉模型需要预测边界框 坐标,但 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开发复杂的人工智能解决方案,您可以借助 Ultralytics 无缝地 对数据集进行标注、训练和部署模型。无论您专注于高速 目标检测任务,还是探索生成式 架构,拥有一个稳健的 机器学习运维(MLOps) 管道对于有效扩展模型至关重要。
开启您的机器学习未来之旅