Bắt đầu ngayBắt đầu miễn phí

Epsilon-greediness

Trong bài tập này, bạn sẽ hiện thực hàm select_action() áp dụng epsilon-greediness có suy giảm theo thời gian.

Epsilon-greediness sẽ khuyến khích agent của bạn khám phá môi trường, từ đó cải thiện việc học!

Lịch epsilon-greediness xác định một ngưỡng \(\varepsilon\) cho mỗi step, theo công thức: $$\varepsilon = end + (start-end) \cdot e^{-\frac{step}{decay}}$$

select_action() nên trả về một hành động ngẫu nhiên với xác suất \(\varepsilon\), và hành động có Q-value cao nhất với xác suất \(1-\varepsilon\).

Bài tập này là một phần của khóa học

Deep Reinforcement Learning bằng Python

Xem khóa học

Hướng dẫn bài tập

  • Tính ngưỡng epsilon cho giá trị step đã cho.
  • Lấy một số ngẫu nhiên trong khoảng từ 0 đến 1.
  • Với xác suất epsilon, trả về một hành động ngẫu nhiên.
  • Với xác suất 1-epsilon, trả về hành động có Q-value cao nhất.

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.

def select_action(q_values, step, start, end, decay):
    # Calculate the threshold value for this step
    epsilon = end + (____) * math.exp(____ / ____)
    # Draw a random number between 0 and 1
    sample = random.____
    if sample < epsilon:
        # Return a random action index
        return random.____
    # Return the action index with highest Q-value
    return torch.____.item()
      
for step in [1, 500, 2500]:
    actions = [select_action(torch.Tensor([1, 2, 3, 5]), step, .9, .05, 1000) for _ in range(20)]
    print(f"Selecting 20 actions at step {step}.\nThe action with highest q-value is action 3.\nSelected actions: {actions}\n\n")
Chỉnh sửa và Chạy Mã