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 ).
- 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 ).
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ố:
- 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).
- 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).
- State ( - 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 độ của Mario, vị trí quái vật, số máu còn lại).
- Action ( - 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). - Reward ( - 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 , chạm vào quái vật , về đích ).
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:
Trong đó:
- : Không gian toàn bộ các trạng thái khả dĩ.
- : Không gian toàn bộ các hành động khả dĩ.
- : Xác suất môi trường chuyển sang trạng thái mới sau khi Agent thực hiện hành động tại trạng thái .
- : Phần thưởng kỳ vọng nhận được sau bước chuyển đó.
- : 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ứ.”
Điều này có nghĩa: Trạng thái hiện tại 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 (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ờ () thay vì ngồi học bài () để sau này thi đỗ đại học ().
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 ):
Trong đó là chiếc cân điều khiển tầm nhìn:
- Nếu (Thiển cận - Myopic): với mọi . 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 (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ố chính là “lãi suất chiết khấu” của tự nhiên!
4. Hàm giá trị và Phương trình Bellman
Làm thế nào để Agent biết được: Ở trạng thái , chọn hành động có tốt về lâu dài hay không? Ta dùng Hàm Q (Q-Value / Quality Function):
Ý nghĩ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 tại trạng thái , 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:
“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 () 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 ().”
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 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 .
- Cột: Các hành động .
- Ban đầu, khởi tạo tất cả các ô trong bảng bằng : .
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 , nhận reward và bước sang trạng thái mới , giá trị ô được cập nhật:
Trong đó:
- là mục tiêu phần thưởng thực tế kỳ vọng.
- là giá trị ước lượng cũ.
- : Tốc độ học (Learning Rate).
- : Đượ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 ().”
- “Nhưng khi tôi vừa bước thử, tôi nhận ngay 2 điểm thưởng tươi (), 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 (). Với , tổng giá trị thực tế của bước đi này lên tới điểm!”
- “Hóa ra tôi đã đánh giá quá thấp nước đi này! Sai lệch là điểm. Tôi sẽ cập nhật giá trị ô này tăng lên một chút theo tốc độ : !”
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 ).
- 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 -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ừ đến :
- Với xác suất : Khai thác (chọn hành động ).
- Với xác suất : 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 (-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 (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 về một con số rất nhỏ như (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 , Thua trận bị , các nước đi giữa ván được .
Bằng cách cho máy tính tự đấu với chính nó 10.000 ván (Self-Play):
- Ở 100 ván đầu: Hai bên bốc que hoàn toàn ngẫu nhiên và ngớ ngẩn.
- Từ ván 1.000 trở đi: Các ô 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.
- Đế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ơi | Số trạng thái khả dĩ | Có dùng được Q-Table không? |
|---|---|---|
| Tic-Tac-Toe | trạng thái | Dễ dàng (vài KB RAM) |
| Nim (4 cọc nhỏ) | Vài nghìn trạng thái | Dễ dàng |
| Cờ vua (Chess) | trạng thái | Bó tay! Không có siêu máy tính nào chứa nổi |
| Cờ vây (Go) | 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 pixel, 256 màu trạng thái | Bấ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:
Đầu vào là bức ảnh chụp màn hình game, đầu ra là giá trị 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 (). 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: , nhận phần thưởng , hệ số , tốc độ học , và ở trạng thái mới các hành động có giá trị lần lượt là .
- Tìm giá trị tốt nhất ở trạng thái mới: .
- Tính Target thực tế: .
- Tính TD Error: .
- Cập nhật giá trị mới:
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 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ì nghĩa là 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 hay hàm thưởng . 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 .
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).