-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Create Markov Decision Process (MDP)
Signed-off-by: aero <[email protected]>
- Loading branch information
Showing
1 changed file
with
253 additions
and
0 deletions.
There are no files selected for viewing
253 changes: 253 additions & 0 deletions
253
5. ARTIFICIAL_INTELLIGENCE/Chuong1/Markov Decision Process (MDP)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,253 @@ | ||
Dưới đây là phân tích **sâu hơn về bước thiết lập MDP**, tập trung vào các khía cạnh kỹ thuật, ví dụ thực tế và thách thức khi áp dụng: | ||
|
||
--- | ||
|
||
### **1. Chi tiết hóa các thành phần của MDP** | ||
|
||
#### **a. States (Trạng thái)** | ||
- **Định nghĩa**: Biểu diễn "tình huống" hiện tại của môi trường mà agent cần quan sát để ra quyết định. | ||
- **Thách thức**: | ||
- **Curse of Dimensionality**: Số lượng states tăng theo hàm mũ với số chiều dữ liệu (ví dụ: robot có 10 cảm biến, mỗi cảm biến có 100 giá trị → \(10^{10}\) states). | ||
- **Partial Observability**: Trong thực tế, agent thường chỉ nhận được **observations** (ví dụ: camera hình ảnh) thay vì state đầy đủ → cần dùng **POMDP** (Partially Observable MDP). | ||
- **Giải pháp**: | ||
- **State Abstraction**: Gom nhóm các states tương tự nhau (ví dụ: phân loại tốc độ xe thành "chậm", "trung bình", "nhanh"). | ||
- **Feature Engineering**: Trích xuất đặc trưng quan trọng từ observations (ví dụ: khoảng cách đến vật cản, góc lái). | ||
|
||
#### **b. Actions (Hành động)** | ||
- **Loại hành động**: | ||
- **Discrete Actions**: Hữu hạn lựa chọn (ví dụ: trái/phải/tăng tốc/phanh). | ||
- **Continuous Actions**: Vô hạn (ví dụ: góc lái từ \(0^\circ\) đến \(360^\circ\)). | ||
- **Thiết kế hành động**: | ||
- **Hierarchical Actions**: Phân cấp hành động (ví dụ: "di chuyển đến phòng A" → gồm nhiều bước nhỏ). | ||
- **Safe Actions**: Đảm bảo hành động không gây nguy hiểm (ví dụ: robot không đâm vào tường). | ||
|
||
#### **c. Transition Probability (Xác suất chuyển trạng thái)** | ||
- **Mô hình hóa**: | ||
- **Deterministic**: \(P(s'|s,a) = 1\) (ví dụ: di chuyển trong Grid World không nhiễu). | ||
- **Stochastic**: \(P(s'|s,a) < 1\) (ví dụ: robot trượt khi di chuyển với xác suất 10%). | ||
- **Ước lượng**: | ||
- **Model-Based RL**: Dùng dữ liệu để học \(P(s'|s,a)\) (ví dụ: thuật toán **Dyna-Q**). | ||
- **Model-Free RL**: Bỏ qua \(P(s'|s,a)\), học trực tiếp policy hoặc Q-values (ví dụ: Q-Learning). | ||
|
||
#### **d. Reward Function (Hàm phần thưởng)** | ||
- **Nguyên tắc thiết kế**: | ||
- **Sparse Rewards**: Phần thưởng chỉ ở mục tiêu cuối (ví dụ: +1 khi thắng game, 0 ở các bước khác) → Khó học do ít feedback. | ||
- **Dense Rewards**: Phần thưởng từng bước (ví dụ: +0.1 mỗi lần đến gần đích) → Dễ học hơn nhưng dễ gây **reward hacking** (agent lợi dụng lỗ hổng để kiếm điểm). | ||
- **Ví dụ phức tạp**: | ||
- Trong bài toán **tối ưu hóa lộ trình giao hàng**, reward có thể là: | ||
\[ | ||
R = - (\text{thời gian di chuyển} + \text{chi phí nhiên liệu} - \text{doanh thu}) | ||
\] | ||
|
||
--- | ||
|
||
### **2. Case Study: MDP trong Autonomous Driving** | ||
#### **Bài toán**: Xe tự lái cần di chuyển từ điểm A đến B an toàn. | ||
- **States**: | ||
- Vị trí GPS, tốc độ, góc lái, khoảng cách đến xe trước, tín hiệu đèn giao thông. | ||
- **Actions**: | ||
- Tăng tốc, giảm tốc, rẽ trái/phải, dừng. | ||
- **Transition Model**: | ||
- Xác suất tai nạn nếu đổi làn đường khi có xe gần đó. | ||
- Xác suất phanh thành công trên đường trơn. | ||
- **Reward Function**: | ||
- \( R = +10 \) nếu đến đích an toàn. | ||
- \( R = -100 \) nếu xảy ra tai nạn. | ||
- \( R = -0.1 \) cho mỗi giây di chuyển (khuyến khích nhanh). | ||
- \( R = -5 \) nếu vượt đèn đỏ. | ||
|
||
#### **Thách thức**: | ||
- **Không gian liên tục**: States và actions liên tục → Cần dùng **Deep RL** (DQN, A3C). | ||
- **Partial Observability**: Camera không nhìn thấy xe bị khuất → Dùng **LSTM** để ghi nhớ context. | ||
|
||
--- | ||
|
||
### **3. Giải MDP bằng Dynamic Programming (DP)** | ||
#### **Ví dụ**: Bài toán **Inventory Management** (Quản lý tồn kho). | ||
- **States**: Số lượng hàng trong kho (0-100 sản phẩm). | ||
- **Actions**: Đặt thêm \( a \) sản phẩm (0 ≤ \( a \) ≤ 20). | ||
- **Reward**: Lợi nhuận = Doanh thu - Chi phí lưu kho - Chi phí đặt hàng. | ||
- **Transition**: Nhu cầu khách hàng mỗi ngày là ngẫu nhiên (theo phân phối Poisson). | ||
|
||
**Giải bằng Value Iteration**: | ||
1. Khởi tạo \( V(s) = 0 \) ∀s. | ||
2. Lặp lại cho đến khi hội tụ: | ||
\[ | ||
V_{k+1}(s) = \max_a \left[ \sum_{s'} P(s'|s,a) \left( R(s,a,s') + \gamma V_k(s') \right) \right] | ||
\] | ||
3. Policy tối ưu: \( \pi(s) = \arg\max_a Q(s,a) \). | ||
|
||
**Kết quả**: | ||
- Policy sẽ quyết định đặt hàng dựa trên mức tồn kho hiện tại và dự đoán nhu cầu. | ||
|
||
--- | ||
|
||
### **4. Mở rộng MDP trong thực tế** | ||
#### **a. Multi-Agent MDP** | ||
- **Bài toán**: Nhiều agent tương tác trong cùng môi trường (ví dụ: game đối kháng DOTA 2). | ||
- **Thách thức**: | ||
- **Non-stationarity**: Hành động của một agent thay đổi môi trường cho các agent khác. | ||
- **Equilibrium**: Tìm cân bằng Nash thay vì policy tối ưu đơn lẻ. | ||
|
||
#### **b. Hierarchical MDP** | ||
- **Ý tưởng**: Phân tách bài toán thành các subtask (ví dụ: lái xe → định vị, tránh vật cản, đỗ xe). | ||
- **Công cụ**: **Options Framework** (macro-actions) và **MAXQ** decomposition. | ||
|
||
#### **c. Inverse Reinforcement Learning (IRL)** | ||
- **Mục tiêu**: Suy luận reward function từ demonstrations (ví dụ: học lái xe bằng cách xem con người lái). | ||
- **Ứng dụng**: Dạy robot qua quan sát. | ||
|
||
--- | ||
|
||
### **5. Công cụ và Thư viện** | ||
- **Mô phỏng MDP**: | ||
- **OpenAI Gym**: Môi trường tiêu chuẩn như CartPole, MountainCar. | ||
- **PyBullet**: Mô phỏng robot với vật lý chân thực. | ||
- **Giải MDP**: | ||
- **MDPSuite** (Python): Hỗ trợ DP, Value Iteration. | ||
- **PRISM** (Tool): Phân tích MDP probabilistic. | ||
|
||
--- | ||
|
||
### **6. Lỗi thường gặp khi thiết kế MDP** | ||
| **Lỗi** | **Hậu quả** | **Cách khắc phục** | | ||
|-----------------------|---------------------------------|-----------------------------------| | ||
| **Reward Hacking** | Agent tìm cách "gian lận" để kiếm điểm (ví dụ: tự đâm vào tường để kết thúc sớm). | Thiết kế reward kỹ lưỡng, thêm penalty cho hành vi không mong muốn. | | ||
| **State Aliasing** | Hai states khác nhau được gom thành một → Agent không phân biệt được. | Tăng chi tiết biểu diễn state (ví dụ: thêm tốc độ vào state). | | ||
| **Discount Factor γ quá cao/thấp** | Agent chỉ tập trung vào phần thưởng ngắn hạn/dài hạn cực đoan. | Thử nghiệm γ trong khoảng [0.9, 0.99] và điều chỉnh theo bài toán. | | ||
|
||
--- | ||
|
||
### **Kết luận** | ||
MDP là **nền tảng không thể thiếu** để chuyển bài toán thực tế thành bài toán RL. Để thành công: | ||
1. **Thiết kế states và actions** phải cân bằng giữa độ chi tiết và tính khả thi. | ||
2. **Reward function** cần được kiểm tra kỹ để tránh hành vi lệch lạc. | ||
3. **Lựa chọn phương pháp giải** (DP, MC, TD, Deep RL) dựa trên đặc thù bài toán. | ||
|
||
Bước tiếp theo: Áp dụng các thuật toán **Monte Carlo** hoặc **Q-Learning** để học policy khi không biết model! | ||
|
||
--- | ||
|
||
### **1. Chi tiết hóa các thành phần của MDP** | ||
|
||
#### **a. States (Trạng thái)** | ||
- **Định nghĩa**: Biểu diễn "tình huống" hiện tại của môi trường mà agent cần quan sát để ra quyết định. | ||
- **Thách thức**: | ||
- **Curse of Dimensionality**: Số lượng states tăng theo hàm mũ với số chiều dữ liệu (ví dụ: robot có 10 cảm biến, mỗi cảm biến có 100 giá trị → \(10^{10}\) states). | ||
- **Partial Observability**: Trong thực tế, agent thường chỉ nhận được **observations** (ví dụ: camera hình ảnh) thay vì state đầy đủ → cần dùng **POMDP** (Partially Observable MDP). | ||
- **Giải pháp**: | ||
- **State Abstraction**: Gom nhóm các states tương tự nhau (ví dụ: phân loại tốc độ xe thành "chậm", "trung bình", "nhanh"). | ||
- **Feature Engineering**: Trích xuất đặc trưng quan trọng từ observations (ví dụ: khoảng cách đến vật cản, góc lái). | ||
|
||
#### **b. Actions (Hành động)** | ||
- **Loại hành động**: | ||
- **Discrete Actions**: Hữu hạn lựa chọn (ví dụ: trái/phải/tăng tốc/phanh). | ||
- **Continuous Actions**: Vô hạn (ví dụ: góc lái từ \(0^\circ\) đến \(360^\circ\)). | ||
- **Thiết kế hành động**: | ||
- **Hierarchical Actions**: Phân cấp hành động (ví dụ: "di chuyển đến phòng A" → gồm nhiều bước nhỏ). | ||
- **Safe Actions**: Đảm bảo hành động không gây nguy hiểm (ví dụ: robot không đâm vào tường). | ||
|
||
#### **c. Transition Probability (Xác suất chuyển trạng thái)** | ||
- **Mô hình hóa**: | ||
- **Deterministic**: \(P(s'|s,a) = 1\) (ví dụ: di chuyển trong Grid World không nhiễu). | ||
- **Stochastic**: \(P(s'|s,a) < 1\) (ví dụ: robot trượt khi di chuyển với xác suất 10%). | ||
- **Ước lượng**: | ||
- **Model-Based RL**: Dùng dữ liệu để học \(P(s'|s,a)\) (ví dụ: thuật toán **Dyna-Q**). | ||
- **Model-Free RL**: Bỏ qua \(P(s'|s,a)\), học trực tiếp policy hoặc Q-values (ví dụ: Q-Learning). | ||
|
||
#### **d. Reward Function (Hàm phần thưởng)** | ||
- **Nguyên tắc thiết kế**: | ||
- **Sparse Rewards**: Phần thưởng chỉ ở mục tiêu cuối (ví dụ: +1 khi thắng game, 0 ở các bước khác) → Khó học do ít feedback. | ||
- **Dense Rewards**: Phần thưởng từng bước (ví dụ: +0.1 mỗi lần đến gần đích) → Dễ học hơn nhưng dễ gây **reward hacking** (agent lợi dụng lỗ hổng để kiếm điểm). | ||
- **Ví dụ phức tạp**: | ||
- Trong bài toán **tối ưu hóa lộ trình giao hàng**, reward có thể là: | ||
\[ | ||
R = - (\text{thời gian di chuyển} + \text{chi phí nhiên liệu} - \text{doanh thu}) | ||
\] | ||
|
||
--- | ||
|
||
### **2. Case Study: MDP trong Autonomous Driving** | ||
#### **Bài toán**: Xe tự lái cần di chuyển từ điểm A đến B an toàn. | ||
- **States**: | ||
- Vị trí GPS, tốc độ, góc lái, khoảng cách đến xe trước, tín hiệu đèn giao thông. | ||
- **Actions**: | ||
- Tăng tốc, giảm tốc, rẽ trái/phải, dừng. | ||
- **Transition Model**: | ||
- Xác suất tai nạn nếu đổi làn đường khi có xe gần đó. | ||
- Xác suất phanh thành công trên đường trơn. | ||
- **Reward Function**: | ||
- \( R = +10 \) nếu đến đích an toàn. | ||
- \( R = -100 \) nếu xảy ra tai nạn. | ||
- \( R = -0.1 \) cho mỗi giây di chuyển (khuyến khích nhanh). | ||
- \( R = -5 \) nếu vượt đèn đỏ. | ||
|
||
#### **Thách thức**: | ||
- **Không gian liên tục**: States và actions liên tục → Cần dùng **Deep RL** (DQN, A3C). | ||
- **Partial Observability**: Camera không nhìn thấy xe bị khuất → Dùng **LSTM** để ghi nhớ context. | ||
|
||
--- | ||
|
||
### **3. Giải MDP bằng Dynamic Programming (DP)** | ||
#### **Ví dụ**: Bài toán **Inventory Management** (Quản lý tồn kho). | ||
- **States**: Số lượng hàng trong kho (0-100 sản phẩm). | ||
- **Actions**: Đặt thêm \( a \) sản phẩm (0 ≤ \( a \) ≤ 20). | ||
- **Reward**: Lợi nhuận = Doanh thu - Chi phí lưu kho - Chi phí đặt hàng. | ||
- **Transition**: Nhu cầu khách hàng mỗi ngày là ngẫu nhiên (theo phân phối Poisson). | ||
|
||
**Giải bằng Value Iteration**: | ||
1. Khởi tạo \( V(s) = 0 \) ∀s. | ||
2. Lặp lại cho đến khi hội tụ: | ||
\[ | ||
V_{k+1}(s) = \max_a \left[ \sum_{s'} P(s'|s,a) \left( R(s,a,s') + \gamma V_k(s') \right) \right] | ||
\] | ||
3. Policy tối ưu: \( \pi(s) = \arg\max_a Q(s,a) \). | ||
|
||
**Kết quả**: | ||
- Policy sẽ quyết định đặt hàng dựa trên mức tồn kho hiện tại và dự đoán nhu cầu. | ||
|
||
--- | ||
|
||
### **4. Mở rộng MDP trong thực tế** | ||
#### **a. Multi-Agent MDP** | ||
- **Bài toán**: Nhiều agent tương tác trong cùng môi trường (ví dụ: game đối kháng DOTA 2). | ||
- **Thách thức**: | ||
- **Non-stationarity**: Hành động của một agent thay đổi môi trường cho các agent khác. | ||
- **Equilibrium**: Tìm cân bằng Nash thay vì policy tối ưu đơn lẻ. | ||
|
||
#### **b. Hierarchical MDP** | ||
- **Ý tưởng**: Phân tách bài toán thành các subtask (ví dụ: lái xe → định vị, tránh vật cản, đỗ xe). | ||
- **Công cụ**: **Options Framework** (macro-actions) và **MAXQ** decomposition. | ||
|
||
#### **c. Inverse Reinforcement Learning (IRL)** | ||
- **Mục tiêu**: Suy luận reward function từ demonstrations (ví dụ: học lái xe bằng cách xem con người lái). | ||
- **Ứng dụng**: Dạy robot qua quan sát. | ||
|
||
--- | ||
|
||
### **5. Công cụ và Thư viện** | ||
- **Mô phỏng MDP**: | ||
- **OpenAI Gym**: Môi trường tiêu chuẩn như CartPole, MountainCar. | ||
- **PyBullet**: Mô phỏng robot với vật lý chân thực. | ||
- **Giải MDP**: | ||
- **MDPSuite** (Python): Hỗ trợ DP, Value Iteration. | ||
- **PRISM** (Tool): Phân tích MDP probabilistic. | ||
|
||
--- | ||
|
||
### **6. Lỗi thường gặp khi thiết kế MDP** | ||
| **Lỗi** | **Hậu quả** | **Cách khắc phục** | | ||
|-----------------------|---------------------------------|-----------------------------------| | ||
| **Reward Hacking** | Agent tìm cách "gian lận" để kiếm điểm (ví dụ: tự đâm vào tường để kết thúc sớm). | Thiết kế reward kỹ lưỡng, thêm penalty cho hành vi không mong muốn. | | ||
| **State Aliasing** | Hai states khác nhau được gom thành một → Agent không phân biệt được. | Tăng chi tiết biểu diễn state (ví dụ: thêm tốc độ vào state). | | ||
| **Discount Factor γ quá cao/thấp** | Agent chỉ tập trung vào phần thưởng ngắn hạn/dài hạn cực đoan. | Thử nghiệm γ trong khoảng [0.9, 0.99] và điều chỉnh theo bài toán. | | ||
|
||
--- | ||
|
||
### **Kết luận** | ||
MDP là **nền tảng không thể thiếu** để chuyển bài toán thực tế thành bài toán RL. Để thành công: | ||
1. **Thiết kế states và actions** phải cân bằng giữa độ chi tiết và tính khả thi. | ||
2. **Reward function** cần được kiểm tra kỹ để tránh hành vi lệch lạc. | ||
3. **Lựa chọn phương pháp giải** (DP, MC, TD, Deep RL) dựa trên đặc thù bài toán. | ||
|
||
Bước tiếp theo: Áp dụng các thuật toán **Monte Carlo** hoặc **Q-Learning** để học policy khi không biết model! |