Equilibrando exploração e exploração

Reinforcement Learning com Gymnasium em Python

Fouad Trad

Machine Learning Engineer

Treino com ações aleatórias

  • Agente explora o ambiente
  • Sem otimizar estratégia com base no que aprendeu
  • Usa o conhecimento só após o treino

Imagem mostrando um agente dentro de um ambiente

Reinforcement Learning com Gymnasium em Python

Trade-off exploração–exploração

 

  • Equilibra exploração e exploração
  • Exploração contínua impede refinar a estratégia
  • Só explorar pode perder oportunidades não descobertas

Imagem mostrando um agente tentando explorar novas ações para descobrir mais recompensas e tentando explorar seu conhecimento, possivelmente perdendo recompensas.

Reinforcement Learning com Gymnasium em Python

Escolhas ao comer fora

Imagem mostrando uma mesa de restaurante.

Reinforcement Learning com Gymnasium em Python

Estratégia epsilon-greedy

 

  • Explorar com probabilidade epsilon

Diagrama mostrando que, com probabilidade epsilon, o agente explora escolhendo uma ação aleatória.

Reinforcement Learning com Gymnasium em Python

Estratégia epsilon-greedy

 

  • Explorar com probabilidade epsilon
  • Explorar com probabilidade 1-epsilon
  • Garante exploração contínua enquanto usa o conhecimento

Diagrama mostrando que, com probabilidade epsilon, o agente explora escolhendo uma ação aleatória, e com probabilidade 1 - epsilon, ele explora selecionando a melhor ação conhecida.

Reinforcement Learning com Gymnasium em Python

Epsilon-greedy com decaimento

 

  • Reduz o epsilon ao longo do tempo
  • Mais exploração no início
  • Mais exploração depois
  • O agente confia cada vez mais no conhecimento acumulado

Imagem mostrando como o epsilon diminui ao longo do tempo.

Reinforcement Learning com Gymnasium em Python

Implementação com Frozen Lake

env = gym.make('FrozenLake', is_slippery=True)

action_size = env.action_space.n
state_size = env.observation_space.n
Q = np.zeros((state_size, action_size))

alpha = 0.1 gamma = 0.99 total_episodes = 10000

Imagem mostrando um snapshot do ambiente Frozen Lake.

Reinforcement Learning com Gymnasium em Python

Implementando epsilon_greedy()

def epsilon_greedy(state):

if np.random.rand() < epsilon: action = env.action_space.sample() # Explore
else: action = np.argmax(Q[state, :]) # Exploit return action
Reinforcement Learning com Gymnasium em Python

Treinando epsilon-greedy

epsilon = 0.9   # Exploration rate

rewards_eps_greedy = []
for episode in range(total_episodes):
    state, info = env.reset()
    terminated = False
    episode_reward = 0
    while not terminated:
        action = epsilon_greedy(state)
        new_state, reward, terminated, truncated, info = env.step(action)       
        Q[state, action] = update_q_table(state, action, new_state) 
        state = new_state

episode_reward += reward rewards_eps_greedy.append(episode_reward)
Reinforcement Learning com Gymnasium em Python

Treinando epsilon-greedy com decaimento

epsilon = 1.0   # Exploration rate
epsilon_decay = 0.999
min_epsilon = 0.01

rewards_decay_eps_greedy = [] for episode in range(total_episodes): state, info = env.reset() terminated = False episode_reward = 0 while not terminated: action = epsilon_greedy(state) new_state, reward, terminated, truncated, info = env.step(action) episode_reward += reward Q[state, action] = update_q_table(state, action, new_state) state = new_state rewards_decay_eps_greedy.append(episode_reward)
epsilon = max(min_epsilon, epsilon * epsilon_decay)
Reinforcement Learning com Gymnasium em Python

Comparando estratégias

avg_eps_greedy= np.mean(rewards_eps_greedy)
avg_decay = np.mean(rewards_decay_eps_greedy)
plt.bar(['Epsilon Greedy', 'Decayed Epsilon Greedy'],
        [avg_eps_greedy, avg_decay], 
        color=['blue', 'green'])
plt.title('Average Reward per Episode')
plt.ylabel('Average Reward')
plt.show()

Imagem de um gráfico de barras mostrando que a recompensa média com epsilon-greedy é ~0,02, enquanto com epsilon-greedy com decaimento é ~0,55.

Reinforcement Learning com Gymnasium em Python

Vamos praticar!

Reinforcement Learning com Gymnasium em Python

Preparing Video For Download...