Стратегии и функции ценности состояний

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

Fouad Trad

Machine Learning Engineer

Стратегии

  • Цель ОО → формирование эффективных стратегий
  • Определяет действие в каждом состоянии для максимизации отдачи

Изображение большой дорожной карты.

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

Пример: мир-сетка

  • Агент стремится достичь алмаза, избегая гор
  • Девять состояний
  • Детерминированные движения

action_numbers_green.png

Изображение пользовательской среды с сеткой 9 клеток, 2 из которых — горы, и одна — алмаз.

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

Пример: мир-сетка — награды

  • Определяется по состояниям:
    • Алмаз: +10

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

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

Пример: мир-сетка — награды

  • Определяется по состояниям:
    • Алмаз: +10
    • Гора: -2

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

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

Пример: мир-сетка — награды

  • Определяется по состояниям:
    • Алмаз: +10
    • Гора: -2
    • Остальные состояния: -1

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

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

Пример: мир-сетка — стратегия

# 0: left, 1: down, 2: right, 3: up
policy = {
    0:1, 1:2, 2:1, 
    3:1, 4:3, 5:1,
    6:2, 7:3
}

state, info = env.reset() terminated = False while not terminated: action = policy[state] state, reward, terminated, _, _ = env.step(action)

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

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

Функции ценности состояний

  • Оценка ценности состояния
  • Ожидаемая отдача из состояния при следовании стратегии

Изображение формулы функции ценности состояния как дисконтированной отдачи при старте из состояния s и следовании стратегии.

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

Пример: мир-сетка — ценности состояний

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

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

Ценность целевого состояния

Изображение агента в целевом состоянии.

  • Из целевого состояния агент не двигается
  • $V(goal \, state) = 0$

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

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

Ценность состояния 5

Изображение агента в состоянии 5.

  • Из состояния 5 агент переходит к цели
  • $V(5) = 10$

Изображение, показывающее, что ценность состояния 5 равна 10.

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

Ценность состояния 2

Изображение агента в состоянии 2.

  • Из состояния 2 награды: $-1, 10$
  • $ V(2) = (1 \times -1) + (1 \times 10) = 9$

Изображение, показывающее, что ценность состояния 2 равна 9.

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

Все ценности состояний

Изображение всех значений ценности для 9 состояний среды.

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

Уравнение Беллмана

  • Рекурсивная формула
  • Вычисляет ценности состояний

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

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

Вычисление ценностей состояний

def compute_state_value(state):

if state == terminal_state: return 0
action = policy[state]
_, next_state, reward, _ = env.unwrapped.P[state][action][0]
return reward + gamma * compute_state_value(next_state)

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

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

Вычисление ценностей состояний

terminal_state = 8
gamma = 1

V = {state: compute_state_value(state) for state in range(num_states)}
print(V)
{0: 1, 1: 8, 2: 9, 
 3: 2, 4: 7, 5: 10, 
 6: 3, 7: 5, 8: 0}

Изображение всех значений ценности для 9 состояний среды.

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

Смена стратегий

# 0: left, 1: down, 2: right, 3: up
policy_two = {
    0:2, 1:2, 2:1,
    3:2, 4:2, 5:1,
    6:2, 7:2
}

V_2 = {state: compute_state_value(state) for state in range(num_states)} print(V_2)

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

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

Сравнение стратегий

Ценности состояний для стратегии 1

{0: 1, 1: 8, 2: 9, 
 3: 2, 4: 7, 5: 10, 
 6: 3, 7: 5, 8: 0}

Изображение ценностей состояний для стратегии 1.

Ценности состояний для стратегии 2

{0: 7, 1: 8, 2: 9, 
 3: 7, 4: 9, 5: 10, 
 6: 8, 7: 10, 8: 0}

Изображение ценностей состояний для стратегии 2.

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

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

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

Preparing Video For Download...