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

Эпсилон-жадность

В этом упражнении вы реализуете функцию select_action(), которая применяет стратегию эпсилон-жадности с затуханием.

Эпсилон-жадность побуждает агента исследовать среду, что должно улучшить качество обучения!

Расписание эпсилон-жадности определяет пороговое значение \(\varepsilon\) для заданного шага step по следующей формуле: $$\varepsilon = end + (start-end) \cdot e^{-\frac{step}{decay}}$$

Функция select_action() должна возвращать случайное действие с вероятностью \(\varepsilon\) и действие с наибольшим Q-значением с вероятностью \(1-\varepsilon\).

Это упражнение является частью курса

Глубокое обучение с подкреплением на Python

Посмотреть курс

Инструкции к упражнению

  • Вычислите пороговое значение epsilon для заданного шага step.
  • Сгенерируйте случайное число от 0 до 1.
  • С вероятностью epsilon верните случайное действие.
  • С вероятностью 1-epsilon верните действие с наибольшим Q-значением.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

def select_action(q_values, step, start, end, decay):
    # Calculate the threshold value for this step
    epsilon = end + (____) * math.exp(____ / ____)
    # Draw a random number between 0 and 1
    sample = random.____
    if sample < epsilon:
        # Return a random action index
        return random.____
    # Return the action index with highest Q-value
    return torch.____.item()
      
for step in [1, 500, 2500]:
    actions = [select_action(torch.Tensor([1, 2, 3, 5]), step, .9, .05, 1000) for _ in range(20)]
    print(f"Selecting 20 actions at step {step}.\nThe action with highest q-value is action 3.\nSelected actions: {actions}\n\n")
Редактировать и запускать код