Arbeiten mit diskreten Verteilungen
Du wirst bald mit stochastischen Richtlinien arbeiten: Richtlinien, die das Verhalten des Agenten in einem bestimmten Zustand als Wahrscheinlichkeitsverteilung über Aktionen darstellen.
PyTorch kann diskrete Verteilungen mithilfe der Klasse torch.distributions.Categorical darstellen, mit der du jetzt experimentieren wirst.
Du wirst sehen, dass es nicht notwendig ist, dass die Summe der Zahlen, die als Eingabe verwendet werden, gleich 1 ist, wie es bei Wahrscheinlichkeiten der Fall ist; sie werden automatisch normalisiert.
Diese Übung ist Teil des Kurses
<Kurs>Deep Reinforcement Learning in Python</Kurs>Übungsanweisungen
- Instanziere die kategorische Wahrscheinlichkeitsverteilung.
- Ziehe eine Stichprobe aus der Verteilung.
- Gib 3 positive Zahlen an, die sich zu 1 summieren und als Wahrscheinlichkeiten dienen.
- Gib 5 positive Zahlen an; Categorical normalisiert sie stillschweigend, um Wahrscheinlichkeiten zu erhalten.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
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, ____, ____, ____, ____])