Майданчик для ентропії
Якщо ви раніше не стикалися з поняттям ентропії, корисно розібратися на прикладі.
Ви створите функцію 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(____)