Lavorare con distribuzioni discrete
Presto lavorerai con politiche stocastiche: politiche che rappresentano il comportamento dell'agente in un dato stato come una distribuzione di probabilità sulle azioni.
PyTorch può rappresentare distribuzioni discrete usando la classe torch.distributions.Categorical, con cui ora farai qualche esperimento.
Vedrai che in realtà non è necessario che i numeri forniti in input sommino a 1, come le probabilità: vengono normalizzati automaticamente.
Questo esercizio fa parte del corso
Deep Reinforcement Learning in Python
Istruzioni dell'esercizio
- Istanzia la distribuzione di probabilità categorica.
- Estrai un campione dalla distribuzione.
- Specifica 3 numeri positivi che sommino a 1, da usare come probabilità.
- Specifica 5 numeri positivi; Categorical li normalizzerà in silenzio per ottenere le probabilità.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
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, ____, ____, ____, ____])