Deep Reinforcement Learning
Học tăng cường sâu (DRL) sử dụng mạng nơ-ron để học chính sách và giá trị từ đầu vào thô như pixel. Nội dung đề cập DQN, PPO, kết quả và giới hạn.
Học tăng cường sâu (DRL) kết hợp học tăng cường (RL), trong đó một agent học bằng thử-sai để tối đa hóa reward, với mạng nơ-ron sâu dùng để biểu diễn những gì agent học được. RL cổ điển lưu một giá trị cho từng trạng thái trong bảng, điều không thể thực hiện khi trạng thái là ảnh camera hoặc góc khớp liên tục của robot. Thay vào đó, mạng nơ-ron ánh xạ các quan sát thô, có số chiều cao như pixel, lượt quét lidar hoặc văn bản, thành giá trị hành động hoặc xác suất hành động, rồi khái quát hóa sang những trạng thái chưa từng gặp. DQN của DeepMind khiến phương pháp này nổi tiếng vào năm 2015 khi học chơi 49 trò chơi Atari 2600 chỉ từ pixel màn hình và điểm số trò chơi, dùng một kiến trúc mạng cùng một bộ hyperparameter, đạt trình độ tương đương một người thử nghiệm trò chơi chuyên nghiệp.
Cách deep RL hoạt động#
Agent vẫn tuân theo vòng lặp RL của một quá trình quyết định Markov: quan sát trạng thái, hành động, nhận reward và cập nhật. Điểm khác biệt là hiện nay một mạng có hàng triệu parameter lưu trữ một hoặc nhiều thành phần sau:
- Hàm giá trị: Mạng dự đoán tổng reward kỳ vọng của mỗi hành động và agent chọn hành động có giá trị cao nhất. Mạng của DQN nhận bốn khung hình trò chơi gần nhất, giảm kích thước xuống 84×84 pixel để có thể nhận biết chuyển động.
- Policy: Mạng xuất ra xác suất cho mỗi hành động, hoặc giá trị trung bình và độ phân tán của một hành động liên tục như góc lái; các phương pháp policy gradient điều chỉnh trực tiếp policy theo hướng tăng xác suất cho những hành động mang lại tổng reward cao.
- Actor và critic: Mạng actor chọn hành động, trong khi mạng critic ước tính giá trị để cho actor biết mỗi hành động tốt hơn kỳ vọng bao nhiêu; nhờ đó giảm nhiễu trong các lần cập nhật.
- World model: Các agent dựa trên model như Dreamer huấn luyện mạng dự đoán quan sát và reward trong tương lai, sau đó học policy bên trong simulator đã học được đó.
Huấn luyện mạng trên dữ liệu do chính agent tạo ra không ổn định, vì các khung hình liên tiếp có tương quan cao và mục tiêu thay đổi theo sự thay đổi của mạng. DQN giải quyết vấn đề này bằng hai ý tưởng được các thuật toán sau tiếp tục sử dụng: buffer replay kinh nghiệm để huấn luyện trên các minibatch ngẫu nhiên gồm những chuyển tiếp trong quá khứ, và mạng mục tiêu riêng chỉ được cập nhật định kỳ:
Policy gradient trong mã#
Các phương pháp policy gradient bỏ qua hoàn toàn bảng giá trị: chúng lấy mẫu hành động từ mạng rồi tăng xác suất của những hành động được theo sau bởi tổng reward cao. Ví dụ PyTorch này huấn luyện một mạng policy nhỏ bằng REINFORCE, thuật toán policy gradient đầu tiên, để giữ thăng bằng một cây sào trên xe đẩy đang chuyển động trong môi trường Gymnasium CartPole:
import gymnasium as gym
import torch
from torch import nn
torch.manual_seed(0)
env = gym.make("CartPole-v1")
policy = nn.Sequential(nn.Linear(4, 64), nn.ReLU(), nn.Linear(64, 2)) # cart and pole state -> logits for left/right
optimizer = torch.optim.Adam(policy.parameters(), lr=0.02)
lengths = []
for episode in range(500):
obs, _ = env.reset(seed=episode)
log_probs, rewards, done = [], [], False
while not done: # play one episode with the current policy, earning +1 per step the pole stays up
dist = torch.distributions.Categorical(logits=policy(torch.as_tensor(obs)))
action = dist.sample()
obs, reward, terminated, truncated, _ = env.step(action.item())
log_probs.append(dist.log_prob(action))
rewards.append(reward)
done = terminated or truncated
# REINFORCE: raise the log-probability of actions followed by above-average discounted return
returns = torch.tensor([sum(0.99**k * r for k, r in enumerate(rewards[t:])) for t in range(len(rewards))])
loss = -(torch.stack(log_probs) * (returns - returns.mean()) / (returns.std() + 1e-8)).sum()
optimizer.zero_grad()
loss.backward()
optimizer.step()
lengths.append(len(rewards))
print(f"Average episode length: first 20 = {sum(lengths[:20]) / 20:.0f}, last 20 = {sum(lengths[-20:]) / 20:.0f}")Kết quả in ra là first 20 = 14, last 20 = 500: mạng chưa huấn luyện làm sào đổ trong khoảng 14 bước, còn sau 500 episode, mạng giữ thăng bằng trong toàn bộ giới hạn 500 bước của mỗi episode. Với các seed ngẫu nhiên khác, cùng script có thể bị đình trệ hoặc suy sụp giữa chừng khi huấn luyện; đây là phương sai cao mà critic và các cập nhật bị cắt của Proximal Policy Optimization (PPO) được thiết kế để giảm thiểu. Các thư viện như Stable-Baselines3 cung cấp các triển khai đã được kiểm thử của PPO, DQN và soft actor-critic (SAC).
Các ứng dụng tiêu biểu#
- Trò chơi: Sau Atari, các agent deep RL đánh bại nhà vô địch thế giới môn cờ vây bằng AlphaGo và đạt cấp đại kiện tướng trong StarCraft II bằng AlphaStar, kết hợp học từ các ván đấu của con người với tự chơi bằng RL.
- Đua drone: Drone Swift của Đại học Zurich, được huấn luyện bằng deep RL trong mô phỏng và tinh chỉnh bằng dữ liệu bay thực, đã thắng nhiều cuộc đua đối đầu với từng người trong số ba phi công vô địch vào năm 2023, đồng thời lập thời gian đua nhanh nhất từng được ghi nhận.
- Năng lượng nhiệt hạch: DeepMind và Swiss Plasma Center của EPFL sử dụng policy deep RL để điều khiển các cuộn dây từ của tokamak, định hình plasma thành nhiều cấu hình, bao gồm đồng thời hai "giọt" plasma riêng biệt.
- Robot học: Robot có chân học cách đi trên địa hình gồ ghề bằng policy được huấn luyện trên hàng nghìn robot mô phỏng, với ma sát và khối lượng được ngẫu nhiên hóa để policy vẫn hoạt động khi chuyển sang phần cứng thực.
- Model ngôn ngữ: Tinh chỉnh RL các policy Transformer bằng reward dựa trên sở thích hoặc được kiểm tra tự động đã tạo nên các trợ lý chat và model suy luận ngày nay.
Tri giác dưới dạng quan sát#
Mạng nơ-ron tích chập của DQN phải học cách nhìn chỉ dựa vào phần thưởng, từ 84×84×4 = 28,224 giá trị pixel ở mỗi bước. Thay vào đó, nhiều hệ thống robot và xe tự hành cung cấp cho policy đầu ra của model thị giác máy tính đã được pretrained, giúp giảm kích thước quan sát và cho phép thuật toán RL dành các mẫu dữ liệu cho việc ra quyết định. Ultralytics YOLO26 ở chế độ tracking biến mỗi khung hình camera thành một lớp, một bounding box và một ID ổn định cho từng đối tượng, tạo ra trạng thái lấy đối tượng làm trung tâm mà policy cũng có thể dùng để đọc chuyển động của từng đối tượng qua các khung hình.
Thách thức#
Deep RL đòi hỏi nhiều dữ liệu: DQN được huấn luyện trên 50 triệu khung hình cho mỗi trò chơi, tương đương khoảng 38 ngày chơi, đó là lý do hầu hết policy của robot được huấn luyện trong mô phỏng rồi chuyển sang phần cứng thực. Vật lý mô phỏng không bao giờ khớp chính xác với thực tế, vì vậy kỹ sư ngẫu nhiên hóa ma sát, khối lượng, ánh sáng và kết cấu bằng ngẫu nhiên hóa miền, đồng thời bổ sung dữ liệu tổng hợp cho các điều kiện hiếm gặp. Kết quả cũng biến động theo seed ngẫu nhiên, siêu tham số và chi tiết triển khai, một vấn đề về khả năng tái lập được mô tả trong Deep Reinforcement Learning That Matters. Một optimizer mạnh cũng có thể tìm ra kẽ hở trong mọi hàm thưởng không hoàn hảo, một kiểu lỗi được gọi là lách luật phần thưởng, chẳng hạn khi một tác tử đua thuyền học cách chạy vòng tròn vô tận để tích điểm thay vì về đích.
Deep RL và các thuật ngữ liên quan#
- Học tăng cường: Lĩnh vực rộng hơn. RL dạng bảng phù hợp với các bài toán nhỏ, còn deep RL là RL sử dụng mạng nơ-ron làm bộ xấp xỉ hàm.
- Deep learning: Deep learning thông thường được huấn luyện trên một tập dữ liệu cố định có gán nhãn. Trong deep RL, các hành động của chính tác tử tạo ra dữ liệu và tín hiệu huấn luyện là phần thưởng đến trễ thay vì nhãn.
- Học tăng cường từ phản hồi của con người (RLHF): Phương pháp deep RL trong đó model phần thưởng được học từ các so sánh sở thích của con người thay cho phần thưởng viết thủ công, dùng để căn chỉnh các model ngôn ngữ.
- Điều khiển dự đoán mô hình: MPC giải một bài toán tối ưu mới trên model tường minh ở mỗi bước điều khiển, trong khi policy deep RL đã huấn luyện chọn từng hành động chỉ bằng một lượt lan truyền tiến qua mạng.










