Ruang bermain entropi
Jika Anda belum pernah menemui konsep entropi sebelumnya, akan bermanfaat untuk memahaminya melalui sebuah contoh.
Anda akan membangun fungsi plot_probabilities yang menerima daftar probabilitas sebagai argumen. Fungsi ini menghitung entropi dan memvisualisasikan probabilitas dalam diagram batang.
Dengan bereksperimen menggunakan entropi, Anda akan melihat bahwa entropi lebih tinggi ketika sebaran probabilitas tersebar pada banyak aksi.
Kelas torch.distribution.Categorical telah dimuat di lingkungan Anda sebagai Categorical; kelas ini memiliki metode, .entropy(), yang mengembalikan entropi dalam satuan nat.
Latihan ini adalah bagian dari kursus
Deep Reinforcement Learning dengan Python
Petunjuk latihan
- Peroleh entropi dari sebaran probabilitas dalam satuan nat.
- Untuk kemudahan, konversikan entropi dari nat ke bit.
- Cobalah gunakan daftar lain sebagai masukan untuk fungsi tersebut.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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(____)