Învățarea prin diferențe temporale

Reinforcement Learning cu Gymnasium în Python

Fouad Trad

Machine Learning Engineer

Învățare TD vs. Monte Carlo

 

Învățare TD
  • Fără model
  • Estimează Q-table pe baza interacțiunii
  • Actualizează Q-table la fiecare pas din episod
  • Potrivit pentru sarcini cu episoade lungi/nedefinite

 

Monte Carlo
  • Fără model
  • Estimează Q-table pe baza interacțiunii
  • Actualizează Q-table după cel puțin un episod complet
  • Potrivit pentru sarcini episodice scurte
Reinforcement Learning cu Gymnasium în Python

Învățarea TD ca prognoză meteo

Imaginea unor condiții meteo diferite la momente diferite în același loc.

Reinforcement Learning cu Gymnasium în Python

SARSA

  • Algoritm TD
  • Metodă on-policy: ajustează strategia pe baza acțiunilor efectuate

Imaginea care arată că SARSA reprezintă starea curentă, acțiunea luată, recompensa primită, starea următoare observată și acțiunea următoare.

Reinforcement Learning cu Gymnasium în Python

Regula de actualizare SARSA

Imaginea formulei matematice a regulii de actualizare SARSA.

  • $\alpha$: rată de învățare
  • $\gamma$: factor de discount
  • Ambii între 0 și 1
Reinforcement Learning cu Gymnasium în Python

Frozen Lake

Imaginea mediului Frozen Lake

Reinforcement Learning cu Gymnasium în Python

Inițializare

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 cu Gymnasium în Python

Bucla 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
Reinforcement Learning cu Gymnasium în Python

Actualizări 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)

  Imaginea formulei matematice a regulii de actualizare SARSA.

Reinforcement Learning cu Gymnasium în Python

Derivarea politicii optime

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}

Imaginea politicii optime în mediul Frozen Lake, cu acțiunile reprezentate prin săgeți; se poate observa cum agentul evită căderile în găuri.

Reinforcement Learning cu Gymnasium în Python

Să exersăm!

Reinforcement Learning cu Gymnasium în Python

Preparing Video For Download...