ПочатиПочніть безкоштовно

Епсілон-жадібність

У цій вправі ви реалізуєте функцію 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")
Редагувати та запускати код