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

Цикл обучения в DRL

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

Большинство алгоритмов глубокого обучения с подкреплением строятся на одной общей структуре:

  1. Цикл по эпизодам
  2. Цикл по шагам внутри каждого эпизода
  3. На каждом шаге: выбор действия, вычисление функции потерь и обновление сети

Вам предоставлены вспомогательные функции select_action() и calculate_loss(), которые обеспечивают работу кода. Также доступны Network и optimizer, определённые в предыдущем упражнении.

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

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

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

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

  • Убедитесь, что внешний цикл (по эпизодам) выполняется ровно десять раз.
  • Убедитесь, что внутренний цикл (по шагам) работает до завершения эпизода.
  • Выполните действие, выбранное функцией select_action(), в среде env.
  • В конце каждой итерации внутреннего цикла обновите состояние перед началом следующего шага.

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

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

env = gym.make("LunarLander-v2")
# Run ten episodes
for episode in ____:
    state, info = env.reset()
    done = False    
    # Run through steps until done
    while ____:
        action = select_action(network, state)        
        # Take the action
        next_state, reward, terminated, truncated, _ = ____
        done = terminated or truncated        
        loss = calculate_loss(network, state, action, next_state, reward, done)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()        
        # Update the state
        state = ____
    print(f"Episode {episode} complete.")
Редактировать и запускать код