IniziaInizia gratis

Gioca con l'entropia

Se non hai mai incontrato prima il concetto di entropia, può essere utile prenderci confidenza con un esempio.

Costruirai una funzione plot_probabilities che prende in argomento una lista di probabilità. Calcola l'entropia e visualizza le probabilità in un grafico a barre.

Sperimentando con l'entropia, dovresti notare che l'entropia è più alta quando la distribuzione di probabilità è distribuita su molte azioni.

La classe torch.distribution.Categorical è caricata nel tuo ambiente come Categorical; questa classe ha un metodo, .entropy(), che restituisce l'entropia in nat.

Questo esercizio fa parte del corso

Deep Reinforcement Learning in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Ottieni l'entropia della distribuzione di probabilità in nat.
  • Per comodità, converti l'entropia da nat a bit.
  • Prova a usare un'altra lista come input per la funzione.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

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(____)
Modifica ed esegui il codice