Double Q-learning

Reinforcement Learning dengan Gymnasium di Python

Fouad Trad

Machine Learning Engineer

Q-learning

  • Mengestimasi fungsi nilai-aksi optimal
  • Cenderung melebihkan Q karena pembaruan berbasis nilai Q maksimum
  • Dapat menghasilkan kebijakan kurang optimal

 

Gambar menampilkan rumus matematis aturan pembaruan Q-learning.

Reinforcement Learning dengan Gymnasium di Python

Double Q-learning

  • Memiliki dua tabel Q
  • Tiap tabel diperbarui berdasarkan yang lain
  • Mengurangi risiko overestimation nilai Q

Gambar menampilkan dua tabel Q, Q0 dan Q1, dan masing-masing diperbarui berdasarkan yang lain.

Reinforcement Learning dengan Gymnasium di Python

Pembaruan Double Q-learning

  • Pilih tabel secara acak

Gambar menampilkan dua tabel Q, Q0 dan Q1, dan masing-masing diperbarui berdasarkan yang lain.

Reinforcement Learning dengan Gymnasium di Python

Pembaruan Q0

Gambar menampilkan dua tabel Q, Q0 dan Q1, dan masing-masing diperbarui berdasarkan yang lain.

Gambar menampilkan cara mencari aksi berikut terbaik saat memperbarui Q0.

Gambar menampilkan aturan pembaruan Q0.

Reinforcement Learning dengan Gymnasium di Python

Pembaruan Q1

Gambar menampilkan dua tabel Q, Q0 dan Q1, dan masing-masing diperbarui berdasarkan yang lain.

Gambar menampilkan cara mencari aksi berikut terbaik saat memperbarui Q1.

Gambar menampilkan aturan pembaruan Q1.

Reinforcement Learning dengan Gymnasium di Python

Double Q-learning

Gambar menampilkan dua tabel Q, Q1 dan Q2, dan masing-masing diperbarui berdasarkan yang lain.

  • Mengurangi bias overestimation
  • Bergantian memperbarui Q0 dan Q1
  • Kedua tabel berkontribusi pada pembelajaran
Reinforcement Learning dengan Gymnasium di Python

Implementasi dengan Frozen Lake

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

num_states = env.observation_space.n
n_actions = env.action_space.n
Q = [np.zeros((num_states, n_actions))] * 2

num_episodes = 1000 alpha = 0.5 gamma = 0.99

Gambar menampilkan agen menavigasi lingkungan Frozen Lake.

Reinforcement Learning dengan Gymnasium di Python

Mengimplementasikan update_q_tables()

def update_q_tables(state, action, reward, next_state):
    # Select a random Q-table index (0 or 1)
    i = np.random.randint(2)

# Update the corresponding Q-table best_next_action = np.argmax(Q[i][next_state])
Q[i][state, action] = (1 - alpha) * Q[i][state, action] + alpha * (reward + gamma * Q[1-i][next_state, best_next_action])

Gambar menampilkan aturan pembaruan Q1.

Gambar menampilkan aturan pembaruan Q2.

Reinforcement Learning dengan Gymnasium di Python

Pelatihan

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

    while not terminated:
        action = np.random.choice(n_actions)  
        next_state, reward, terminated, truncated,  info = env.step(action)
        update_q_tables(state, action, reward, next_state)
        state = next_state

final_Q = (Q[0] + Q[1])/2 # OR final_Q = Q[0] + Q[1]
Reinforcement Learning dengan Gymnasium di Python

Kebijakan agen

policy = {state: np.argmax(final_Q[state]) 
          for state in range(num_states)}
print(policy)
{ 0: 1,  1: 0,  2: 0,  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}

Gambar menampilkan kebijakan yang dipelajari agen, menunjukkan aksi di setiap state.

Reinforcement Learning dengan Gymnasium di Python

Ayo berlatih!

Reinforcement Learning dengan Gymnasium di Python

Preparing Video For Download...