Back to Home

RL - Từ TD-Learning đến Q-Learning

Trong bài viết trước, chúng ta đã chứng minh qua định lý Banach được rằng toán tử Bellman TT là một ánh xạ co (contraction mapping) và vì thế sẽ tồn tại một điểm cố định duy nhất QQ^*:

TQ=QTQ^* = Q^*

với:

(TQ)(s,a)=E[r+γmaxaQ(s,a)s,a](TQ)(s, a) = \mathbb{E} [r + \gamma \max_{a'} Q(s', a') | s, a]

Trong đó:

  • Q(s,a)Q(s, a): Giá trị của cặp trạng thái - hành động hiện tại.

  • rr: Phần thưởng tức thì (reward) nhận được sau khi thực hiện hành động aa tại trạng thái ss.

  • γ\gamma: Hệ số chiết khấu (discount factor), với 0γ<10 \le \gamma < 1. Đây là yếu tố then chốt để TT thỏa mãn điều kiện của một ánh xạ co.

  • maxaQ(s,a)\max_{a'} Q(s', a'): Giá trị ước tính tốt nhất có thể đạt được từ trạng thái kế tiếp ss'.

  • E[]\mathbb{E}[\cdot]: Giá trị kỳ vọng dựa trên xác suất chuyển trạng thái P(ss,a)P(s'|s, a).

Từ điểm cố định này, chúng ta có thể xác định Chính sách tối ưu (Optimal Policy) π\pi^* bằng cách chọn hành động mang lại giá trị QQ lớn nhất tại mỗi trạng thái:

π(s)=argmaxaQ(s,a)\pi^*(s) = \arg\max_{a} Q^*(s, a)

Về mặt ý nghĩa, QQ^* đại diện cho tổng phần thưởng tích lũy kỳ vọng lớn nhất mà agent có thể nhận được từ bất kỳ cặp trạng thái - hành động (s,a)(s, a) nào. Với mọi chính sách π\pi khác, ta luôn có:

Q(s,a)Qπ(s,a)Q^*(s, a) \geq Q^\pi(s, a)

Điều này lý giải tại sao QQ^* lại tối ưu. Tuy nhiên, theo lý thuyết, toán tử TT yêu cầu tính kỳ vọng trên toàn bộ không gian trạng thái và hành động:

E[r+γmaxaQ(s,a)]\mathbb E[r + \gamma \max_{a'} Q(s', a')]

Nhưng trong thực tế, chúng ta đối mặt với hai vấn đề:

  • Chúng ta thường không biết xác suất chuyển trạng thái P(ss,a)P(s'|s, a).

  • Chúng ta chỉ quan sát được các mẫu (samples) cụ thể dạng (s,a,r,s)(s, a, r, s'), thay vì tính toán trên toàn bộ phân phối vì không gian bài toán có thể siêu lớn.

Phương pháp Temporal Difference (TD) Learning: Thay kỳ vọng bằng samples

Như đã nêu phần trước, trong đa số các môi trường phức tạp (như điều khiển robot hay chơi game), chúng ta hoàn toàn không biết mô hình này (Model-free). Vì thế, thay vì ngồi tính toán mọi khả năng có thể xảy ra theo lý thuyết, chúng ta để Agent thực sự tương tác với môi trường rồi:

  • Quan sát thực tế: Khi Agent thực hiện hành động ata_t tại trạng thái sts_t, nó nhận về một kết quả thực tế duy nhất là cặp (rt+1,st+1)(r_{t+1}, s_{t+1}).

  • Thay thế kỳ vọng: Thay vì tính trung bình cộng của tất cả các kịch bản tương lai có thể xảy ra (kỳ vọng E\mathbb{E}), chúng ta lấy chính mẫu thực tế vừa thu được để đại diện cho giá trị của tương lai.

Và đó cũng chính là ý tưởng của TD Learning (sự khác biệt về thời gian) với hai tính chất chủ đạo:

  • Tính chất Temporal (Thời gian): Tại thời điểm tt, Agent có một ước lượng ban đầu là Q(st,at)Q(s_t, a_t). Để kiểm chứng ước lượng này, Agent phải đợi thời gian trôi qua đến bước t+1t+1 để thu thập thêm dữ liệu thực tế từ môi trường.

  • Tính chất Difference (Sự khác biệt): Sau khi có thông tin tại t+1t+1, Agent so sánh sự chênh lệch giữa cái mình đã biết và cái mình vừa thấy. Sự khác biệt này được gọi là TD Error:

    δt=rt+1+γmaxaQ(st+1,a)Mục tieˆu mới (TD Target)Q(st,at)Ước lượng cu˜\delta_t = \underbrace{r_{t+1} + \gamma \max_{a'} Q(s_{t+1}, a')}_{\text{Mục tiêu mới (TD Target)}} - \underbrace{Q(s_t, a_t)}_{\text{Ước lượng cũ}}

TD Learning chính là quá trình "lấy sai số của tương lai để sửa chữa nhận thức ở hiện tại". Chúng ta không thông tin hoàn hảo ngay từ đầu; thay vào đó, Agent sẽ liên tục tinh chỉnh các giá trị QQ sao cho sự khác biệt giữa các thời điểm (Temporal Difference) dần triệt tiêu về 0, tiến tới điểm cố định QQ^* mà định lý Banach đã dự báo.

Thuật toán Q-Learning

Như đã phân tích, TD Learning là một tư duy cập nhật bằng cách dùng sự chênh lệch giữa hai thời điểm để học. Khi áp dụng tư duy của TD Learning trực tiếp vào hàm QQ, chúng ta sẽ đi đến thuật toán Q-Learning theo các bước logic sau:

Bước 1: Tính sai số TD

Chúng ta biết rằng theo lý thuyết, tại điểm cố định QQ^*, sai số giữa 2 về của phương trình Bellman phải bằng 00. Trong thực tế, khi Agent tương tác và thu được một mẫu (st,at,rt+1,st+1)(s_t, a_t, r_{t+1}, s_{t+1}), sự chênh lệch (TD Error) xuất hiện:

δt=rt+1+γmaxaQ(st+1,a)Mục tieˆu thực teˆˊ (TD Target)Q(st,at)Ước lượng hiện tại\delta_t = \underbrace{r_{t+1} + \gamma \max_{a'} Q(s_{t+1}, a')}_{\text{Mục tiêu thực tế (TD Target)}} - \underbrace{Q(s_t, a_t)}_{\text{Ước lượng hiện tại}}

Mục tiêu của chúng ta là đưa sai số δt\delta_t về 00. Chúng ta định nghĩa hàm mất mát:

L=12δt2=12[rt+1+γmaxaQ(st+1,a)TargetQ(st,at)]2L=\frac 1 2 \delta_t^2 = \frac{1}{2} [ \underbrace{r_{t+1} + \gamma \max_{a'} Q(s_{t+1}, a')}_{\text{Target}} - Q(s_t, a_t) ]^2

Lấy đạo hàm riêng theo Q(st,at)Q(s_t, a_t):

LQ(st,at)=1[rt+1+γmaxaQ(st+1,a)TargetQ(st,at)]\frac{\partial L}{\partial Q(s_t, a_t)} = -1 \cdot [ \underbrace{r_{t+1} + \gamma \max_{a'} Q(s_{t+1}, a')}_{\text{Target}} - Q(s_t, a_t) ]

(Lưu ý: Trong toán học chuẩn của Q-Learning, chúng ta coi Target là một hằng số tại thời điểm cập nhật, nên không lấy đạo hàm thành phần max\max).

Bước 2: Công thức cập nhật (Update Rule)

Áp dụng quy tắc Gradient Descent: Qnew=QoldαGradientQ_{new} = Q_{old} - \alpha \cdot \text{Gradient}, đạo hàm vừa tính vào để đưa ra công thức cập nhật:

Q(st,at)Q(st,at)+α[rt+1+γmaxaQ(st+1,a)Q(st,at)]Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha [r_{t+1} + \gamma \max_{a'} Q(s_{t+1}, a') - Q(s_t, a_t)]

Trong đó:

  • Q(st,at)Q(s_t, a_t): Giá trị cũ mà chúng ta đang lưu trữ trong bảng (hoặc mạng thần kinh).

  • α\alpha (Learning rate): Tốc độ học, quyết định chúng ta tin vào trải nghiệm mới vừa thu được bao nhiêu phần trăm (0<α10 < \alpha \le 1).

  • rt+1+γmaxaQ(st+1,a)r_{t+1}+\gamma\max_{a'} Q(s_{t+1}, a'): Chính là cách chúng ta xấp xỉ toán tử co TQTQ bằng dữ liệu mẫu. Nó đại diện cho toán tử Bellman tối ưu TT mà chúng ta đã chứng minh là ánh xạ co.

Áp dụng Q-Learning cho bài toán Grid-World

Bài toán Grid-World

Hãy tưởng tượng một Agent đang ở trong một mê cung ô lưới 4×4 (GridWorld) như hình dưới đây:

Mục tiêu của Agent là tìm đường đến G mà có thể tối đa hóa phần thưởng nhận được với các thông tin sau:

  • S (Start): Điểm bắt đầu.

  • G (Goal): Đích đến - nơi Agent nhận được phần thưởng hậu hĩnh (+100+100). Khi đến đích thì giả lập kết thúc.

  • Ô đỏ: Đi vào sẽ bị phạt nặng (phần thưởng 10−10)

  • Ô trắng: Đi vào sẽ bị phạt nhẹ (phần thưởng 1−1)

Luật chơi: Agent tại một ô bất kỳ có thể đi 1 trong 4 hướng: Lên, Xuống, Trái, Phải để sang ô mới.

Trong bài toán Grid-World mà chúng ta đã định nghĩa, không gian trạng thái (số ô trên lưới) và không gian hành động (Lên, Xuống, Trái, Phải) là hữu hạn và đủ nhỏ. Do đó, chúng ta sẽ sử dụng cấu trúc Tabular Q-Learning. Chúng ta sẽ khởi tạo một Bảng Q (Q-Table) dùng để lưu các giá trị Q(s,a)Q(s,a) rời rạc. Đây là cấu trúc lưu trữ Key-Value dạng (x,y,action) -> Value , trong đó:

  • Vị trí x,y của Agent trên lưới 2D chính là trạng thái ss.

  • Bốn hướng di chuyển cụ thể: up, down, left, right chính là hành động aa

  • Value là giá trị thực đại diện cho "chất lượng" của hành động đó tại vị trí đó

Demo

Comments

0/300

Leave name/email blank to comment anonymously

No comments yet. Be the first to comment!