Q-learning trên Gridworld là gì? Cho agent tự học đường đi tốt nhất trên lưới 2D

Khi làm việc với học tăng cường (Reinforcement Learning), một bài toán kinh điển là: cho một agent sống trong một thế giới đơn giản (Gridworld), mỗi bước có thể đi lên/xuống/trái/phải, nhận thưởng/phạt, và mục tiêu là tự học cách đi đến ô đích sao cho tổng phần thưởng cao nhất.

Q-learning trên Gridworld là gì? Cho agent tự học đường đi tốt nhất trên lưới 2D

Q-learning là một thuật toán RL rất nổi tiếng, giúp agent học bảng Q – tức giá trị “tốt xấu” của việc chọn một hành động nhất định tại một trạng thái (ô trên lưới).

Trong bài này, chúng ta sẽ:

  • Hiểu trực giác: Q-learning đang học cái gì trong Gridworld.
  • Xem dạng công thức cập nhật Q-value.
  • Demo trực quan: agent tự train trên lưới 2D, sau đó chạy theo policy đã học.

Trực giác về Q-learning trong Gridworld

Ta có một lưới vuông, mỗi ô là một trạng thái (state). Agent:

  • Trạng thái (state): vị trí (hàng, cột) trên lưới.
  • Hành động (action): đi lên, xuống, trái, phải.
  • Reward:
    • -1 mỗi bước di chuyển (khuyến khích đi đường ngắn).
    • +10 khi đến ô đích (goal).
    • Ô tường (wall) không đi qua được.

Q-learning sẽ học một bảng Q[s][a] (cho mỗi state s và action a) để xấp xỉ:

Q(s, a) ≈ giá trị kỳ vọng của tổng reward khi chọn action a tại state s và làm tốt nhất về sau.

Sau khi học xong, ta có thể dùng policy tham lam (greedy): ở mỗi ô, luôn chọn action có Q-value lớn nhất → ra được đường đi “tốt nhất” mà agent đã khám phá.

Cập nhật Q-learning (bản đơn giản)

Trong mỗi bước, agent:

  1. Ở trạng thái s, chọn hành động a (thường dùng ε-greedy: đôi khi random để khám phá).
  2. Nhận reward r, chuyển sang trạng thái mới s'.
  3. Cập nhật Q-value theo công thức:
Q(s, a) ← (1 - α) * Q(s, a) 
          + α * (r + γ * max<sub>a'</sub> Q(s', a'))
  • α (alpha) – learning rate: tốc độ học.
  • γ (gamma) – discount factor: mức ưu tiên tương lai.

Lặp lại qua nhiều episode → Q-table dần dần hội tụ, policy trở nên tốt hơn.

Mô hình demo: Q-learning trên lưới 8×8

Trong demo dưới đây, ta có:

  • Lưới 8×8 (Gridworld).
  • Có thể:
    • Click chọn ô Start, Goal, và thêm tường (Wall).
    • Nhấn “Train 1 episode” hoặc “Train 50 episodes”.
    • Nhấn “Chạy policy đã học” để xem agent đi như thế nào.
  • Trong quá trình train, log sẽ hiện reward và độ dài episode.

Demo Q-learning trên Gridworld bằng JavaScript

Demo: Q-learning trên Gridworld 2D

Xây lưới, train Q-learning, rồi cho agent chạy theo policy đã học.

Thông tin

Lưới 8×8. Chọn Start, Goal, vẽ tường, rồi train Q-learning.

Log

Chưa train episode nào.

Hướng dẫn dùng demo

Dưới đây là các bước cơ bản để tương tác với demo Q-learning trên Gridworld:

  1. Chuẩn bị bản đồ (map)
    • Bấm nút “Reset lưới” để đưa lưới về trạng thái mặc định (có sẵn Start và Goal).
    • Dùng dropdown “Chế độ click”:
      • Vẽ tường (Wall): click vào các ô để tạo / xóa tường (ô màu đen, agent không đi qua được).
      • Chọn Start: chọn ô bắt đầu cho agent (màu xanh lá).
      • Chọn Goal: chọn ô đích (màu vàng).
      • Xóa ô: đưa ô về trạng thái trống (trừ Start/Goal).
  2. Thiết lập số episode để train
    • Ở ô “Episodes/Lần train”, nhập số episode muốn chạy mỗi lần bấm Train N episodes (ví dụ: 50, 100…).
  3. Train Q-learning
    • Train 1 episode:
      • Agent xuất phát từ Start, di chuyển tối đa một số bước nhất định.
      • Mỗi bước sẽ nhận reward/phạt và cập nhật Q-table.
      • Kết quả episode (số bước, tổng reward) được log ở khung Log.
    • Train N episodes:
      • Chạy liên tiếp N episode theo giá trị đã nhập.
      • Log hiển thị thống kê của episode cuối cùng (steps, total reward).
  4. Chạy policy đã học
    • Bấm nút “Chạy policy đã học”.
    • Agent sẽ:
      • Bắt đầu từ ô Start.
      • Tại mỗi ô, chọn hành động có Q-value lớn nhất.
      • Di chuyển từng bước trên lưới, được vẽ bằng một chấm màu khác.
    • Khi dừng, khung Log sẽ báo:
      • Số bước đã đi.
      • Agent có đến được Goal hay không.
  5. Reset và thử lại
    • Bấm “Reset lưới” nếu muốn:
      • Xóa toàn bộ tường.
      • Đưa Start/Goal về mặc định.
      • Khởi tạo lại Q-table (train lại từ đầu).

Bình luận


  • Không có bình luận.

Init Toolbox

Nhấn Ctrl + \ trên máy tính, hoặc vuốt sang trái ở bất kỳ đâu trên mobile.

Đăng nhập





Đang tải...