CodeBlanks Logo Icon CodeBlanks

RL nedir?

Reinforcement learning, ajanın ödül maximize ederek öğrenmesi yöntemidir.

Pekiştirmeli öğrenme nedir?

Pekiştirmeli öğrenmede (RL) bir ajan, bir ortamla etkileşerek deneme-yanılma ile öğrenir. Etiketli doğru cevap yoktur; yalnızca eylemlerin sonucunda gelen ödül sinyali vardır:

durum = ortam.reset()
while not bitti:
    eylem = ajan.sec(durum)
    durum, odul, bitti = ortam.adim(eylem)
    ajan.ogren(durum, eylem, odul)

Amaç tek adımlık ödül değil, zaman içindeki toplam ödüldür. Satranç, robot kontrolü ve dil modellerinin insan geri bildirimiyle ince ayarı (RLHF) RL kullanır.

Bir koridor ortamı

Bu grup boyunca 5 hücrelik bir koridor kullanacağız: ajan 0'dan başlar, 4'e (hedef) ulaşmaya çalışır. Her adım −0.1 ödül (acele et), hedef +1 verir ve bölüm biter:

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

Gym/Gymnasium kütüphanesinin env.step(action) arayüzü aynı mantıkla (gözlem, ödül, bitti, …) döndürür.

Uygulama Koridorda yürü

Verilen adim fonksiyonuyla bir bölüm çalıştıran calistir(eylemler) fonksiyonunu yaz: 0'dan başla, eylemleri sırayla uygula, bölüm bitince dur; geçilen durumları ve toplam ödülü döndür. [SAG, SAG, SAG, SAG] ve [SAG, SOL, SAG, SAG, SAG, SAG] için durumları ve toplam ödülü (round(..., 2)) aynı satırda yazdır.

Başlangıç kodu

model.py
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

# buraya yaz

Örnek çözüm

model.py
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

def calistir(eylemler):
    durum, toplam, yol = 0, 0.0, [0]
    for e in eylemler:
        durum, odul, bitti = adim(durum, e)
        toplam += odul
        yol.append(durum)
        if bitti:
            break
    return yol, toplam

for dizi in [[SAG] * 4, [SAG, SOL, SAG, SAG, SAG, SAG]]:
    yol, toplam = calistir(dizi)
    print(yol, round(toplam, 2))

Beklenen çıktı

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

Soru ve cevaplar

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

1 RL'yi denetimli öğrenmeden ayıran nedir?

  • Sinir ağı kullanamaz
  • Doğru cevap verilmez; yalnızca gecikmeli ödül sinyali vardır Doğru cevap
  • Veri hiç kullanılmaz
  • Yalnızca sınıflandırma yapar

Açıklama: Ajan hangi eylemin iyi olduğunu sonuçlardan çıkarmak zorundadır.

2 Ortam adımı üç şey döndürür.

Soru
durum, odul, ____ = adim(durum, eylem)
Cevap
durum, odul, bitti = adim(durum, eylem)

Açıklama: Yeni durum, ödül ve bölümün bitip bitmediği.

3 Eşleştir.

Kavram Anlamı
ajan Eylem seçer
ortam Durum ve ödül verir
ödül Geri bildirim sinyali
bölüm Başlangıçtan bitişe bir deneme

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