एंट्रॉपी प्लेग्राउंड
यदि आपने पहले एंट्रॉपी की संकल्पना नहीं देखी है, तो किसी उदाहरण के साथ इसे समझना उपयोगी रहता है।
आप एक फंक्शन plot_probabilities बनाएँगे जो आर्ग्यूमेंट के रूप में probabilities की एक लिस्ट लेता है। यह एंट्रॉपी की गणना करता है और probabilities को एक बार चार्ट में प्लॉट करता है।
एंट्रॉपी के साथ खेलते हुए, आप पाएँगे कि जब probability distribution कई actions में फैला होता है, तो एंट्रॉपी अधिक होती है।
torch.distribution.Categorical क्लास आपके environment में Categorical के रूप में लोड है; इस क्लास का एक मेथड .entropy() है, जो nats में एंट्रॉपी लौटाता है।
यह अभ्यास पाठ्यक्रम का हिस्सा है
Python में Deep Reinforcement Learning
अभ्यास निर्देश
- probability distribution की एंट्रॉपी nats में प्राप्त करें।
- सुविधा के लिए, एंट्रॉपी को nats से bits में बदलें।
- फंक्शन के इनपुट के रूप में कोई दूसरी लिस्ट आज़माएँ।
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
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(____)