Generative Flow Networks (GFlowNets)
Khám phá cách Generative Flow Networks (GFlowNets) sử dụng mô hình xác suất để lấy mẫu các đối tượng rời rạc đa dạng, phần thưởng cao cho khám phá thuốc và học nguyên nhân.
Generative Flow Networks, hay GFlowNets, là một machine learning framework mạnh mẽ được thiết kế cho mô hình hóa xác suất và amortized sampling. Chúng nổi trội trong việc tạo ra các đối tượng rời rạc, có tính thành phần bằng cách coi quá trình tạo sinh như một tác vụ ra quyết định tuần tự. Thay vì chỉ đơn giản tối đa hóa phần thưởng như thông thường trong reinforcement learning truyền thống, GFlowNets học cách lấy mẫu các đối tượng với xác suất tỷ lệ thuận với một reward function được xác định trước. Điều này cho phép chúng khám phá các tập hợp ứng viên đạt phần thưởng cao đa dạng trong không gian mẫu cực kỳ lớn, qua đó giảm thiểu hiệu quả tình trạng model collapse thường gặp ở các kiến trúc tạo sinh khác như Generative Adversarial Networks (GANs).
Các Nguyên lý và Cơ chế Cốt lõi#
GFlowNets hoạt động bằng cách di chuyển qua một môi trường có cấu trúc, thêm các khối xây dựng từng bước để tạo ra một đối tượng cuối cùng.
- Forward and Backward Policies: Một neural network dự đoán một chính sách thuận (forward policy), quy định phân phối xác suất trên các hành động có thể từ một trạng thái cho trước. Bằng cách vạch ra các quỹ đạo qua các trạng thái này, model học được "dòng chảy" (flow) xác suất.
- Trajectory Balance Loss: Việc huấn luyện thường dựa vào các mục tiêu tối ưu hóa như trajectory balance loss, giúp đảm bảo rằng xác suất tạo ra một đối tượng cụ thể khớp chặt chẽ với phần thưởng quan sát được của nó. Hyperparameter tuning đúng cách là điều cần thiết để ổn định loss function này trong quá trình huấn luyện.
- Proportional Sampling: Bằng cách lấy mẫu tỷ lệ thuận với phần thưởng thay vì chỉ tìm kiếm mức tối đa tuyệt đối, GFlowNets tự nhiên thúc đẩy tính đa dạng, điều này rất quan trọng khi điều hướng trong các combinatorial spaces phức tạp.
GFlowNets so với các Generative AI khác#
Mặc dù Generative AI bao gồm nhiều kỹ thuật, GFlowNets chiếm một vị trí ngách độc đáo. Các Diffusion Models tiêu chuẩn hoặc các kỹ thuật như Flow Matching thường chuyển đổi các phân phối nhiễu liên tục thành dữ liệu. Ngược lại, GFlowNets được thiết kế riêng cho việc tạo ra các cấu trúc rời rạc, chẳng hạn như đồ thị hoặc chuỗi. Hơn nữa, trong khi các tác nhân reinforcement learning tiêu chuẩn hướng tới việc tìm một đường đi tối ưu duy nhất thông qua Markov Decision Process (MDP), GFlowNets vạch ra nhiều đường đi có phần thưởng cao để đảm bảo sự đa dạng rộng rãi cho các đầu ra được tạo ra.
Các ứng dụng trong thực tế#
Khả năng tạo ra các ứng viên đa dạng và được tối ưu hóa cao làm cho GFlowNets đặc biệt có giá trị trong các lĩnh vực khoa học và cấu trúc.
- Drug Discovery and Molecular Design: Trong nghiên cứu dược phẩm (pharmaceutical research), GFlowNets được sử dụng để tạo ra các peptide trị liệu mới và đồ thị phân tử. Các tiến bộ gần đây, chẳng hạn như Atomic GFlowNets (A-GFN), xây dựng các phân tử từng nguyên tử một nhằm tối ưu hóa các thuộc tính như ái lực liên kết và khả năng tổng hợp. Quá trình này tạo ra nhiều ứng viên thuốc đa dạng hơn so với các phương pháp dựa vào các phân đoạn được định nghĩa sẵn.
- Causal Structure Learning: GFlowNets cũng được ứng dụng để khám phá cấu trúc của Bayesian Networks nhân quả. Chúng xấp xỉ phân phối hậu nghiệm trên các Directed Acyclic Graphs (DAGs), giúp các nhà nghiên cứu duy trì cái nhìn thực tế về epistemic uncertainty khi mô hình hóa các mối quan hệ dữ liệu phức tạp.
Triển khai Forward Policy#
Khi xây dựng một GFlowNet, chính sách thuận phải dự đoán một phân phối xác suất trên các bước có thể tiếp theo. Đoạn mã PyTorch sau đây minh họa cách định nghĩa một lớp chính sách đơn giản và lấy mẫu một hành động. Trong khi việc xây dựng các vision model như Ultralytics YOLO26 yêu cầu dự đoán tọa độ bounding box, GFlowNets sử dụng categorical distributions để chọn trạng thái tiếp theo trong đường dẫn tạo sinh của nó.
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()}")Nếu bạn đang phát triển các giải pháp AI phức tạp bằng Python, bạn có thể dễ dàng chú thích tập dữ liệu, huấn luyện và triển khai model bằng cách sử dụng Ultralytics Platform. Dù bạn tập trung vào các tác vụ object detection tốc độ cao hay khám phá các kiến trúc tạo sinh, việc sở hữu một đường ống machine learning operations (MLOps) vững chắc là điều cốt lõi để mở rộng quy mô model hiệu quả.






