생성 흐름 네트워크(GFlowNets)가 확률적 모델링을 활용하여 신약 개발 및 인과 학습을 위해 다양하고 높은 보상을 제공하는 이산 객체를 어떻게 샘플링하는지 알아보세요.
생성 흐름 네트워크(Generative Flow Networks, GFlowNets)는 확률적 모델링과 분산 샘플링을 위해 설계된 강력한 머신러닝 프레임워크입니다. 이 프레임워크는 생성 과정을 순차적 의사결정 과제로 간주함으로써 이산적이고 조합 가능한 객체를 생성하는 데 탁월합니다. 기존의 강화 학습에서 흔히 볼 수 있는 것처럼 단순히 보상을 극대화하는 대신, GFlowNets는 사전 정의된 보상 함수에 비례하는 확률로 객체를 샘플링하는 방법을 학습합니다. 이를 통해 GFlowNets는 매우 방대한 샘플 공간 내에서 다양한 고보상 후보 집합을 발견할 수 있으며, 생성적 적대적 네트워크(GAN)와 같은 다른 생성적 아키텍처에서 흔히 발생하는 모델 붕괴 현상을 효과적으로 완화합니다.
GFlowNets는 구조화된 환경을 탐색하며 단계별로 구성 요소를 추가해 최종 객체를 구축하는 방식으로 작동합니다.
생성형 AI는 다양한 기법을 포괄하지만, GFlowNets는 그 중에서도 독보적인 위치를 차지합니다. 일반적인 확산 모델이나 플로우 매칭(Flow Matching) 과 같은 기법은 대개 연속적인 노이즈 분포를 데이터로 변환합니다. 반면, 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()}")
만약 여러분이 PythonUltralytics 사용하면 데이터셋에 주석을 달고, 모델을 훈련 및 배포하는 과정을 원활하게 진행할 수 있습니다. 고속 물체 탐지 작업에 집중하든 생성형 아키텍처를 탐구하든, 모델을 효과적으로 확장하기 위해서는 견고한 머신러닝 운영(MLOps) 파이프라인이 필수적입니다.
미래의 머신러닝 여정을 시작하세요