Monte Carlo yöntemleri

Python ile Gymnasium'da Reinforcement Learning

Fouad Trad

Machine Learning Engineer

Tekrar: modele dayalı öğrenme

 

  • Ortam dinamiklerinin bilgisine dayanır
  • Ortamla etkileşim yoktur

Önceki videoda görülen politika yineleme ve değer yineleme algoritmalarının şemalarını gösteren görüntü.

Python ile Gymnasium'da Reinforcement Learning

Modelden bağımsız öğrenme

 

  • Ortam dinamiklerinin bilgisine dayanmaz
  • Aracı, ortamla etkileşir
  • Deneme-yanılmayla politika öğrenir
  • Gerçek dünyaya daha uygundur

Bir satranç ortamıyla etkileşen bir robot resmi.

Python ile Gymnasium'da Reinforcement Learning

Monte Carlo yöntemleri

  • Modelden bağımsız teknikler
  • Q-değerlerini bölümlerden tahmin eder

Durumlar, eylemler, ödüller ve getirilerden oluşan bir bölüm iskeletini gösteren görüntü.

Python ile Gymnasium'da Reinforcement Learning

Monte Carlo yöntemleri

  • Modelden bağımsız teknikler
  • Q-değerlerini bölümlerden tahmin eder

Q-değerlerini tahmin etmenin ikinci adımını ve Q-tablosunun durum sayısı kadar satır, eylem sayısı kadar sütun içerdiğini gösteren görüntü.

Python ile Gymnasium'da Reinforcement Learning

Monte Carlo yöntemleri

  • Modelden bağımsız teknikler
  • Q-değerlerini bölümlerden tahmin eder

En iyi politikayı türetmenin son adımını gösteren görüntü; her durumu en iyi eyleme eşler.

  • İki yöntem: ilk-ziyaret, her-ziyaret
Python ile Gymnasium'da Reinforcement Learning

Özel ızgara dünya

2 satır 3 sütundan oluşan, 6 durumlu özel ızgara dünyasını gösteren görüntü; sol üstten (0) sağ alta (5) numaralı. Aracı durum 3'te, dağ 4'te, hedef 5'te.png

Python ile Gymnasium'da Reinforcement Learning

İki bölüm toplama

Durumlar, eylemler, ödüller ve getiriler bakımından toplanan ilk bölümü gösteren görüntü.

Durumlar, eylemler, ödüller ve getiriler bakımından toplanan ikinci bölümü gösteren görüntü.

Python ile Gymnasium'da Reinforcement Learning

Q-değerlerini tahmin etme

İki bölüm için toplanan durumlar, eylemler, ödüller ve getirileri gösteren görüntü.

  • Q-tablosu: Q-değerleri tablosu

Doldurulması gereken boş bir Q-tablosunu gösteren görüntü.

Python ile Gymnasium'da Reinforcement Learning

Q(4, sol), Q(4, yukarı) ve Q(1, aşağı)

İki bölüm için toplanan durumlar, eylemler, ödüller ve getirileri; (4, sol), (4, yukarı) ve (1, aşağı) vurgulanmış olarak gösteren görüntü.

  • (s,a) bir kez görünür -> getiriyle doldur

(4, sol), (4, yukarı) ve (1, aşağı) değerleri doldurulmuş Q-tablosu.

Python ile Gymnasium'da Reinforcement Learning

Q(4, sağ)

İki bölümde de vurgulanmış (4, sağ) ile toplanan durumlar, eylemler, ödüller ve getirileri gösteren görüntü

  • (s,a) bölüm başına bir kez -> ortalama al

(4, sağ) değerinin her iki bölümün getirilerinin ortalamasıyla doldurulduğu Q-tablosu.

Python ile Gymnasium'da Reinforcement Learning

Q(3, sağ) - ilk-ziyaret Monte Carlo

İki bölümde de yalnızca ilk oluşumları vurgulanmış (3, sağ) ile toplanan durumlar, eylemler, ödüller ve getirileri gösteren görüntü

  • Bölüm içinde (s,a) için ilk ziyareti ortala

(3, sağ) değerinin vurgulanan satırların (ilk oluşumların) getirilerinin ortalamasıyla doldurulduğu Q-tablosu.

Python ile Gymnasium'da Reinforcement Learning

Q(3, sağ) - her-ziyaret Monte Carlo

İki bölümde de her oluşumu vurgulanmış (3, sağ) ile toplanan durumlar, eylemler, ödüller ve getirileri gösteren görüntü

  • Bölüm içinde (s,a) için her ziyareti ortala

(3, sağ) değerinin vurgulanan satırların (her oluşumun) getirilerinin ortalamasıyla doldurulduğu Q-tablosu.

Python ile Gymnasium'da Reinforcement Learning

Bir bölüm üretme

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
Python ile Gymnasium'da Reinforcement Learning

İlk-ziyaret Monte Carlo

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
Python ile Gymnasium'da Reinforcement Learning

Her-ziyaret Monte Carlo

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
Python ile Gymnasium'da Reinforcement Learning

En iyi politikayı elde etme

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

Hepsini birleştirme

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)
First-visit policy:
{0: 2, 1: 2, 2: 1, 
 3: 2, 4: 2, 5: 0}

Every-visit policy:
{0: 2, 1: 2, 2: 1, 
 3: 2, 4: 2, 5: 0}

Her durumda yapılacak en iyi eylemi oklarla gösteren en iyi politikayı gösteren görüntü.

Python ile Gymnasium'da Reinforcement Learning

Hadi pratik yapalım!

Python ile Gymnasium'da Reinforcement Learning

Preparing Video For Download...