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 framework machine learning mạnh mẽ được thiết kế cho mô hình hóa xác suất và amortized sampling. Chúng vượt trội trong việc tạo ra các đối tượng rời rạc, có tính tổ hợp bằng cách xử lý quá trình tạo như một tác vụ ra quyết định tuần tự. Thay vì chỉ tối đa hóa phần thưởng như 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 đa dạng các ứng viên có phần thưởng cao trong không gian mẫu cực lớn, giúp 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).
Link to this sectionCá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 tiến (forward policy), quyết đị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 nhất định. Bằng cách ánh xạ các quỹ đạo qua các trạng thái này, mô hình học được "dòng chảy" (flow) của 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, đảm bảo rằng xác suất tạo ra một đối tượng cụ thể phù hợp chặt chẽ với phần thưởng quan sát được của nó. Việc hyperparameter tuning đúng cách là rất 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 giá trị tối đa tuyệt đối, GFlowNets tự nhiên thúc đẩy sự đa dạng, điều này rất quan trọng khi điều hướng các combinatorial spaces phức tạp.
Link to this sectionGFlowNets so với các Generative AI khác#
Trong khi Generative AI bao gồm nhiều kỹ thuật, GFlowNets chiếm một vị thế độ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 biệt để 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 dẫn tối ưu duy nhất thông qua Markov Decision Process (MDP), GFlowNets vạch ra nhiều đường dẫn 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.
Link to this sectionCá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 pharmaceutical research, GFlowNets được sử dụng để tạo ra các peptide điều trị và đồ thị phân tử mới. Những tiến bộ gần đây, chẳng hạn như Atomic GFlowNets (A-GFN), xây dựng các phân tử theo từng nguyên tử để tối ưu hóa các đặ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 các ứ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 xác định trước.
- Causal Structure Learning: GFlowNets cũng được áp dụng để khám phá cấu trúc của các 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.
Link to this sectionTriển khai Forward Policy#
Khi xây dựng một GFlowNet, forward policy phải dự đoán một phân phối xác suất cho các bước tiếp theo có thể xảy ra. Đoạn mã PyTorch sau đây minh họa cách xác định một layer 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 mô hình thị giác như Ultralytics YOLO26 đòi hỏi việc dự đoán tọa độ khung hình bao, một GFlowNet sử dụng categorical distributions để chọn trạng thái tiếp theo trong lộ trình tạo 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ể chú thích tập dữ liệu, huấn luyện và triển khai mô hình một cách liền mạch bằng cách sử dụng Ultralytics Platform. Cho dù bạn đang 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 có một quy trình machine learning operations (MLOps) vững chắc là điều thiết yếu để mở rộng quy mô các mô hình của bạn một cách hiệu quả.






