Balansera utforskning och utnyttjande

Reinforcement Learning med Gymnasium i Python

Fouad Trad

Machine Learning Engineer

Träning med slumpmässiga handlingar

  • Agenten utforskar miljön
  • Ingen strategioptimering baserad på inlärd kunskap
  • Agenten använder kunskapen när träningen är klar

Bild som visar en agent i en miljö

Reinforcement Learning med Gymnasium i Python

Avvägningen mellan utforskning och utnyttjande

 

  • Balanserar utforskning och utnyttjande
  • Kontinuerlig utforskning hindrar strategiförfining
  • Enbart utnyttjande missar oupptäckta möjligheter

Bild som visar en agent som försöker utforska nya handlingar för att hitta fler belöningar, och utnyttja sin kunskap medan den riskerar att missa vissa belöningar.

Reinforcement Learning med Gymnasium i Python

Val på restaurang

Bild som visar ett restaurangbord.

Reinforcement Learning med Gymnasium i Python

Epsilon-girig strategi

 

  • Utforska med sannolikhet epsilon

Diagram som visar att agenten med sannolikheten epsilon utforskar genom att välja en slumpmässig handling.

Reinforcement Learning med Gymnasium i Python

Epsilon-girig strategi

 

  • Utforska med sannolikhet epsilon
  • Utnyttja med sannolikhet 1-epsilon
  • Säkerställer kontinuerlig utforskning med bibehållen kunskap

Diagram som visar att agenten med sannolikheten epsilon utforskar genom att välja en slumpmässig handling, och med sannolikheten 1 - epsilon utnyttjar genom att välja den bäst kända handlingen.

Reinforcement Learning med Gymnasium i Python

Epsilon-girig strategi med avtagande epsilon

 

  • Minskar epsilon över tid
  • Mer utforskning inledningsvis
  • Mer utnyttjande senare
  • Agenten förlitar sig allt mer på sin insamlade kunskap

Bild som visar hur epsilon minskar över tid.

Reinforcement Learning med Gymnasium i Python

Implementering med 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

Bild som visar en ögonblicksbild av Frozen Lake-miljön.

Reinforcement Learning med Gymnasium i Python

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

Träning med epsilon-girig strategi

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

Träning med avtagande epsilon-girig strategi

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

Jämföra strategier

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

Bild av ett stapeldiagram som visar att den genomsnittliga belöningen med epsilon-girig strategi är cirka 0,02 och med avtagande epsilon-girig strategi cirka 0,55.

Reinforcement Learning med Gymnasium i Python

Nu kör vi en övning!

Reinforcement Learning med Gymnasium i Python

Preparing Video For Download...