Özet - RL
- Makine Öğrenmesi kursu
- Uzman
- Ders 40/44
- 6 dk
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, SACUygulama Öğ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
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
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.
politika = Q.____(axis=1)
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 |