Zacznij terazZacznij za darmo

Eksperymentuj z entropią

Jeśli pojęcie entropii jest dla ciebie nowe, warto zrozumieć je na konkretnym przykładzie.

Napisz funkcję plot_probabilities, która przyjmuje listę prawdopodobieństw jako argument. Funkcja oblicza entropię i wyświetla prawdopodobieństwa na wykresie słupkowym.

Eksperymentując z entropią, przekonasz się, że jest ona wyższa wtedy, gdy rozkład prawdopodobieństwa jest rozłożony równomiernie na wiele akcji.

Klasa torch.distribution.Categorical jest dostępna w twoim środowisku jako Categorical. Udostępnia ona metodę .entropy(), która zwraca entropię w natach.

To ćwiczenie jest częścią kursu

Głębokie uczenie ze wzmocnieniem w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Oblicz entropię rozkładu prawdopodobieństwa w natach.
  • Dla wygody przekształć entropię z natów na bity.
  • Spróbuj wywołać funkcję z inną listą jako argumentem wejściowym.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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(____)
Edytuj i uruchom kod