CodeBlanks Logo Icon CodeBlanks

Reward

Reward, ajanın eyleminin ne kadar iyi olduğunu gösteren sinyaldır.

Ödül ve getiri

Ajan tek adımlık ödülü değil, getiriyi (return) en büyük yapmaya çalışır. Gelecekteki ödüller bir indirim oranı γ ile azaltılır:

# G_t = r_t + γ r_{t+1} + γ² r_{t+2} + ...
G = sum(gamma ** k * r for k, r in enumerate(oduller))

γ = 0 ise ajan yalnızca anlık ödülü önemser; γ → 1 ise uzak geleceği de neredeyse tam değerle hesaba katar. γ < 1 sonsuz bölümlerde getirinin sonlu kalmasını da sağlar.

Getiriyi geriye doğru hesaplamak

Her adımın getirisi bir sonrakinin getirisinden hesaplanabilir: G_t = r_t + γ G_{t+1}. Bölümün sonundan başa doğru tek geçişte tüm getiriler bulunur:

def getiriler(oduller, gamma):
    G, sonuc = 0.0, []
    for r in reversed(oduller):
        G = r + gamma * G
        sonuc.append(G)
    return sonuc[::-1]

Bu özyineleme, Q-learning ve tüm değer tabanlı yöntemlerin dayandığı Bellman denkleminin çekirdeğidir.

Uygulama İndirimli getiriler

Geriye doğru çalışan getiriler(oduller, gamma) fonksiyonunu yaz. Koridorda en iyi yolun ödülleri [-0.1, -0.1, -0.1, 1.0] için γ = 0.9 ile getirileri, ve γ = 0.0 ile ilk adımın getirisini np.round(..., 3) ile alt alta yazdır. Ardından ileri doğru formülle (sum(gamma ** k * r ...)) ilk getirinin aynı olduğunu np.isclose ile yazdır.

Başlangıç kodu

model.py
import numpy as np

oduller = [-0.1, -0.1, -0.1, 1.0]

# buraya yaz

Örnek çözüm

model.py
import numpy as np

oduller = [-0.1, -0.1, -0.1, 1.0]

def getiriler(oduller, gamma):
    G, sonuc = 0.0, []
    for r in reversed(oduller):
        G = r + gamma * G
        sonuc.append(G)
    return sonuc[::-1]

print(np.round(getiriler(oduller, 0.9), 3))
print(np.round(getiriler(oduller, 0.0)[0], 3))
ileri = sum(0.9 ** k * r for k, r in enumerate(oduller))
print(np.isclose(ileri, getiriler(oduller, 0.9)[0]))

Beklenen çıktı

[0.458 0.62  0.8   1.   ]
-0.1
True

Soru ve cevaplar

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

1 γ = 0.5 ve ödüller [0, 0, 4] ise ilk adımdaki getiri nedir?

  • 2
  • 0
  • 1 Doğru cevap
  • 4

Açıklama: 0 + 0.5·0 + 0.25·4 = 1.

2 Getiriyi bir sonrakinden hesapla.

Soru
G = r + ____ * G
Cevap
G = r + gamma * G

Açıklama: G_t = r_t + γ G_{t+1}.

3 Eşleştir.

Kavram Anlamı
γ = 0 Yalnızca anlık ödül
γ → 1 Uzak gelecek önemli
G_t İndirimli toplam
Bellman G_t = r_t + γ G_{t+1}

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