Cài đặt every-visit Monte Carlo
Phương pháp Every-Visit Monte Carlo khác với biến thể First-Visit ở chỗ cập nhật giá trị mỗi lần một cặp trạng thái–hành động xuất hiện, thay vì chỉ lần gặp đầu tiên. Cách tiếp cận này cho phép đánh giá toàn diện chính sách bằng cách tận dụng mọi thông tin sẵn có từ các tập, nhưng cũng có thể làm tăng phương sai của ước lượng giá trị vì bao gồm tất cả mẫu, bất kể chúng xuất hiện khi nào trong tập. Nhiệm vụ của bạn là hoàn thiện hàm every_visit_mc() để ước lượng hàm giá trị hành động Q qua num_episodes tập.
Các từ điển returns_sum và returns_count (dùng cặp trạng thái–hành động làm khóa) đã được khởi tạo và nạp sẵn cho bạn, cùng với hàm generate_episode().
Bài tập này là một phần của khóa học
Reinforcement Learning với Gymnasium trong Python
Hướng dẫn bài tập
- Tạo một tập bằng hàm
generate_episode(). - Cập nhật tổng return và số lần đếm cho mỗi cặp trạng thái–hành động trong tập.
- Tính các Q-value ước lượng.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
Q = np.zeros((num_states, num_actions))
for i in range(100):
# Generate an episode
episode = ____
# Update the returns and their counts
for j, (state, action, reward) in ____:
returns_sum[(state, action)] += sum(____)
returns_count[(state, action)] += ____
# Update the Q-values for visited state-action pairs
nonzero_counts = ____
Q[nonzero_counts] = ____
render_policy(get_policy())