Politikalar ve durum-değer fonksiyonları

Python ile Gymnasium'da Reinforcement Learning

Fouad Trad

Machine Learning Engineer

Politikalar

  • ÖÖ hedefi → etkili politikalar oluşturmak
  • Her durumda getiriyi maksimize edecek eylemi belirt

Büyük bir yol haritası görseli.

Python ile Gymnasium'da Reinforcement Learning

Izgara dünya örneği

  • Ajan, dağlardan kaçınarak elmasa ulaşmayı hedefler
  • Dokuz durum
  • Deterministik hareketler

action_numbers_green.png

9 hücreli, 2’si dağ ve 1’i elmas olan özel ortamı gösteren görsel.

Python ile Gymnasium'da Reinforcement Learning

Izgara dünya örneği - ödüller

  • Durumlara göre verilir:
    • Elmas: +10

Komşu hücrelerden elmasa hareketlerin +10 ödül verdiğini gösteren görsel.

Python ile Gymnasium'da Reinforcement Learning

Izgara dünya örneği - ödüller

  • Durumlara göre verilir:
    • Elmas: +10
    • Dağ: -2

Dağlara götüren eylemlerin -2 ödül verdiğini gösteren görsel.

Python ile Gymnasium'da Reinforcement Learning

Izgara dünya örneği - ödüller

  • Durumlara göre verilir:
    • Elmas: +10
    • Dağ: -2
    • Diğer durumlar: -1

Başka herhangi bir hareketin -1 ödül verdiğini gösteren görsel.

Python ile Gymnasium'da Reinforcement Learning

Izgara dünya örneği: politika

# 0: sol, 1: aşağı, 2: sağ, 3: yukarı
policy = {
    0:1, 1:2, 2:1, 
    3:1, 4:3, 5:1,
    6:2, 7:3
}

state, info = env.reset() terminated = False while not terminated: action = policy[state] state, reward, terminated, _, _ = env.step(action)

Durumlar arası hareketleri oklarla gösteren politika görseli.

Python ile Gymnasium'da Reinforcement Learning

Durum-değer fonksiyonları

  • Durumun değerini tahmin et
  • Politikayı izleyerek durumdan başlayan beklenen getiri

Durum-değer fonksiyonunun, durum s’den başlayıp politikayı izleyerek iskonto edilmiş getiri olduğunu gösteren formül.

Python ile Gymnasium'da Reinforcement Learning

Izgara dünya örneği: Durum-değerleri

Durumlar arası hareketleri oklarla gösteren politika görseli.

  • Dokuz durum → dokuz durum-değeri
  • İskonto faktörü: $\gamma = 1$
Python ile Gymnasium'da Reinforcement Learning

Hedef durumunun değeri

Aracının hedef durumda olduğunu gösteren görsel.

  • Hedefte başlanırsa, ajan hareket etmez
  • $V(hedef \, durumu) = 0$

Hedef durumunun değerinin 0 olduğunu gösteren görsel

Python ile Gymnasium'da Reinforcement Learning

Durum 5’in değeri

Ajanın durum 5’te olduğunu gösteren görsel.

  • 5’ten başlanırsa, ajan hedefe gider
  • $V(5) = 10$

Durum 5’in değerinin 10 olduğunu gösteren görsel

Python ile Gymnasium'da Reinforcement Learning

Durum 2’nin değeri

Ajanın durum 2’de olduğunu gösteren görsel.

  • 2’den başlanırsa, ödüller: $-1, 10$
  • $ V(2) = (1 \times -1) + (1 \times 10) = 9$

Durum 2’nin değerinin 9 olduğunu gösteren görsel.

Python ile Gymnasium'da Reinforcement Learning

Tüm durum-değerleri

Ortamın 9 durumu için tüm durum-değerlerini gösteren görsel.

Python ile Gymnasium'da Reinforcement Learning

Bellman denklemi

  • Özyinelemeli formül
  • Durum-değerlerini hesaplar

Bellman denkleminde, anlık ödül ile bir sonraki durumun iskonto edilmiş değerinin toplamı gösterilir.

Python ile Gymnasium'da Reinforcement Learning

Durum-değerlerini hesaplama

def compute_state_value(state):

if state == terminal_state: return 0
action = policy[state]
_, next_state, reward, _ = env.unwrapped.P[state][action][0]
return reward + gamma * compute_state_value(next_state)

Bellman denkleminde, anlık ödül ile bir sonraki durumun iskonto edilmiş değerinin toplamı gösterilir.

Python ile Gymnasium'da Reinforcement Learning

Durum-değerlerini hesaplama

terminal_state = 8
gamma = 1

V = {state: compute_state_value(state) for state in range(num_states)}
print(V)
{0: 1, 1: 8, 2: 9, 
 3: 2, 4: 7, 5: 10, 
 6: 3, 7: 5, 8: 0}

Ortamın 9 durumu için tüm durum-değerlerini gösteren görsel.

Python ile Gymnasium'da Reinforcement Learning

Politikaları değiştirme

# 0: sol, 1: aşağı, 2: sağ, 3: yukarı
policy_two = {
    0:2, 1:2, 2:1,
    3:2, 4:2, 5:1,
    6:2, 7:2
}

V_2 = {state: compute_state_value(state) for state in range(num_states)} print(V_2)

Durumlar arası hareketleri oklarla gösteren politika görseli.

Python ile Gymnasium'da Reinforcement Learning

Politikaları karşılaştırma

Politika 1 için durum-değerleri

{0: 1, 1: 8, 2: 9, 
 3: 2, 4: 7, 5: 10, 
 6: 3, 7: 5, 8: 0}

Politika 1’in durum-değerlerini gösteren görsel.

Politika 2 için durum-değerleri

{0: 7, 1: 8, 2: 9, 
 3: 7, 4: 9, 5: 10, 
 6: 8, 7: 10, 8: 0}

Politika 2’nin durum-değerlerini gösteren görsel.

Python ile Gymnasium'da Reinforcement Learning

Hadi pratik yapalım!

Python ile Gymnasium'da Reinforcement Learning

Preparing Video For Download...