Цикл обучения в DRL
Чтобы агент мог многократно взаимодействовать со средой, необходимо настроить цикл обучения.
Большинство алгоритмов глубокого обучения с подкреплением строятся на одной общей структуре:
- Цикл по эпизодам
- Цикл по шагам внутри каждого эпизода
- На каждом шаге: выбор действия, вычисление функции потерь и обновление сети
Вам предоставлены вспомогательные функции 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.")