Metode Monte Carlo

Reinforcement Learning dengan Gymnasium di Python

Fouad Trad

Machine Learning Engineer

Rekap: pembelajaran berbasis model

 

  • Bergantung pada dinamika lingkungan
  • Tanpa interaksi dengan lingkungan

Gambar diagram algoritma iterasi kebijakan dan iterasi nilai, seperti di video sebelumnya.

Reinforcement Learning dengan Gymnasium di Python

Pembelajaran tanpa model

 

  • Tidak bergantung pada dinamika lingkungan
  • Agen berinteraksi dengan lingkungan
  • Belajar kebijakan lewat coba-coba
  • Lebih cocok untuk aplikasi dunia nyata

Gambar robot berinteraksi dengan lingkungan catur.

Reinforcement Learning dengan Gymnasium di Python

Metode Monte Carlo

  • Teknik tanpa model
  • Estimasi nilai Q berbasis episode

Gambar kerangka episode yang dikumpulkan: state, aksi, hadiah, dan return.

Reinforcement Learning dengan Gymnasium di Python

Metode Monte Carlo

  • Teknik tanpa model
  • Estimasi nilai Q berbasis episode

Gambar langkah kedua mengestimasi nilai Q dan bentuk tabel Q, dengan jumlah baris = jumlah state dan kolom = jumlah aksi.

Reinforcement Learning dengan Gymnasium di Python

Metode Monte Carlo

  • Teknik tanpa model
  • Estimasi nilai Q berbasis episode

Gambar menunjukkan langkah akhir menurunkan kebijakan optimal, yang memetakan setiap state ke aksi optimal.

  • Dua metode: kunjungan-pertama, setiap-kunjungan
Reinforcement Learning dengan Gymnasium di Python

Dunia kisi kustom

Gambar dunia kisi kustom berisi 6 state, 2 baris x 3 kolom, dinomori dari kiri atas (0) hingga kanan bawah (5). Agen di state 3, gunung di state 4, dan tujuan di state 5.png

Reinforcement Learning dengan Gymnasium di Python

Mengumpulkan dua episode

Gambar episode pertama yang dikumpulkan berupa state, aksi, hadiah, dan return.

Gambar episode kedua yang dikumpulkan berupa state, aksi, hadiah, dan return.

Reinforcement Learning dengan Gymnasium di Python

Mengestimasi nilai Q

Gambar state, aksi, hadiah, dan return yang dikumpulkan untuk dua episode.

  • Tabel Q: tabel untuk nilai Q

Gambar tabel Q kosong yang akan diisi.

Reinforcement Learning dengan Gymnasium di Python

Q(4, kiri), Q(4, atas), dan Q(1, bawah)

Gambar state, aksi, hadiah, dan return untuk dua episode dengan (4, kiri), (4, atas), dan (1, bawah) disorot.

  • (s,a) muncul sekali -> isi dengan return

Tabel Q dengan nilai (4, kiri), (4, atas), dan (1, bawah) terisi.

Reinforcement Learning dengan Gymnasium di Python

Q(4, kanan)

Gambar state, aksi, hadiah, dan return untuk dua episode dengan (4, kanan) disorot di kedua episode

  • (s,a) terjadi sekali per episode -> rata-rata

Tabel Q dengan nilai (4, kanan) diisi rata-rata return dari kedua episode.

Reinforcement Learning dengan Gymnasium di Python

Q(3, kanan) - Monte Carlo kunjungan-pertama

Gambar state, aksi, hadiah, dan return untuk dua episode dengan (3, kanan) disorot hanya pada kemunculan pertama di kedua episode

  • Rata-rata kunjungan pertama ke (s,a) dalam episode

Tabel Q dengan nilai (3, kanan) diisi rata-rata return dari baris yang disorot (kemunculan pertama (3, kanan)).

Reinforcement Learning dengan Gymnasium di Python

Q(3, kanan) - Monte Carlo setiap-kunjungan

Gambar state, aksi, hadiah, dan return untuk dua episode dengan (3, kanan) disorot pada setiap kemunculan di kedua episode

  • Rata-rata setiap kunjungan ke (s,a) dalam episode

Tabel Q dengan nilai (3, kanan) diisi rata-rata return dari baris yang disorot (setiap kemunculan (3, kanan)).

Reinforcement Learning dengan Gymnasium di Python

Menghasilkan satu episode

def generate_episode():
    episode = []
    state, info = env.reset()

terminated = False while not terminated: action = env.action_space.sample()
next_state, reward, terminated, truncated, info = env.step(action)
episode.append((state, action, reward)) state = next_state
return episode
Reinforcement Learning dengan Gymnasium di Python

Monte Carlo kunjungan-pertama

def first_visit_mc(num_episodes):
    Q = np.zeros((num_states, num_actions))
    returns_sum = np.zeros((num_states, num_actions))
    returns_count = np.zeros((num_states, num_actions))

for i in range(num_episodes): episode = generate_episode() visited_states_actions = set()
for j, (state, action, reward) in enumerate(episode):
if (state, action) not in visited_states:
returns_sum[state, action] += sum([x[2] for x in episode[j:]])
returns_count[state, action] += 1 visited_states_actions.add((state, action))
nonzero_counts = returns_count != 0
Q[nonzero_counts] = returns_sum[nonzero_counts] / returns_count[nonzero_counts] return Q
Reinforcement Learning dengan Gymnasium di Python

Monte Carlo setiap-kunjungan

def every_visit_mc(num_episodes):
    Q = np.zeros((num_states, num_actions))
    returns_sum = np.zeros((num_states, num_actions))
    returns_count = np.zeros((num_states, num_actions))    

    for i in range(num_episodes):
        episode = generate_episode()  

        for j, (state, action, reward) in enumerate(episode):

            returns_sum[state, action] += sum([x[2] for x in episode[j:]])
            returns_count[state, action] += 1


    nonzero_counts = returns_count != 0
    Q[nonzero_counts] = returns_sum[nonzero_counts] / returns_count[nonzero_counts]
    return Q
Reinforcement Learning dengan Gymnasium di Python

Mendapatkan kebijakan optimal

def get_policy():
    policy = {state: np.argmax(Q[state]) for state in range(num_states)}    
    return policy
Reinforcement Learning dengan Gymnasium di Python

Menggabungkan semuanya

Q = first_visit_mc(1000)

policy_first_visit = get_policy()
print("First-visit policy: \n", policy_first_visit)
Q = every_visit_mc(1000)
policy_every_visit = get_policy()
print("Every-visit policy: \n", policy_every_visit)
Kebijakan kunjungan-pertama:
{0: 2, 1: 2, 2: 1, 
 3: 2, 4: 2, 5: 0}

Kebijakan setiap-kunjungan:
{0: 2, 1: 2, 2: 1, 
 3: 2, 4: 2, 5: 0}

Gambar kebijakan optimal dengan aksi optimal di setiap state berupa panah.

Reinforcement Learning dengan Gymnasium di Python

Ayo berlatih!

Reinforcement Learning dengan Gymnasium di Python

Preparing Video For Download...