Функции ценности действий

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

Fouad Trad

Machine Learning Engineer

Функции ценности действий (Q-значения)

  • Ожидаемый возврат:
    • Начиная из состояния $s$
    • Выполняя действие $a$
    • Следуя политике
  • Оценивает желательность действий в состояниях

Изображение формулы для вычисления q-значения для состояния и действия: Q(s,a) как сумма немедленного вознаграждения за выполненное действие и дисконтированного значения нового состояния для конкретной политики.

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

Сеточный мир

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

  • Ценности состояний

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

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

Q-значения — состояние 4

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

  • Агент появляется в состоянии 4

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

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

Q-значения — состояние 4

Изображение 4 действий агента в состоянии 4 с соответствующими вознаграждениями.

  • Агент может двигаться вверх, вниз, влево, вправо

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

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

Состояние 4 — действие «вниз»

Изображение агента, перемещающегося вниз из состояния 4 в состояние 7.

  • Вознаграждение: -2, ценность состояния: 5

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

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

Состояние 4 — действие «вниз»

Изображение агента, перемещающегося вниз из состояния 4 в состояние 7, с соответствующим q-значением равным 3.

  • $Q(4, \text{down}) = -2 + 1 \times 5 = 3$

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

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

Состояние 4 — действие «влево»

Изображение агента, перемещающегося влево из состояния 4 в состояние 3, с соответствующим q-значением равным 1.

  • $Q(4, \text{left}) = -1 + 1 \times 2 = 1$

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

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

Состояние 4 — действие «вверх»

Изображение агента, перемещающегося вверх из состояния 4 в состояние 1, с соответствующим q-значением равным 7.

  • $Q(4, \text{up}) = -1 + 1 \times 8 = 7$

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

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

Состояние 4 — действие «вправо»

Изображение агента, перемещающегося вправо из состояния 4 в состояние 5, с соответствующим q-значением равным 9.

  • $Q(4, \text{right}) = -1 + 1 \times 10 = 9$

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

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

Все Q-значения

Изображение Q-значений, вычисленных для всех пар «состояние — действие».

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

Вычисление Q-значений

def compute_q_value(state, action):

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

Изображение формулы для вычисления q-значения для состояния и действия: Q(s,a) как сумма немедленного вознаграждения за выполненное действие и дисконтированного значения нового состояния для конкретной политики.

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

Вычисление Q-значений

Q = {(state, action): compute_q_value(state, action)
     for state in range(num_states) 
     for action in range(num_actions)}

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

Вычисление Q-значений

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

Изображение Q-значений, вычисленных для всех пар «состояние — действие».

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

Улучшение политики

Изображение Q-значений, вычисленных для всех пар «состояние — действие».

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

Улучшение политики

  • Для каждого состояния выбирается действие с наибольшим Q-значением

Изображение Q-значений для всех пар «состояние — действие»: максимальное Q-значение каждого состояния обведено.

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

Улучшение политики

Изображение старой политики и соответствующих Q-значений. Старая политика

Изображение новой политики при выборе действия с максимальным Q-значением.

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

Улучшение политики

improved_policy = {}


for state in range(num_states-1): max_action = max(range(num_actions), key=lambda action: Q[(state, action)])
improved_policy[state] = max_action
print(improved_policy)
{0: 2, 1: 2, 2: 1, 
 3: 2, 4: 2, 5: 1, 
 6: 2, 7: 2}
Обучение с подкреплением с Gymnasium на Python

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

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

Preparing Video For Download...