НачатьНачать бесплатно

Работа с дискретными распределениями

Вскоре вы будете работать со стохастическими политиками — политиками, которые описывают поведение агента в заданном состоянии в виде вероятностного распределения по действиям.

Для представления дискретных распределений в 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, ____, ____, ____, ____])
Редактировать и запускать код