Generative Flow Networks (GFlowNets)
Узнай, как генеративные потоковые сети (GFlowNets) используют вероятностное моделирование для выборки разнообразных дискретных объектов с высоким вознаграждением для поиска лекарств и причинно-следственного обучения.
Generative Flow Networks, или GFlowNets, — это мощная платформа machine learning, разработанная для вероятностного моделирования и amortized sampling. Они отлично справляются с генерацией дискретных композиционных объектов, рассматривая процесс генерации как последовательную задачу принятия решений. Вместо того чтобы просто максимизировать вознаграждение, как это принято в традиционном reinforcement learning, GFlowNets учатся выбирать объекты с вероятностью, пропорциональной заданной reward function. Это позволяет им находить разнообразные наборы кандидатов с высоким вознаграждением в исключительно больших пространствах выборок, эффективно смягчая проблему model collapse, которая часто преследует другие генеративные архитектуры, такие как Generative Adversarial Networks (GANs).
Link to this sectionОсновные принципы и механизмы#
GFlowNets работают, перемещаясь по структурированной среде и шаг за шагом добавляя строительные блоки для создания конечного объекта.
- Forward and Backward Policies: neural network предсказывает прямую политику, определяющую распределение вероятностей возможных действий из заданного состояния. Отображая траектории через эти состояния, модель изучает «поток» вероятности.
- Trajectory Balance Loss: Обучение часто опирается на цели оптимизации, такие как trajectory balance loss, которая гарантирует, что вероятность генерации конкретного объекта тесно коррелирует с его наблюдаемым вознаграждением. Правильная hyperparameter tuning важна для стабилизации этой loss function во время обучения.
- Proportional Sampling: Выбирая элементы пропорционально вознаграждению, а не просто стремясь к абсолютному максимуму, GFlowNets естественным образом обеспечивают разнообразие, что крайне важно при навигации по сложным combinatorial spaces.
Link to this sectionGFlowNets против других типов Generative AI#
Хотя Generative AI охватывает множество методов, GFlowNets занимают уникальную нишу. Стандартные Diffusion Models или методы типа Flow Matching обычно преобразуют непрерывные распределения шума в данные. В отличие от них, GFlowNets специально адаптированы для генерации дискретных структур, таких как графы или последовательности. Более того, в то время как стандартные агенты reinforcement learning стремятся найти единственный оптимальный путь через Markov Decision Process (MDP), GFlowNets прокладывают множество путей с высоким вознаграждением, чтобы обеспечить широкое разнообразие генерируемых результатов.
Link to this sectionРеальные приложения#
Способность генерировать разнообразных и высокооптимизированных кандидатов делает GFlowNets особенно ценными в научных и структурных областях.
- Drug Discovery and Molecular Design: В pharmaceutical research GFlowNets используются для генерации новых терапевтических пептидов и молекулярных графов. Недавние достижения, такие как Atomic GFlowNets (A-GFN), позволяют создавать молекулы поатомно для оптимизации таких свойств, как аффинность связывания и синтетическая доступность. Этот процесс создает более разнообразных кандидатов в лекарства по сравнению с методами, основанными на предопределенных фрагментах.
- Causal Structure Learning: GFlowNets также применяются для обнаружения структуры причинно-следственных Bayesian Networks. Они аппроксимируют апостериорное распределение по Directed Acyclic Graphs (DAGs), помогая исследователям поддерживать реалистичный взгляд на epistemic uncertainty при моделировании сложных связей в данных.
Link to this sectionРеализация прямой политики#
При создании GFlowNet прямая политика должна предсказывать распределение вероятностей для следующих возможных шагов. Следующий фрагмент кода на PyTorch демонстрирует, как определить простой слой политики и выбрать действие. Хотя создание моделей компьютерного зрения, таких как Ultralytics YOLO26, требует предсказания координат bbox, GFlowNet использует categorical distributions для выбора следующего состояния в своем пути генерации.
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()}")Если ты разрабатываешь сложные AI-решения на Python, ты можешь легко аннотировать наборы данных, обучать и развертывать модели с помощью Ultralytics Platform. Независимо от того, фокусируешься ли ты на высокоскоростных задачах object detection или исследуешь генеративные архитектуры, надежный конвейер machine learning operations (MLOps) необходим для эффективного масштабирования твоих моделей.






