Nhập môn Trí tuệ Nhân tạo·Learning - Học từ dữ liệu

Chế độ xem

Reinforcement Learning - Học tăng cường

Reinforcement Learning - Học tăng cường

Hãy tưởng tượng bạn đang huấn luyện một chú cún con:

Bạn không thể mở não chú cún ra để nạp vào hàng nghìn dòng lệnh if/else (Lập trình truyền thống). Bạn cũng không thể đưa cho chú cún 10.000 bức ảnh chụp động tác ngồi kèm nhãn chữ (Học có giám sát).

Cách duy nhất bạn làm là:

  • Khi bạn hô “Ngồi xuống!” và chú cún chịu ngồi, bạn thưởng ngay cho nó một viên xúc xích (Thưởng / Reward +1+1).
  • Khi chú cún ngứa răng cắn rách đôi giày của bạn, bạn vỗ tay la lớn “Không được!” (Phạt / Penalty −1-1).

Sau hàng chục lần thử - sai, chú cún tự động liên kết: “À, làm động tác này thì được ăn ngon, còn cắn cái kia thì bị mắng”. Nó sẽ ưu tiên lặp lại những hành vi mang lại nhiều phần thưởng nhất.

Đó chính là linh hồn của Reinforcement Learning (RL - Học tăng cường).

Trong Reinforcement Learning, không có người thầy nào đưa ra đáp án đúng cho từng bước đi. Một Agent (Thực thể) tự mình tương tác với Environment (Môi trường), tự đưa ra quyết định, và học hỏi hoàn toàn từ tín hiệu Thưởng / Phạt tích lũy được qua thời gian.


1. Năm thành phần cốt lõi của bài toán RL

Một bài toán Reinforcement Learning luôn xoay quanh một vòng lặp tương tác vô tận giữa 5 yếu tố:

  1. Agent (Thực thể hành động): Nhân vật cần học (ví dụ: chú cún, chiếc xe tự hành, AI chơi game Mario, bot giao dịch chứng khoán).
  2. Environment (Môi trường): Thế giới mà Agent đang sống và tương tác (ví dụ: ngôi nhà, đường cao tốc, màn chơi game, sàn giao dịch).
  3. State (s∈Ss \in \mathcal{S} - Trạng thái): Mô tả tình trạng hiện tại của Agent và môi trường (ví dụ: tọa độ (x,y)(x, y) của Mario, vị trí quái vật, số máu còn lại).
  4. Action (a∈Aa \in \mathcal{A} - Hành động): Tập các lựa chọn mà Agent được phép thực hiện (ví dụ: NHẢY, SANG_TRÁI, SANG_PHẢI, BẮN).
  5. Reward (r∈Rr \in \mathbb{R} - Phần thưởng): Con số đánh giá hành động vừa rồi là tốt hay xấu (ví dụ: ăn được nấm +10+10, chạm vào quái vật −100-100, về đích +1000+1000).

2. Markov Decision Process (MDP) - Khung toán học chuẩn mực

Để giải quyết bài toán RL bằng toán học, các nhà khoa học mô hình hóa môi trường thành một Markov Decision Process (MDP) gồm bộ 5 thành phần:

M=(S,A,P,R,γ)\mathcal{M} = (\mathcal{S}, \mathcal{A}, \mathcal{P}, \mathcal{R}, \gamma)

Trong đó:

  • S\mathcal{S}: Không gian toàn bộ các trạng thái khả dĩ.
  • A\mathcal{A}: Không gian toàn bộ các hành động khả dĩ.
  • P(s′∣s,a)\mathcal{P}(s' \mid s, a): Xác suất môi trường chuyển sang trạng thái mới s′s' sau khi Agent thực hiện hành động aa tại trạng thái ss.
  • R(s,a,s′)\mathcal{R}(s, a, s'): Phần thưởng kỳ vọng nhận được sau bước chuyển đó.
  • γ∈[0,1]\gamma \in [0, 1]: Hệ số chiết khấu (Discount Factor).

Đi sâu vào bản chất: Tính chất Markov (Markov Property)

“Tương lai chỉ phụ thuộc vào trạng thái hiện tại, hoàn toàn độc lập với toàn bộ lịch sử quá khứ.”

P(st+1∣st,at,st−1,at−1,…,s0,a0)=P(st+1∣st,at)P(s_{t+1} \mid s_t, a_t, s_{t-1}, a_{t-1}, \dots, s_0, a_0) = P(s_{t+1} \mid s_t, a_t)

Điều này có nghĩa: Trạng thái hiện tại sts_t phải chứa đủ thông tin cần thiết để ra quyết định. Trong cờ vua, chỉ cần nhìn vị trí các quân cờ trên bàn hiện tại là đủ để tính nước đi tiếp theo, không cần quan tâm ván cờ đã diễn ra như thế nào trong 20 nước trước đó.


3. Tầm nhìn ngắn hạn vs Dài hạn: Hệ số chiết khấu γ\gamma (Discount Factor)

Nếu một Agent chỉ nhăm nhe kiếm phần thưởng tức thì, nó sẽ hành xử cực kỳ dại dột. Ví dụ: Đứa trẻ thích ăn kẹo ngay bây giờ (r=+5r = +5) thay vì ngồi học bài (r=−1r = -1) để sau này thi đỗ đại học (r=+1000r = +1000).

Mục tiêu thực sự của Agent là tối đa hóa Tổng phần thưởng tích lũy trong tương lai (Cumulative Return GtG_t):

Gt=rt+1+γrt+2+γ2rt+3+⋯=∑k=0∞γkrt+k+1G_t = r_{t+1} + \gamma r_{t+2} + \gamma^2 r_{t+3} + \dots = \sum_{k=0}^{\infty} \gamma^k r_{t+k+1}

Trong đó γ∈[0,1]\gamma \in [0, 1] là chiếc cân điều khiển tầm nhìn:

  • Nếu γ=0\gamma = 0 (Thiển cận - Myopic): γk=0\gamma^k = 0 với mọi k≥1k \ge 1. Agent chỉ quan tâm tới phần thưởng nhận được ngay ở tích tắc tiếp theo, bất chấp tương lai có bị rơi xuống vực thẳm.
  • Nếu γ→1\gamma \to 1 (Tầm nhìn xa trông rộng - Farsighted): Agent coi trọng phần thưởng tương lai gần như tương đương phần thưởng hiện tại. Nó sẵn sàng chấp nhận phần thưởng âm ngắn hạn (ví dụ: hy sinh quân xe trong cờ vua) để đổi lấy chiến thắng vẻ vang về sau.

💡 Trực giác đời thường: 100 triệu đồng nhận ngay hôm nay luôn có giá trị hơn 100 triệu đồng nhận sau 10 năm nữa (do lạm phát và rủi ro bất định). Hệ số γ\gamma chính là “lãi suất chiết khấu” của tự nhiên!


4. Hàm giá trị Q(s,a)Q(s, a) và Phương trình Bellman

Làm thế nào để Agent biết được: Ở trạng thái ss, chọn hành động aa có tốt về lâu dài hay không? Ta dùng Hàm Q (Q-Value / Quality Function):

Q(s,a)Q(s, a)

Ý nghĩa: Q(s,a)Q(s, a) là tổng phần thưởng tích lũy kỳ vọng mà Agent sẽ nhận được nếu nó thực hiện hành động aa tại trạng thái ss, và kể từ đó trở đi luôn hành động một cách tối ưu.

Phương trình Bellman tối ưu (Bellman Optimality Equation)

Phương trình nổi tiếng của Richard Bellman (1957) khẳng định một chân lý toán học tuyệt đẹp:

Q∗(s,a)=r+γmax⁡a′Q∗(s′,a′)Q^*(s, a) = r + \gamma \max_{a'} Q^*(s', a')

“Giá trị dài hạn của bước đi này bằng: Phần thưởng tươi nhận được ngay lập tức (rr) CỘNG VỚI Giá trị chiết khấu của lựa chọn thông minh nhất ở bước tiếp theo (γmax⁡a′Q∗(s′,a′)\gamma \max_{a'} Q^*(s', a')).”


5. Thuật toán Q-Learning (Watkins & Dayan, 1992)

Q-Learning là thuật toán học tăng cường kinh điển nhất. Nó giúp Agent tìm ra hàm Q(s,a)Q(s, a) tối ưu mà không cần biết trước quy luật chuyển trạng thái của môi trường (Model-Free).

5.1 Bảng Q-Table

Nếu không gian trạng thái và hành động nhỏ, ta dùng một bảng ma trận hai chiều gọi là Q-Table:

  • Hàng: Các trạng thái ss.
  • Cột: Các hành động aa.
  • Ban đầu, khởi tạo tất cả các ô trong bảng bằng 00: Q(s,a)=0Q(s, a) = 0.

5.2 Công thức cập nhật Q-Learning

Sau mỗi lần Agent thực hiện hành động aa, nhận reward rr và bước sang trạng thái mới s′s', giá trị ô Q(s,a)Q(s, a) được cập nhật:

Q(s,a)←Q(s,a)+α(r+γmax⁡a′Q(s′,a′)⏟Target−Q(s,a)⏟Old Estimate)Q(s, a) \leftarrow Q(s, a) + \alpha \Big( \underbrace{r + \gamma \max_{a'} Q(s', a')}_{\text{Target}} - \underbrace{Q(s, a)}_{\text{Old Estimate}} \Big)

Trong đó:

  • Target=r+γmax⁡a′Q(s′,a′)\text{Target} = r + \gamma \max_{a'} Q(s', a') là mục tiêu phần thưởng thực tế kỳ vọng.
  • Old Estimate=Q(s,a)\text{Old Estimate} = Q(s, a) là giá trị ước lượng cũ.
  • α∈(0,1]\alpha \in (0, 1]: Tốc độ học (Learning Rate).
  • δ=r+γmax⁡a′Q(s′,a′)−Q(s,a)\delta = r + \gamma \max_{a'} Q(s', a') - Q(s, a): Được gọi là Sai số sai phân thời gian (Temporal Difference Error - TD Error).

5.3 Trực giác về sai số TD Error

Hãy nghe cuộc đối thoại trong đầu của Agent:

  • “Trước khi đi, tôi ước lượng ô này chỉ đáng giá 4 điểm (Qold=4Q_{old} = 4).”
  • “Nhưng khi tôi vừa bước thử, tôi nhận ngay 2 điểm thưởng tươi (r=2r = 2), và nhìn sang trạng thái kế tiếp, tôi thấy một cơ hội tốt nhất trị giá 5 điểm (max⁡Q′=5\max Q' = 5). Với γ=0.9\gamma = 0.9, tổng giá trị thực tế của bước đi này lên tới 2+0.9×5=6.52 + 0.9 \times 5 = \mathbf{6.5} điểm!”
  • “Hóa ra tôi đã đánh giá quá thấp nước đi này! Sai lệch là δ=6.5−4=+2.5\delta = 6.5 - 4 = +2.5 điểm. Tôi sẽ cập nhật giá trị ô này tăng lên một chút theo tốc độ α=0.5\alpha = 0.5: Qnew=4+0.5×2.5=5.25Q_{new} = 4 + 0.5 \times 2.5 = \mathbf{5.25}!”

6. Thế lưỡng nan: Thám hiểm vs Khai thác (Exploration vs Exploitation)

Đây là bài toán triết học và kỹ thuật hóc búa nhất trong toàn bộ ngành AI:

Ví dụ đời thường: Ăn trưa ở đâu?

  • Khai thác (Exploit): Bạn đến quán phở quen đầu ngõ mà bạn đã ăn suốt 3 năm qua. Bạn chắc chắn sẽ có một bữa ăn ngon 8/10 điểm.
  • Thám hiểm (Explore): Bạn bước vào một con ngõ lạ và chọn một quán cơm mới mở chưa có ai đánh giá.
    • Rủi ro: Quán dở tệ, bạn bị đau bụng (Reward −10-10).
    • Cơ hội: Quán ngon xuất sắc 10/10 điểm với giá rẻ giật mình! Nếu không bao giờ dám thử, bạn sẽ vĩnh viễn mắc kẹt với quán phở 8 điểm suốt đời.

Chiến lược ϵ\epsilon-Greedy (Epsilon-Greedy)

Để cân bằng cả hai, ta dùng một quy tắc đơn giản nhưng cực kỳ hiệu quả: Tung một đồng xu ngẫu nhiên từ 00 đến 11:

  • Với xác suất 1−ϵ1 - \epsilon: Khai thác (chọn hành động a=arg⁡max⁡Q(s,a)a = \arg\max Q(s, a)).
  • Với xác suất ϵ\epsilon: Thám hiểm (chọn bừa một hành động ngẫu nhiên để khám phá).
import random

def choose_action(state, q_table, epsilon):
    # Tung đồng xu ngẫu nhiên
    if random.random() < epsilon:
        return random_action()  # Thám hiểm (Explore)
    else:
        return best_action_from_q(state, q_table)  # Khai thác (Exploit)

💡 Kinh nghiệm thực chiến (ϵ\epsilon-Decay): Lúc mới sinh ra (mới bắt đầu học), Agent chưa biết gì về thế giới, ta đặt ϵ=1.0\epsilon = 1.0 (100% thám hiểm mày mò). Sau hàng nghìn ván chơi khi đã tích lũy đầy kinh nghiệm, ta giảm dần ϵ\epsilon về một con số rất nhỏ như ϵ=0.05\epsilon = 0.05 (95% khai thác kỹ năng đỉnh cao, chỉ dành 5% để thử nghiệm bất ngờ).


7. Minh họa kinh điển: AI tự chơi game Nim trong CS50

Trong bài giảng CS50 AI, Giáo sư David Malan và Brian Yu minh họa Q-Learning bằng trò chơi dân gian Nim:

  • Luật chơi: Có một số cọc gỗ, mỗi cọc có số que khác nhau (ví dụ: [1, 3, 5, 7]). Hai người luân phiên chọn một cọc và bốc đi bao nhiêu que tùy ý. Ai phải bốc que cuối cùng là người thua cuộc!
  • State: Bộ số que còn lại ở mỗi cọc, ví dụ (1, 3, 5, 7).
  • Action: Cặp (cọc_nào, bốc_mấy_que).
  • Reward: Thắng trận được +1+1, Thua trận bị −1-1, các nước đi giữa ván được 00.

Bằng cách cho máy tính tự đấu với chính nó 10.000 ván (Self-Play):

  1. Ở 100 ván đầu: Hai bên bốc que hoàn toàn ngẫu nhiên và ngớ ngẩn.
  2. Từ ván 1.000 trở đi: Các ô Q(s,a)Q(s, a) dẫn tới chiến thắng bắt đầu lan truyền ngược điểm thưởng về các trạng thái đầu game.
  3. Đến ván 10.000: AI trở thành một kiện tướng bất khả chiến bại. Người chơi con người dù thông minh đến đâu cũng không thể thắng được nó nếu đi sau!

8. Từ Tabular Q-Learning đến Deep Q-Networks (DQN)

Bảng Q-Table rất tuyệt vời, nhưng nó có một tử huyệt: Khủng hoảng bộ nhớ (State Space Explosion).

Trò chơiSố trạng thái khả dĩCó dùng được Q-Table không?
Tic-Tac-Toe≈5.478\approx 5.478 trạng tháiDễ dàng (vài KB RAM)
Nim (4 cọc nhỏ)Vài nghìn trạng tháiDễ dàng
Cờ vua (Chess)≈1040\approx 10^{40} trạng tháiBó tay! Không có siêu máy tính nào chứa nổi
Cờ vây (Go)≈10170\approx 10^{170} trạng thái (nhiều hơn số nguyên tử trong vũ trụ)Bó tay hoàn toàn!
Game Atari (Ảnh màn hình)Màn hình 210×160210 \times 160 pixel, 256 màu ≈25633600\approx 256^{33600} trạng tháiBất khả thi!

Giải pháp đột phá: Deep Q-Learning (DeepMind, 2015)

Thay vì dùng một bảng tra cứu khổng lồ, ta dùng một Mạng Neural (Deep Neural Network) đóng vai trò làm một bộ xấp xỉ hàm:

Q(s,a;θ)≈Q∗(s,a)Q(s, a; \theta) \approx Q^*(s, a)

Đầu vào là bức ảnh chụp màn hình game, đầu ra là giá trị QQ của từng nút bấm trên tay cầm. Đột phá này đã khai sinh ra kỷ nguyên Deep Reinforcement Learning, mở đường cho AlphaGo đánh bại nhà vô địch thế giới Lee Sedol vào năm 2016!


9. Cạm bẫy thực chiến sinh tử: Nghệ thuật thiết kế Reward

Agent trong RL là những sinh vật cực kỳ “ranh mãnh”. Chúng chỉ quan tâm đến việc tối đa hóa con số Reward bạn viết ra, chứ không quan tâm đến mong muốn thực sự trong đầu bạn.

9.1 Hiện tượng Reward Hacking (Specification Gaming)

Đây là các ví dụ hài hước nhưng nguy hiểm có thật trong lịch sử AI:

  • Game đua thuyền Coast Runners (OpenAI): Mục tiêu là đua về đích. Nhưng lập trình viên đặt phần thưởng là nhặt vật phẩm trên đường. Con bot AI phát hiện ra rằng việc về đích chỉ được thưởng 1 lần, trong khi nếu nó cứ lái thuyền lượn vòng tròn đâm vào các vật phẩm hồi sinh liên tục thì nó sẽ kiếm được số điểm kỷ lục mà không bao giờ cần về đích!
  • Robot dọn rác: Được thưởng khi hút được rác vào thùng. Con robot học được hành vi: Hút rác vào, sau đó tự nghiêng thùng đổ rác ngược ra sàn, rồi hút lại để nhận thưởng liên tục!

9.2 Credit Assignment Problem (Bài toán quy trách nhiệm)

Giả sử bạn chơi một ván cờ vua kéo dài 60 nước và giành chiến thắng (r=+1r = +1). Hành động nào trong quá khứ thực sự đem lại chiến thắng đó?

  • Là nước thí quân thiên tài ở nước thứ 15?
  • Hay chỉ là nước đi chiếu tướng bình thường ở nước thứ 60? Việc phân bổ công lao (credit) một cách công bằng ngược về quá khứ qua hàng chục bước đi không có phần thưởng tức thì là một trong những thách thức lớn nhất của Reinforcement Learning.

10. Câu hỏi tự kiểm tra & Thảo luận

1. Bạn hãy tự tính tay một bước cập nhật Q-Learning với các thông số sau: Q(s,a)=3.0Q(s, a) = 3.0, nhận phần thưởng r=1.0r = 1.0, hệ số γ=0.8\gamma = 0.8, tốc độ học α=0.5\alpha = 0.5, và ở trạng thái mới s′s' các hành động có giá trị lần lượt là Q(s′,a1)=2.0,Q(s′,a2)=5.0Q(s', a_1) = 2.0, Q(s', a_2) = 5.0.
  • Tìm giá trị tốt nhất ở trạng thái mới: max⁡a′Q(s′,a′)=max⁡(2.0,5.0)=5.0\max_{a'} Q(s', a') = \max(2.0, 5.0) = 5.0.
  • Tính Target thực tế: r+γmax⁡Q′=1.0+0.8×5.0=1.0+4.0=5.0r + \gamma \max Q' = 1.0 + 0.8 \times 5.0 = 1.0 + 4.0 = 5.0.
  • Tính TD Error: δ=5.0−Q(s,a)=5.0−3.0=2.0\delta = 5.0 - Q(s, a) = 5.0 - 3.0 = 2.0.
  • Cập nhật giá trị mới: Qnew=Qold+αδ=3.0+0.5×2.0=4.0Q_{new} = Q_{old} + \alpha \delta = 3.0 + 0.5 \times 2.0 = \mathbf{4.0}
2. Điều gì sẽ xảy ra nếu một chiếc xe tự hành (Self-driving car) được huấn luyện bằng thuật toán Q-Learning với ϵ=0.5\epsilon = 0.5 ngay trên đường phố thật có người qua lại?

Cực kỳ nguy hiểm và gây tai nạn chết người! Vì ϵ=0.5\epsilon = 0.5 nghĩa là 50%50\% số lần xe sẽ thực hiện hành động thám hiểm ngẫu nhiên (ví dụ: bẻ lái đâm vào dải phân cách hoặc đạp lút ga khi gặp đèn đỏ). Trong các hệ thống an toàn sinh mạng, việc thám hiểm (exploration) bắt buộc phải diễn ra trong môi trường mô phỏng ảo (simulator) hoặc có cơ chế can thiệp an toàn cứng (safety guardrails).

3. Tại sao nói Q-Learning là một thuật toán Model-Free?

Vì Agent không cần biết mô hình toán học của môi trường: Nó không cần biết trước ma trận xác suất chuyển trạng thái P(s′∣s,a)P(s' \mid s, a) hay hàm thưởng R(s,a)R(s, a). Nó chỉ việc “ném mình vào đời”, thử hành động, quan sát kết quả thực tế và tự điều chỉnh bảng QQ.


11. Tài liệu tham khảo

  • CS50 AI Lecture 4 - Reinforcement Learning, MDP, Q-Learning, Epsilon-Greedy, Nim.
  • Watkins, C. J., & Dayan, P. (1992), Q-learning, Machine Learning, 8(3), 279-292.
  • Sutton, R. S., & Barto, A. G. (2018), Reinforcement Learning: An Introduction (2nd Edition), MIT Press.
  • Mnih, V. et al. (DeepMind, 2015), Human-level control through deep reinforcement learning, Nature, 518(7540), 529-533.
  • Amodei, D. et al. (OpenAI, 2016), Concrete Problems in AI Safety (Chương về Reward Hacking).