Обучение с временны́ми разностями

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

Fouad Trad

Machine Learning Engineer

TD-обучение vs. Монте-Карло

 

TD-обучение
  • Не требует модели среды
  • Оценка Q-таблицы на основе взаимодействия
  • Обновление Q-таблицы на каждом шаге эпизода
  • Подходит для длинных и бесконечных эпизодов

 

Метод Монте-Карло
  • Не требует модели среды
  • Оценка Q-таблицы на основе взаимодействия
  • Обновление Q-таблицы после завершения эпизода
  • Подходит для коротких эпизодических задач
Обучение с подкреплением с Gymnasium на Python

TD-обучение как прогноз погоды

Изображение, показывающее различные погодные условия в одном месте в разное время.

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

SARSA

  • Алгоритм TD
  • Метод на основе текущей стратегии: корректирует стратегию по выполненным действиям

Изображение, поясняющее, что SARSA — это текущее состояние, выполненное действие, полученная награда, следующее состояние и следующее действие.

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

Правило обновления SARSA

Изображение с математической формулой правила обновления SARSA.

  • $\alpha$: скорость обучения
  • $\gamma$: коэффициент дисконтирования
  • Оба значения — от 0 до 1
Обучение с подкреплением с Gymnasium на Python

Замёрзшее озеро

Изображение среды «Замёрзшее озеро»

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

Инициализация

env = gym.make("FrozenLake", is_slippery=False)

num_states = env.observation_space.n num_actions = env.action_space.n
Q = np.zeros((num_states, num_actions))
alpha = 0.1 gamma = 1 num_episodes = 1000
Обучение с подкреплением с Gymnasium на Python

Цикл SARSA

for episode in range(num_episodes):

state, info = env.reset() action = env.action_space.sample()
terminated = False while not terminated: next_state, reward, terminated, truncated, info = env.step(action)
next_action = env.action_space.sample()
update_q_table(state, action, reward, next_state, next_action)
state, action = next_state, next_action
Обучение с подкреплением с Gymnasium на Python

Обновления SARSA

def update_q_table(state, action, reward, next_state, next_action):

old_value = Q[state, action]
next_value = Q[next_state, next_action]
Q[state, action] = (1 - alpha) * old_value + alpha * (reward + gamma * next_value)

  Изображение с математической формулой правила обновления SARSA.

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

Вывод оптимальной стратегии

policy = get_policy()
print(policy)
{ 0: 1,  1: 2,  2: 1,  3: 0, 
  4: 1,  5: 0,  6: 1,  7: 0, 
  8: 2,  9: 1, 10: 1, 11: 0, 
 12: 0, 13: 2, 14: 2, 15: 0}

Изображение оптимальной стратегии в среде «Замёрзшее озеро»: действия показаны стрелками, агент обходит ловушки.

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

Давайте потренируемся!

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

Preparing Video For Download...