Makine Öğrenmesi
Agent
Agent, ortamla etkileşimerek eylem seçer.
Ajan
Ajan, gözlemi alıp eylem seçen ve deneyimden öğrenen parçadır. En basit ajan rastgele davranır; bu, her yöntemin geçmesi gereken taban çizgisidir:
class RastgeleAjan:
def __init__(self, rng):
self.rng = rng
def sec(self, durum):
return int(self.rng.integers(2))
Ajanın performansı tek bölümle değil, çok sayıda bölümün ortalama toplam ödülüyle ölçülür; çünkü ortam ya da ajan rastgele olabilir.
Bölüm sınırı
Rastgele bir ajan hedefe hiç ulaşamayabilir; bu yüzden bölümlere bir adım sınırı konur (Gymnasium'da truncated). Sınıra ulaşan bölüm "başarısız" sayılır:
def bolum(ajan, sinir=50):
durum, toplam = 0, 0.0
for t in range(sinir):
durum, odul, bitti = adim(durum, ajan.sec(durum))
toplam += odul
if bitti:
return toplam, t + 1
return toplam, sinir
Ortalama bölüm uzunluğu da yararlı bir ölçüdür: iyi bir ajan koridoru 4 adımda geçer.
Uygulama Rastgele ve sabit ajan
Verilen bolum fonksiyonuyla RastgeleAjan ve hep sağa giden SagAjan'ı 1000 bölüm çalıştır. Her biri için ortalama toplam ödülü ve ortalama bölüm uzunluğunu round(..., 2) ile aynı satırda yazdır.
Örnek çözümü göster
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
def bolum(ajan, sinir=50):
durum, toplam = 0, 0.0
for t in range(sinir):
durum, odul, bitti = adim(durum, ajan.sec(durum))
toplam += odul
if bitti:
return toplam, t + 1
return toplam, sinir
rng = np.random.default_rng(0)
class RastgeleAjan:
def sec(self, durum):
return int(rng.integers(2))
class SagAjan:
def sec(self, durum):
return SAG
for ajan in [RastgeleAjan(), SagAjan()]:
s = np.array([bolum(ajan) for _ in range(1000)])
print(round(s[:, 0].mean(), 2), round(s[:, 1].mean(), 2))
Kendini test et
-
Bir ajanın performansı neden çok sayıda bölümün ortalamasıyla ölçülür?
- Ajan ya da ortam rastgele olabildiği için tek bölüm yanıltıcıdır
- Ödül yalnızca sonda verilir
- Ortalama her zaman sıfırdır
- Bölümler birbirine bağlıdır
Cevabı göster
Ajan ya da ortam rastgele olabildiği için tek bölüm yanıltıcıdır — Varyansı azaltmak için çok bölüm ortalanır.
-
Rastgele bir eylem seç.
return int(self.rng.____(2))
Cevabı göster
return int(self.rng.integers(2))
-
Eşleştir.
- rastgele ajan
- Taban çizgisi
- adım sınırı
- Kesilmiş bölüm
- ortalama ödül
- Performans ölçüsü
- 4 adım
- En iyi koridor süresi
Sıradaki ders: Policy