Trabalho com distribuições discretas
Em breve, você trabalhará com políticas estocásticas: políticas que representam o comportamento do agente em um determinado estado como uma distribuição de probabilidade sobre as ações.
O PyTorch pode representar distribuições discretas usando a classe torch.distributions.Categorical
, com a qual você fará experimentos agora.
Você verá que, na verdade, não é necessário que os números usados como entrada somem 1, como acontece com as probabilidades; eles são normalizados automaticamente.
Este exercício faz parte do curso
Aprendizado por reforço profundo em Python
Instruções de exercício
- Instanciar a distribuição de probabilidade categórica.
- Pegue uma amostra da distribuição.
- Especifique 3 números positivos somando 1, para atuar como probabilidades.
- Especifique 5 números positivos; o Categorical os normalizará silenciosamente para obter probabilidades.
Exercício interativo prático
Experimente este exercício preenchendo este código de exemplo.
from torch.distributions import Categorical
def sample_from_distribution(probs):
print(f"\nInput: {probs}")
probs = torch.tensor(probs, dtype=torch.float32)
# Instantiate the categorical distribution
dist = ____(probs)
# Take one sample from the distribution
sampled_index = ____
print(f"Taking one sample: index {sampled_index}, with associated probability {dist.probs[sampled_index]:.2f}")
# Specify 3 positive numbers summing to 1
sample_from_distribution([.3, ____, ____])
# Specify 5 positive numbers that do not sum to 1
sample_from_distribution([2, ____, ____, ____, ____])