Menyeimbangkan eksplorasi dan eksploitasi

Reinforcement Learning dengan Gymnasium di Python

Fouad Trad

Machine Learning Engineer

Pelatihan dengan aksi acak

  • Agen mengeksplorasi lingkungan
  • Tidak ada optimasi strategi berdasarkan pengetahuan yang dipelajari
  • Agen memakai pengetahuan setelah pelatihan selesai

Gambar yang menampilkan agen dalam sebuah lingkungan

Reinforcement Learning dengan Gymnasium di Python

Trade-off eksplorasi-eksploitasi

 

  • Menyeimbangkan eksplorasi dan eksploitasi
  • Eksplorasi terus-menerus menghambat pematangan strategi
  • Eksploitasi saja melewatkan peluang yang belum ditemukan

Gambar yang menunjukkan agen mencoba mengeksplorasi aksi baru untuk menemukan lebih banyak reward, dan mencoba mengeksploitasi pengetahuannya sambil mungkin melewatkan beberapa reward.

Reinforcement Learning dengan Gymnasium di Python

Pilihan tempat makan

Gambar yang menunjukkan meja restoran.

Reinforcement Learning dengan Gymnasium di Python

Strategi epsilon-greedy

 

  • Eksplor dengan probabilitas epsilon

Diagram yang menunjukkan bahwa dengan probabilitas epsilon, agen mengeksplorasi dengan memilih aksi acak.

Reinforcement Learning dengan Gymnasium di Python

Strategi epsilon-greedy

 

  • Eksplor dengan probabilitas epsilon
  • Eksploit dengan probabilitas 1-epsilon
  • Menjaga eksplorasi sambil memanfaatkan pengetahuan

Diagram yang menunjukkan bahwa dengan probabilitas epsilon, agen mengeksplorasi dengan memilih aksi acak, dan dengan probabilitas 1 - epsilon, agen mengeksploitasi dengan memilih aksi terbaik yang diketahui.

Reinforcement Learning dengan Gymnasium di Python

Strategi epsilon-greedy dengan peluruhan

 

  • Kurangi epsilon seiring waktu
  • Lebih banyak eksplorasi di awal
  • Lebih banyak eksploitasi kemudian
  • Agen makin mengandalkan pengetahuan yang terkumpul

Gambar yang menunjukkan epsilon menurun seiring waktu.

Reinforcement Learning dengan Gymnasium di Python

Implementasi dengan 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

Gambar yang menampilkan cuplikan lingkungan Frozen Lake.

Reinforcement Learning dengan Gymnasium di Python

Mengimplementasikan 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 dengan Gymnasium di Python

Melatih 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 dengan Gymnasium di Python

Melatih epsilon-greedy dengan peluruhan

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 dengan Gymnasium di Python

Membandingkan strategi

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

Gambar diagram batang yang menunjukkan rata-rata reward dengan epsilon-greedy sekitar 0,02, sedangkan dengan epsilon-greedy tereduksi sekitar 0,55.

Reinforcement Learning dengan Gymnasium di Python

Ayo berlatih!

Reinforcement Learning dengan Gymnasium di Python

Preparing Video For Download...