Uczenie z różnicą czasową

Uczenie przez wzmacnianie z Gymnasium w Pythonie

Fouad Trad

Machine Learning Engineer

Uczenie TD a Monte Carlo

 

Uczenie TD
  • Niezależne od modelu
  • Estymacja Q-tabeli na podstawie interakcji
  • Aktualizacja Q-tabeli co krok w epizodzie
  • Odpowiednie dla długich/nieokreślonych epizodów

 

Monte Carlo
  • Niezależne od modelu
  • Estymacja Q-tabeli na podstawie interakcji
  • Aktualizacja Q-tabeli po co najmniej jednym epizodzie
  • Odpowiednie dla krótkich epizodów
Uczenie przez wzmacnianie z Gymnasium w Pythonie

Uczenie TD jako prognozowanie pogody

Obraz przedstawiający różne warunki pogodowe w tym samym miejscu o różnych porach.

Uczenie przez wzmacnianie z Gymnasium w Pythonie

SARSA

  • Algorytm TD
  • Metoda on-policy: dostosowuje strategię na podstawie podjętych akcji

Obraz pokazujący, że SARSA oznacza bieżący stan, podjętą akcję, otrzymaną nagrodę, zaobserwowany następny stan i następną akcję.

Uczenie przez wzmacnianie z Gymnasium w Pythonie

Reguła aktualizacji SARSA

Obraz przedstawiający matematyczny wzór reguły aktualizacji SARSA.

  • $\alpha$: współczynnik uczenia
  • $\gamma$: współczynnik dyskontowania
  • Oba w przedziale od 0 do 1
Uczenie przez wzmacnianie z Gymnasium w Pythonie

Frozen Lake

Obraz przedstawiający środowisko Frozen Lake

Uczenie przez wzmacnianie z Gymnasium w Pythonie

Inicjalizacja

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

Pętla 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
Uczenie przez wzmacnianie z Gymnasium w Pythonie

Aktualizacje 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)

  Obraz przedstawiający matematyczny wzór reguły aktualizacji SARSA.

Uczenie przez wzmacnianie z Gymnasium w Pythonie

Wyznaczanie optymalnej polityki

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}

Obraz przedstawiający optymalną politykę w środowisku Frozen Lake z akcjami oznaczonymi strzałkami – widać, jak agent omija dziury.

Uczenie przez wzmacnianie z Gymnasium w Pythonie

Czas na ćwiczenia!

Uczenie przez wzmacnianie z Gymnasium w Pythonie

Preparing Video For Download...