Работа с дискретными распределениями
Вскоре вы будете работать со стохастическими политиками — политиками, которые описывают поведение агента в заданном состоянии в виде вероятностного распределения по действиям.
Для представления дискретных распределений в PyTorch используется класс torch.distributions.Categorical, с которым вы сейчас познакомитесь на практике.
Вы убедитесь, что входные числа необязательно должны давать в сумме 1, как этого требуют вероятности: нормализация выполняется автоматически.
Это упражнение является частью курса
Глубокое обучение с подкреплением на Python
Инструкции к упражнению
- Создайте экземпляр категориального вероятностного распределения.
- Возьмите одну выборку из распределения.
- Задайте 3 положительных числа, сумма которых равна 1, в качестве вероятностей.
- Задайте 5 положительных чисел;
Categoricalавтоматически нормализует их, чтобы получить вероятности.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
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, ____, ____, ____, ____])