ComeçarComece de graça

Playground de entropia

Se você ainda não conhece o conceito de entropia, é útil entender o assunto com um exemplo.

Você criará uma função plot_probabilities usando uma lista de probabilidades como argumento. Ele calcula a entropia e plota as probabilidades em um gráfico de barras.

Brincando com a entropia, você deve descobrir que a entropia é maior quando a distribuição de probabilidade está espalhada por muitas ações.

A classe torch.distribution.Categorical é carregada em seu ambiente como Categorical; essa classe tem um método, .entropy(), que retorna a entropia em nats.

Este exercício faz parte do curso

Aprendizado por reforço profundo em Python

Ver curso

Instruções do exercício

  • Obtenha a entropia da distribuição de probabilidade em nats.
  • Por conveniência, converta a entropia de nats para bits.
  • Tente usar outra lista como entrada para a função.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

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(____)
Editar e executar o código