Temporal difference-inlärning

Reinforcement Learning med Gymnasium i Python

Fouad Trad

Machine Learning Engineer

TD-inlärning vs. Monte Carlo

 

TD-inlärning
  • Modellfri
  • Estimera Q-tabell baserat på interaktion
  • Uppdatera Q-tabell varje steg i ett avsnitt
  • Passar uppgifter med långa/obestämda avsnitt

 

Monte Carlo
  • Modellfri
  • Estimera Q-tabell baserat på interaktion
  • Uppdatera Q-tabell när minst ett avsnitt är klart
  • Passar korta episodiska uppgifter
Reinforcement Learning med Gymnasium i Python

TD-inlärning som väderprognoser

Bild som visar olika väderförhållanden vid olika tidpunkter på samma plats.

Reinforcement Learning med Gymnasium i Python

SARSA

  • TD-algoritm
  • On-policy-metod: justerar strategin utifrån utförda handlingar

Bild som visar att SARSA står för nuvarande tillstånd, utförd handling, mottagen belöning, observerat nästa tillstånd och nästa handling.

Reinforcement Learning med Gymnasium i Python

SARSA:s uppdateringsregel

Bild som visar den matematiska formeln för SARSA:s uppdateringsregel.

  • $\alpha$: inlärningshastighet
  • $\gamma$: diskonteringsfaktor
  • Båda mellan 0 och 1
Reinforcement Learning med Gymnasium i Python

Frozen Lake

Bild som visar Frozen Lake-miljön

Reinforcement Learning med Gymnasium i Python

Initialisering

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
Reinforcement Learning med Gymnasium i Python

SARSA-loop

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
Reinforcement Learning med Gymnasium i Python

SARSA-uppdateringar

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)

  Bild som visar den matematiska formeln för SARSA:s uppdateringsregel.

Reinforcement Learning med Gymnasium i Python

Härleda den optimala strategin

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}

Bild som visar den optimala strategin i Frozen Lake-miljön med handlingar representerade med pilar, där agenten undviker att falla i hål.

Reinforcement Learning med Gymnasium i Python

Nu kör vi en övning!

Reinforcement Learning med Gymnasium i Python

Preparing Video For Download...