เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

Epsilon-greediness

ในแบบฝึกหัดนี้ จะได้ implement ฟังก์ชัน select_action() ที่ใช้กลยุทธ์ epsilon-greediness แบบลดค่าตามขั้นตอน

กลยุทธ์ epsilon-greediness จะกระตุ้นให้ agent สำรวจสภาพแวดล้อม ซึ่งช่วยให้การเรียนรู้มีประสิทธิภาพมากขึ้น!

ตาราง epsilon-greediness จะกำหนดค่าเกณฑ์ \(\varepsilon\) สำหรับ step ที่กำหนด ตามสูตร: $$\varepsilon = end + (start-end) \cdot e^{-\frac{step}{decay}}$$

select_action() ควรคืนค่า action แบบสุ่มด้วยความน่าจะเป็น \(\varepsilon\) และคืนค่า action ที่มี Q-value สูงสุดด้วยความน่าจะเป็น \(1-\varepsilon\)

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Deep Reinforcement Learning ด้วย Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • คำนวณค่าเกณฑ์ epsilon สำหรับค่า step ที่กำหนด
  • สุ่มตัวเลขระหว่าง 0 ถึง 1
  • ด้วยความน่าจะเป็น epsilon ให้คืนค่า action แบบสุ่ม
  • ด้วยความน่าจะเป็น 1-epsilon ให้คืนค่า action ที่มี Q-value สูงสุด

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

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")
แก้ไขและรันโค้ด