Політики та функції цінності станів

Reinforcement Learning з Gymnasium у Python

Fouad Trad

Machine Learning Engineer

Політики

  • Мета RL → сформулювати дієві політики
  • Вказати дію в кожному стані, щоб максимізувати винагороду

Зображення з великою дорожньою картою.

Reinforcement Learning з Gymnasium у Python

Приклад «світ-ґратка»

  • Агент має дістатися діаманта, оминаючи гори
  • Дев'ять станів
  • Детерміновані переміщення

action_numbers_green.png

Зображення зі середовищем з 9 клітинками, 2 з них — гори, одна — для діаманта.

Reinforcement Learning з Gymnasium у Python

«Світ-ґратка» — винагороди

  • Залежить від станів:
    • Діамант: +10

Переходи з сусідніх клітин до діаманта дають винагороду +10.

Reinforcement Learning з Gymnasium у Python

«Світ-ґратка» — винагороди

  • Залежить від станів:
    • Діамант: +10
    • Гора: -2

Дія, що веде до гір, дає винагороду -2.

Reinforcement Learning з Gymnasium у Python

«Світ-ґратка» — винагороди

  • Залежить від станів:
    • Діамант: +10
    • Гора: -2
    • Інші стани: -1

Будь-яке інше переміщення дає винагороду -1.

Reinforcement Learning з 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)

Зображення політики зі стрілками, що показують переміщення між станами.

Reinforcement Learning з Gymnasium у Python

Функції цінності станів

  • Оцінити «вартість» стану
  • Очікувана винагорода зі стану за політики

Формула функції цінності стану як дисконтована винагорода, стартуючи зі стану s і дотримуючись політики.

Reinforcement Learning з Gymnasium у Python

«Світ-ґратка»: цінності станів

Зображення політики зі стрілками, що показують переміщення між станами.

  • Дев'ять станів → дев'ять цінностей станів
  • Коефіцієнт дисконту: $\gamma = 1$
Reinforcement Learning з Gymnasium у Python

Цінність цільового стану

Агент у цільовому стані.

  • Починаючи в цільовому стані, агент не рухається
  • $V(goal \, state) = 0$

Значення цільового стану дорівнює 0

Reinforcement Learning з Gymnasium у Python

Цінність стану 5

Агент у стані 5.

  • Починаючи в 5, агент переходить у ціль
  • $V(5) = 10$

Значення стану 5 дорівнює 10

Reinforcement Learning з Gymnasium у Python

Цінність стану 2

Агент у стані 2.

  • Починаючи в 2, винагороди: $-1, 10$
  • $ V(2) = (1 \times -1) + (1 \times 10) = 9$

Значення стану 2 дорівнює 9.

Reinforcement Learning з Gymnasium у Python

Усі цінності станів

Усі значення станів для 9 станів середовища.

Reinforcement Learning з Gymnasium у Python

Рівняння Беллмана

  • Рекурсивна формула
  • Обчислює цінності станів

Рівняння Беллмана: сума миттєвої винагороди поточного стану та дисконтованої цінності наступного.

Reinforcement Learning з 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)

Рівняння Беллмана: сума миттєвої винагороди поточного стану та дисконтованої цінності наступного.

Reinforcement Learning з 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 станів середовища.

Reinforcement Learning з 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)

Зображення політики зі стрілками, що показують переміщення між станами.

Reinforcement Learning з 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.

Reinforcement Learning з Gymnasium у Python

Давайте потренуємось!

Reinforcement Learning з Gymnasium у Python

Preparing Video For Download...