Erste SchritteKostenlos loslegen

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

Kurs anzeigen

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(____)
Bearbeiten und Ausführen von Code