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

ทดลองเล่นกับ Entropy

หากยังไม่คุ้นเคยกับแนวคิดเรื่อง entropy การทำความเข้าใจผ่านตัวอย่างจะช่วยได้มาก

ในแบบฝึกหัดนี้ จะได้สร้างฟังก์ชัน plot_probabilities ที่รับลิสต์ของค่าความน่าจะเป็นเป็น argument จากนั้นฟังก์ชันจะคำนวณค่า entropy และแสดงผลเป็น bar chart

เมื่อทดลองปรับค่าต่าง ๆ จะพบว่า entropy มีค่าสูงขึ้นเมื่อการกระจายความน่าจะเป็นกระจายออกไปในหลาย action

คลาส torch.distributions.Categorical ถูกโหลดไว้ในสภาพแวดล้อมแล้วในชื่อ Categorical โดยคลาสนี้มีเมธอด .entropy() ซึ่งคืนค่า entropy ในหน่วย nats

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

Deep Reinforcement Learning ด้วย Python

ดูคอร์ส

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

  • คำนวณค่า entropy ของการกระจายความน่าจะเป็นในหน่วย nats
  • แปลงค่า entropy จากหน่วย nats เป็น bits เพื่อความสะดวก
  • ลองใช้ลิสต์อื่นเป็น input ให้กับฟังก์ชัน

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

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

def plot_probabilities(probs):
  dist = Categorical(torch.tensor(probs))
  # Obtain the entropy in nats
  entropy = dist.____
  # Convert the entropy to bits
  entropy = entropy / math.log(____)
  print(f"{'Probabilities:':>15} {[round(prob, 3) for prob in dist.probs.tolist()]}")
  print(f"{'Entropy:':>15} {entropy:.2f}\n")
  plt.figure()
  plt.bar([str(x) for x in range(len(dist.probs))], dist.probs, color='skyblue', edgecolor='black')
  plt.ylabel('Probability'); plt.xlabel('Action index'); plt.ylim(0, 1)
  plt.show()
  
plot_probabilities([.25, .25, .25, .25])
plot_probabilities([.1, .15, .2, .25, .3])
# Try with your own list
plot_probabilities(____)
แก้ไขและรันโค้ด