Funkcje wartości akcji

Uczenie przez wzmacnianie z Gymnasium w Pythonie

Fouad Trad

Machine Learning Engineer

Funkcje wartości akcji (Q-wartości)

  • Oczekiwany zwrot z:
    • Rozpoczęcia w stanie $s$
    • Wykonania akcji $a$
    • Stosowania polityki
  • Ocenia pożądalność akcji w stanach

Obraz przedstawiający wzór do obliczania wartości q dla stanu i akcji, Q(s,a) jako suma natychmiastowej nagrody po wykonaniu akcji i zdyskontowanej wartości nowego stanu dla danej polityki.

Uczenie przez wzmacnianie z Gymnasium w Pythonie

Siatka świat

Obraz przedstawiający niestandardowe środowisko z 2 górami i diamentem.

  • Wartości stanów

Obraz przedstawiający wartości stanów obliczone wcześniej dla wszystkich stanów.

Uczenie przez wzmacnianie z Gymnasium w Pythonie

Q-wartości – stan 4

Obraz przedstawiający agenta w stanie 4.

  • Agent startuje w stanie 4

Obraz przedstawiający wartości stanów obliczone wcześniej dla wszystkich stanów.

Uczenie przez wzmacnianie z Gymnasium w Pythonie

Q-wartości – stan 4

Obraz przedstawiający 4 akcje dostępne dla agenta w stanie 4 wraz z ich nagrodami.

  • Agent może poruszać się w górę, w dół, w lewo, w prawo

Obraz przedstawiający wartości stanów obliczone wcześniej dla wszystkich stanów.

Uczenie przez wzmacnianie z Gymnasium w Pythonie

Stan 4 – akcja w dół

Obraz przedstawiający agenta przemieszczającego się w dół ze stanu 4 do stanu 7.

  • Nagroda: -2, wartość stanu: 5

Obraz przedstawiający wartości stanów obliczone wcześniej dla wszystkich stanów.

Uczenie przez wzmacnianie z Gymnasium w Pythonie

Stan 4 – akcja w dół

Obraz przedstawiający agenta przemieszczającego się w dół ze stanu 4 do stanu 7 oraz odpowiadającą wartość q równą 3.

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

Obraz przedstawiający wartości stanów obliczone wcześniej dla wszystkich stanów.

Uczenie przez wzmacnianie z Gymnasium w Pythonie

Stan 4 – akcja w lewo

Obraz przedstawiający agenta przemieszczającego się w lewo ze stanu 4 do stanu 3 oraz odpowiadającą wartość q równą 1.

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

Obraz przedstawiający wartości stanów obliczone wcześniej dla wszystkich stanów.

Uczenie przez wzmacnianie z Gymnasium w Pythonie

Stan 4 – akcja w górę

Obraz przedstawiający agenta przemieszczającego się w górę ze stanu 4 do stanu 1 oraz odpowiadającą wartość q równą 7.

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

Obraz przedstawiający wartości stanów obliczone wcześniej dla wszystkich stanów.

Uczenie przez wzmacnianie z Gymnasium w Pythonie

Stan 4 – akcja w prawo

Obraz przedstawiający agenta przemieszczającego się w prawo ze stanu 4 do stanu 5 oraz odpowiadającą wartość q równą 9.

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

Obraz przedstawiający wartości stanów obliczone wcześniej dla wszystkich stanów.

Uczenie przez wzmacnianie z Gymnasium w Pythonie

Wszystkie Q-wartości

Obraz przedstawiający Q-wartości obliczone dla wszystkich par stan–akcja.

Uczenie przez wzmacnianie z Gymnasium w Pythonie

Obliczanie Q-wartości

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)

Obraz przedstawiający wzór do obliczania wartości q dla stanu i akcji, Q(s,a) jako suma natychmiastowej nagrody po wykonaniu akcji i zdyskontowanej wartości nowego stanu dla danej polityki.

Uczenie przez wzmacnianie z Gymnasium w Pythonie

Obliczanie Q-wartości

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

print(Q)
Uczenie przez wzmacnianie z Gymnasium w Pythonie

Obliczanie Q-wartości

{(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}

Obraz przedstawiający Q-wartości obliczone dla wszystkich par stan–akcja.

Uczenie przez wzmacnianie z Gymnasium w Pythonie

Ulepszanie polityki

Obraz przedstawiający Q-wartości obliczone dla wszystkich par stan–akcja.

Uczenie przez wzmacnianie z Gymnasium w Pythonie

Ulepszanie polityki

  • Wybór akcji z najwyższą Q-wartością dla każdego stanu

Obraz przedstawiający Q-wartości obliczone dla wszystkich par stan–akcja z zaznaczoną maksymalną Q-wartością dla każdego stanu.

Uczenie przez wzmacnianie z Gymnasium w Pythonie

Ulepszanie polityki

Obraz przedstawiający starą politykę i odpowiadające jej Q-wartości. Stara polityka

Obraz przedstawiający nową politykę wybierającą akcję prowadzącą do maksymalnej Q-wartości.

Uczenie przez wzmacnianie z Gymnasium w Pythonie

Ulepszanie polityki

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}
Uczenie przez wzmacnianie z Gymnasium w Pythonie

Czas na ćwiczenia!

Uczenie przez wzmacnianie z Gymnasium w Pythonie

Preparing Video For Download...