Generative Flow Networks (GFlowNets)
Khám phá cách Mạng luồng tạo sinh (GFlowNets) sử dụng mô hình hóa xác suất để lấy mẫu các đối tượng rời rạc đa dạng có phần thưởng cao, phục vụ khám phá thuốc và học nhân quả.
Mạng luồng sinh (Generative Flow Networks), hay GFlowNet, là framework machine learning mạnh mẽ được thiết kế cho mô hình hóa xác suất và lấy mẫu khấu hao. Framework này đặc biệt hiệu quả trong việc tạo các đối tượng rời rạc có cấu trúc tổ hợp bằng cách xem quá trình tạo sinh 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ư thường thấy trong học tăng cường truyền thống, GFlowNet học cách lấy mẫu đối tượng với xác suất tỷ lệ thuận với một hàm phần thưởng được xác định trước. Nhờ đó, GFlowNet có thể khám phá các tập ứng viên đa dạng có phần thưởng cao trong không gian mẫu cực lớn, qua đó giảm thiểu hiệu quả hiện tượng sụp đổ model thường gặp ở các kiến trúc tạo sinh khác như Mạng đối kháng tạo sinh (GAN).
Nguyên lý và cơ chế cốt lõi#
GFlowNet hoạt động bằng cách di chuyển trong một môi trường có cấu trúc, bổ sung từng khối xây dựng theo từng bước để tạo thành đối tượng cuối cùng.
- Chính sách xuôi và ngược: Một mạng nơ-ron dự đoán chính sách xuôi, xác định phân phối xác suất trên các hành động khả thi từ một trạng thái nhất định. Bằng cách ánh xạ các quỹ đạo qua những trạng thái này, model học được "luồng" xác suất.
- Hàm mất cân bằng quỹ đạo: Quá trình huấn luyện thường dựa vào các mục tiêu tối ưu hóa như hàm mất cân bằng quỹ đạo, hàm này đảm bảo xác suất tạo ra một đối tượng cụ thể khớp sát với phần thưởng quan sát được. Điều chỉnh siêu tham số phù hợp là yếu tố thiết yếu để ổn định hàm mất mát này trong quá trình huấn luyện.
- Lấy mẫu tỷ lệ thuận: Bằng cách lấy mẫu tỷ lệ thuận với phần thưởng thay vì chỉ tìm giá trị lớn nhất tuyệt đối, GFlowNets tự nhiên đảm bảo tính đa dạng; đây là yếu tố then chốt khi khám phá các không gian tổ hợp phức tạp.
GFlowNets so với các AI tạo sinh khác#
Mặc dù AI tạo sinh bao gồm nhiều kỹ thuật, GFlowNets có một vị trí riêng biệt. Các Mô hình khuếch tán tiêu chuẩn hoặc các kỹ thuật như Khớp dòng thường biến đổi phân phối nhiễu liên tục thành dữ liệu. Ngược lại, GFlowNets được thiết kế chuyên 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 tử học tăng cường tiêu chuẩn hướng đến việc tìm một đường đi tối ưu duy nhất thông qua Quá trình quyết định Markov (MDP), GFlowNets lập bản đồ nhiều đường đi có phần thưởng cao để đảm bảo đầu ra được tạo ra đa dạng.
Ứng dụng 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 khiến GFlowNets đặc biệt có giá trị trong các lĩnh vực khoa học và cấu trúc.
- Khám phá thuốc và thiết kế phân tử: Trong nghiên cứu dược phẩm, GFlowNets được dùng để tạo ra các peptide trị liệu mới và đồ thị phân tử. Những tiến bộ gần đây, chẳng hạn như Atomic GFlowNets (A-GFN), xây dựng phân tử theo từng nguyên tử nhằm 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. Quy trình này tạo ra các ứng viên thuốc đa dạng hơn so với những phương pháp dựa vào các mảnh phân tử được xác định trước.
- Học cấu trúc nhân quả: GFlowNets cũng được ứng dụng để khám phá cấu trúc của Mạng Bayes nhân quả. GFlowNets xấp xỉ phân phối hậu nghiệm trên Đồ thị có hướng không chu trình (DAG), giúp các nhà nghiên cứu duy trì góc nhìn thực tế về bất định nhận thức khi mô hình hóa các mối quan hệ dữ liệu phức tạp.
Triển khai chính sách tiến#
Khi xây dựng GFlowNet, chính sách tiến phải dự đoán phân phối xác suất trên các bước tiếp theo có thể xảy ra. Đoạn mã PyTorch sau minh họa cách định nghĩa một lớp policy đơn giản và lấy mẫu một hành động. Trong khi việc xây dựng các model thị giác như Ultralytics YOLO26 đòi hỏi dự đoán tọa độ bounding box, GFlowNet sử dụng phân phối phân loại để chọn trạng thái tiếp theo trong đường đi tạo sinh.
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 gán nhãn dataset, huấn luyện và triển khai model bằng Nền tảng Ultralytics. Dù tập trung vào các tác vụ phát hiện đối tượng tốc độ cao hay khám phá các kiến trúc tạo sinh, việc có một quy trình vận hành học máy (MLOps) vững chắc là điều thiết yếu để mở rộng quy mô model một cách hiệu quả.









