Explorarea entropiei
Dacă nu ai mai întâlnit conceptul de entropie până acum, cel mai bine îl înțelegi printr-un exemplu concret.
Vei construi o funcție plot_probabilities care primește ca argument o listă de probabilități. Aceasta calculează entropia și reprezintă grafic probabilitățile sub forma unui grafic cu bare.
Experimentând cu entropia, vei observa că aceasta este mai mare atunci când distribuția de probabilitate este distribuită uniform pe mai multe acțiuni.
Clasa torch.distribution.Categorical este disponibilă în mediul tău ca Categorical; această clasă are o metodă, .entropy(), care returnează entropia în nats.
Acest exercițiu face parte din cursul
Deep Reinforcement Learning în Python
Instrucțiuni pentru exercițiu
- Calculează entropia distribuției de probabilitate în nats.
- Pentru comoditate, convertește entropia din nats în biți.
- Încearcă să folosești o altă listă ca intrare pentru funcție.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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(____)