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

Sân chơi entropy

Nếu bạn chưa từng gặp khái niệm entropy, việc hình dung nó qua một ví dụ sẽ rất hữu ích.

Bạn sẽ xây dựng hàm plot_probabilities nhận một danh sách xác suất làm đối số. Hàm sẽ tính entropy và vẽ các xác suất dưới dạng biểu đồ cột.

Khi thử nghiệm với entropy, bạn sẽ thấy entropy cao hơn khi phân phối xác suất được dàn trải trên nhiều hành động.

Lớp torch.distribution.Categorical đã được nạp trong môi trường của bạn dưới tên Categorical; lớp này có phương thức .entropy() trả về entropy theo đơn vị nats.

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

  • Lấy entropy của phân phối xác suất theo đơn vị nats.
  • Để tiện so sánh, hãy chuyển entropy từ nats sang bits.
  • Thử dùng một danh sách khác làm đầu vào cho hàm.

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 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(____)
Chỉnh sửa và Chạy Mã