Začněte nyníZačněte zdarma

Hraní si s entropií

Pokud ses s pojmem entropie ještě nesetkal/a, pomůže si ho lépe představit na konkrétním příkladu.

Napíšeš funkci plot_probabilities, která přijímá seznam pravděpodobností jako argument. Vypočítá entropii a zobrazí pravděpodobnosti jako sloupcový graf.

Až si s entropií trochu pohraješ, zjistíš, že entropie je vyšší, když je rozdělení pravděpodobnosti rozloženo rovnoměrně přes mnoho akcí.

Třída torch.distribution.Categorical je ve tvém prostředí dostupná jako Categorical; tato třída má metodu .entropy(), která vrací entropii v natech.

Toto cvičení je součástí kurzu

Deep Reinforcement Learning v Pythonu

Zobrazit kurz

Pokyny k cvičení

  • Získej entropii rozdělení pravděpodobnosti v natech.
  • Pro přehlednost převeď entropii z natů na bity.
  • Zkus jako vstup funkce použít jiný seznam.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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(____)
Upravit a spustit kód