ПочатиПочніть безкоштовно

Майданчик для ентропії

Якщо ви раніше не стикалися з поняттям ентропії, корисно розібратися на прикладі.

Ви створите функцію plot_probabilities, яка приймає список імовірностей як аргумент. Вона обчислює ентропію та відображає імовірності на стовпчиковій діаграмі.

Експериментуючи з ентропією, ви побачите, що вона зростає, коли розподіл імовірностей „розмазаний" по багатьох діях.

Клас torch.distribution.Categorical завантажено у ваше середовище як Categorical; цей клас має метод .entropy(), який повертає ентропію в натах.

Ця вправа є частиною курсу

Глибоке навчання з підкріпленням у Python

Переглянути курс

Інструкції до вправи

  • Отримайте ентропію цього розподілу імовірностей у натах.
  • Для зручності перетворіть ентропію з натів у біти.
  • Спробуйте інший список як вхід для функції.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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(____)
Редагувати та запускати код