Реалізація every-visit Monte Carlo
Метод Every-Visit Monte Carlo відрізняється від варіанту First-Visit тим, що оновлює значення щоразу, коли пара «стан-дія» з'являється, а не лише під час першої появи. Такий підхід дає всебічну оцінку політики, адже використовує всю доступну інформацію з епізодів. Водночас він може підвищувати дисперсію оцінок значень, оскільки враховує всі зразки незалежно від того, коли вони трапляються в епізоді. Ваше завдання — доповнити реалізацію функції every_visit_mc(), яка оцінює функцію значень дій Q протягом num_episodes епізодів.
Словники returns_sum і returns_count з парами «стан-дія» як ключами вже ініціалізовано та підвантажено для вас, так само як і функцію generate_episode().
Ця вправа є частиною курсу
Reinforcement Learning з Gymnasium у Python
Інструкції до вправи
- Згенеруйте епізод за допомогою функції
generate_episode(). - Оновіть віддачі та їхню кількість для кожної пари «стан-дія» в межах епізоду.
- Обчисліть оцінені значення Q.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
Q = np.zeros((num_states, num_actions))
for i in range(100):
# Generate an episode
episode = ____
# Update the returns and their counts
for j, (state, action, reward) in ____:
returns_sum[(state, action)] += sum(____)
returns_count[(state, action)] += ____
# Update the Q-values for visited state-action pairs
nonzero_counts = ____
Q[nonzero_counts] = ____
render_policy(get_policy())