Generative Flow Networks (GFlowNets)
Узнай, как генеративные сети потоков (GFlowNets) используют вероятностное моделирование для выборки разнообразных дискретных объектов с высокой наградой в поиске лекарств и причинном обучении.
Генеративные потоковые сети, или GFlowNets, — это мощная система машинного обучения, предназначенная для вероятностного моделирования и амортизированной выборки. Эти сети эффективно генерируют дискретные композиционные объекты, рассматривая процесс генерации как последовательную задачу принятия решений. Вместо простого максимизирования вознаграждения, как это обычно происходит в традиционном обучении с подкреплением, GFlowNets учатся выбирать объекты с вероятностью, пропорциональной заданной функции вознаграждения. Благодаря этому они находят разнообразные наборы кандидатов с высоким вознаграждением в чрезвычайно больших пространствах выборки и эффективно смягчают коллапс модели, который часто мешает другим генеративным архитектурам, например генеративно-состязательным сетям (GANs).
Основные принципы и механизмы#
GFlowNets перемещаются по структурированной среде, добавляя строительные блоки шаг за шагом, чтобы собрать конечный объект.
- Прямая и обратная политики: Нейросеть предсказывает прямую политику, задающую распределение вероятностей возможных действий из данного состояния. Отображая траектории через эти состояния, модель обучается «потоку» вероятностей.
- Функция потерь Trajectory Balance: При обучении часто используют целевые функции оптимизации, например функцию потерь trajectory balance, которая обеспечивает тесное соответствие вероятности генерации конкретного объекта его наблюдаемой награде. Правильная настройка гиперпараметров необходима, чтобы стабилизировать эту функцию потерь во время обучения.
- Пропорциональная выборка: Выбирая объекты пропорционально награде, а не просто стремясь к абсолютному максимуму, GFlowNets естественным образом обеспечивают разнообразие, что особенно важно при работе со сложными комбинаторными пространствами.
GFlowNets и другие генеративные модели ИИ#
Хотя генеративный ИИ охватывает множество методов, 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, ты можешь без лишних усилий размечать наборы данных, обучать и развёртывать модели с помощью платформы Ultralytics. Независимо от того, занимаешься ли ты высокоскоростным обнаружением объектов или изучаешь генеративные архитектуры, надёжный конвейер операций машинного обучения (MLOps) необходим для эффективного масштабирования моделей.









