Expected SARSA

Reinforcement Learning cu Gymnasium în Python

Fouad Trad

Machine Learning Engineer

Expected SARSA

  • Metodă TD
  • Tehnică fără model
  • Actualizează tabela Q diferit față de SARSA și Q-learning

Diagramă ilustrând pașii Expected SARSA: inițializarea tabelei Q, alegerea acțiunii, primirea recompensei și actualizarea tabelei. Bucla continuă până la convergență.

Reinforcement Learning cu Gymnasium în Python

Actualizarea Expected SARSA

SARSA

Imaginea prezintă formula matematică a regulii de actualizare SARSA.

Q-learning

Imaginea prezintă formula matematică a regulii de actualizare Q-learning.

Expected SARSA

Imaginea prezintă formula matematică a regulii de actualizare Expected SARSA.

Reinforcement Learning cu Gymnasium în Python

Valoarea așteptată a stării următoare

Imaginea prezintă formula matematică a regulii de actualizare Expected SARSA.

  • Ia în calcul toate acțiunile

Imaginea prezintă formula matematică a valorii Q așteptate pentru starea următoare.

  • Acțiuni aleatoare → probabilități egale

Imaginea prezintă formula valorii Q așteptate pentru starea următoare când acțiunile sunt alese aleator cu probabilități egale.

Reinforcement Learning cu Gymnasium în Python

Implementare cu Frozen Lake

env = gym.make('FrozenLake-v1', 
               is_slippery=False)

num_states = env.observation_space.n
num_actions = env.action_space.n
Q = np.zeros((num_states, num_actions))

gamma = 0.99 alpha = 0.1 num_episodes = 1000

Imaginea prezintă mediul Frozen Lake.

Reinforcement Learning cu Gymnasium în Python

Regula de actualizare Expected SARSA

def update_q_table(state, action, next_state, reward):

expected_q = np.mean(Q[next_state])
Q[state, action] = (1-alpha) * Q[state, action] + alpha * (reward + gamma * expected_q)

Imaginea prezintă formula matematică a regulii de actualizare Expected SARSA.

Reinforcement Learning cu Gymnasium în Python

Antrenare

for i in range(num_episodes):
    state, info = env.reset()    
    terminated = False  

while not terminated: action = env.action_space.sample()
next_state, reward, terminated, truncated, info = env.step(action)
update_q_table(state, action, next_state, reward) state = next_state
Reinforcement Learning cu Gymnasium în Python

Politica agentului

policy = {state: np.argmax(Q[state]) 
          for state in range(num_states)}
print(policy)
{ 0: 1,  1: 2,  2: 1,  3: 0, 
  4: 1,  5: 0,  6: 1,  7: 0, 
  8: 2,  9: 2, 10: 1, 11: 0, 
 12: 0, 13: 2, 14: 2, 15: 0}

Imaginea prezintă politica învățată de agent, indicând acțiunea de efectuat în fiecare stare.

Reinforcement Learning cu Gymnasium în Python

Să exersăm!

Reinforcement Learning cu Gymnasium în Python

Preparing Video For Download...