Get startedGet started for free

Entropy playground

If you haven't encountered the concept of entropy before, it is useful to wrap your head around it with an example.

You will build a function plot_probabilities taking a list of probabilities as argument. It calculates the entropy and plots the probabilities in a bar chart.

Playing around with entropy, you should find that entropy is higher when the probability distribution is spread across many actions.

The torch.distribution.Categorical class is loaded in your environment as Categorical; this class has a method, .entropy(), which returns the entropy in nats.

This exercise is part of the course

Deep Reinforcement Learning in Python

View Course

Exercise instructions

  • Obtain the entropy of the probability distribution in nats.
  • For convenience, convert the entropy from nats to bits.
  • Try using another list as input for the function.

Hands-on interactive exercise

Have a go at this exercise by completing this sample 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(____)
Edit and Run Code