Entropie Spielplatz
Wenn du das Konzept der Entropie noch nicht kennst, ist es hilfreich, es dir anhand eines Beispiels zu vergegenwärtigen.
Du wirst eine Funktion plot_probabilities
erstellen, die eine Liste von Wahrscheinlichkeiten als Argument erhält. Es berechnet die Entropie und stellt die Wahrscheinlichkeiten in einem Balkendiagramm dar.
Wenn du mit der Entropie spielst, solltest du feststellen, dass die Entropie höher ist, wenn die Wahrscheinlichkeitsverteilung über viele Aktionen verteilt ist.
Die Klasse torch.distribution.Categorical
wird in deiner Umgebung als Categorical
geladen. Diese Klasse hat eine Methode, .entropy()
, die die Entropie in nats zurückgibt.
Diese Übung ist Teil des Kurses
Deep Reinforcement Learning in Python
Anleitung zur Übung
- Erhalte die Entropie der Wahrscheinlichkeitsverteilung in Nats.
- Konvertiere die Entropie der Einfachheit halber von Nats in Bits.
- Versuche, eine andere Liste als Eingabe für die Funktion zu verwenden.
Interaktive Übung zum Anfassen
Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.
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(____)