CommencerCommencer gratuitement

Terrain de jeu Entropie

Si vous n'avez jamais rencontré le concept d'entropie auparavant, il est utile de le comprendre à l'aide d'un exemple.

Vous allez créer une fonction plot_probabilities prenant comme argument une liste de probabilités. Il calcule l'entropie et représente les probabilités dans un graphique à barres.

En jouant avec l'entropie, vous devriez constater que l'entropie est plus élevée lorsque la distribution de probabilité est répartie sur de nombreuses actions.

La classe torch.distribution.Categorical est chargée dans votre environnement sous le nom Categorical; cette classe dispose d'une méthode, .entropy(), qui renvoie l'entropie en nats.

Cet exercice fait partie du cours

Apprentissage par renforcement profond en Python

Afficher le cours

Instructions

  • Obtenir l'entropie de la distribution de probabilité en nats.
  • Pour plus de commodité, convertissez l'entropie de nats en bits.
  • Veuillez essayer d'utiliser une autre liste comme entrée pour la fonction.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

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(____)
Modifier et exécuter le code