CodeBlanks Logo Icon CodeBlanks

Özet - RL

Bu grupta agent, policy, reward ve Q-learning'i öğrendin.

Özet: pekiştirmeli öğrenme

Bu grupta:

  • RL: ajan ortamla etkileşir, ödülden öğrenir; amaç toplam (indirimli) getiridir.
  • Ajanlar çok bölümün ortalamasıyla karşılaştırılır; rastgele ajan taban çizgisidir.
  • Politika durumdan eyleme kuraldır; ε-açgözlü keşif ile sömürüyü dengeler.
  • Getiri G_t = r_t + γ G_{t+1} ile geriye doğru hesaplanır (Bellman).
  • Q-learning, Q tablosunu r + γ max Q(s') hedefine doğru günceller; politika-dışıdır.
# Değer tabanlı: Q-learning, DQN
# Politika tabanlı: REINFORCE, PPO (RLHF'de kullanılan)
# Aktör-eleştirmen: A2C, SAC

Uygulama Öğrenilen politikayı değerlendir

Verilen eğitilmiş Q-learning döngüsünü çalıştır. Ardından keşifsiz (açgözlü) politikayla bir bölüm oynayan degerlendir(Q) fonksiyonunu yaz; geçilen yolu ve toplam ödülü (round(..., 2)) aynı satırda yazdır. Son olarak eğitilmemiş (sıfır) Q tablosuyla aynı değerlendirmede bölümün 20 adımlık sınıra takıldığını göstermek için yolun uzunluğunu yazdır.

Başlangıç kodu

model.py
import numpy as np

N = 5            # durumlar 0..4, hedef 4
SOL, SAG = 0, 1

def adim(durum, eylem):
    yeni = max(0, durum - 1) if eylem == SOL else durum + 1
    if yeni == N - 1:
        return yeni, 1.0, True
    return yeni, -0.1, False

rng = np.random.default_rng(0)
Q = np.zeros((N, 2))
for b in range(300):
    durum, bitti = 0, False
    while not bitti:
        eylem = int(rng.integers(2)) if rng.random() < 0.2 else int(np.argmax(Q[durum]))
        yeni, odul, bitti = adim(durum, eylem)
        Q[durum, eylem] += 0.5 * (odul + 0.9 * Q[yeni].max() * (not bitti) - Q[durum, eylem])
        durum = yeni

# buraya yaz

Örnek çözüm

model.py
import numpy as np

N = 5            # durumlar 0..4, hedef 4
SOL, SAG = 0, 1

def adim(durum, eylem):
    yeni = max(0, durum - 1) if eylem == SOL else durum + 1
    if yeni == N - 1:
        return yeni, 1.0, True
    return yeni, -0.1, False

rng = np.random.default_rng(0)
Q = np.zeros((N, 2))
for b in range(300):
    durum, bitti = 0, False
    while not bitti:
        eylem = int(rng.integers(2)) if rng.random() < 0.2 else int(np.argmax(Q[durum]))
        yeni, odul, bitti = adim(durum, eylem)
        Q[durum, eylem] += 0.5 * (odul + 0.9 * Q[yeni].max() * (not bitti) - Q[durum, eylem])
        durum = yeni

def degerlendir(Q, sinir=20):
    durum, toplam, yol = 0, 0.0, [0]
    for _ in range(sinir):
        durum, odul, bitti = adim(durum, int(np.argmax(Q[durum])))
        toplam += odul
        yol.append(durum)
        if bitti:
            break
    return yol, toplam

yol, toplam = degerlendir(Q)
print(yol, round(toplam, 2))
print(len(degerlendir(np.zeros((N, 2)))[0]))

Beklenen çıktı

[0, 1, 2, 3, 4] 0.7
21

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Öğrenilmiş Q tablosundan politika nasıl elde edilir?

  • Her durumda en yüksek Q değerli eylem seçilir Doğru cevap
  • Q değerleri toplanır
  • Rastgele eylem seçilir
  • En düşük Q seçilir

Açıklama: Açgözlü politika: π(s) = argmax_a Q(s, a).

2 Q tablosundan açgözlü politikayı çıkar.

Soru
politika = Q.____(axis=1)
Cevap
politika = Q.argmax(axis=1)

Açıklama: Her satırın (durumun) en iyi eylemi.

3 Eşleştir.

Kavram Anlamı
Q-learning Değer tabanlı
PPO Politika tabanlı
ε Keşif
γ İndirim

Uzman bölümündeki tüm dersler