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
Deep Reinforcement Learning in Python
Anleitung zur Übung
- 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 Übung zum Anfassen
Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.
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, ____, ____, ____, ____])