Kom igångKom igång gratis

Utforska entropi

Om du inte har stött på begreppet entropi tidigare är det bra att bekanta sig med det via ett exempel.

Du ska bygga en funktion plot_probabilities som tar en lista med sannolikheter som argument. Den beräknar entropin och visualiserar sannolikheterna i ett stapeldiagram.

När du experimenterar med entropi bör du märka att entropin är högre när sannolikhetsfördelningen är utspridd över många handlingar.

Klassen torch.distribution.Categorical är inläst i din miljö som Categorical; den har en metod, .entropy(), som returnerar entropin i nats.

Den här övningen är en del av kursen

Djup förstärkningsinlärning i Python

Visa kurs

Övningsinstruktioner

  • Beräkna entropin för sannolikhetsfördelningen i nats.
  • Konvertera entropin från nats till bitar för enklare tolkning.
  • Prova att använda en annan lista som indata till funktionen.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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(____)
Redigera och kör kod