İçeriğe geç

Kılavuzlar

Pekiştirmeli öğrenme

Oloproof bir pekiştirmeli öğrenme politikasını bölümler (episode) halinde çalıştırarak ya da yerini alacağı politikanın kaydından (log) değerlendirir. Yapabildiğinizde onu çalıştırın; sonuç yalnızca gerçek dünyada ortaya çıkıyorsa kaydı kullanın. Bu sayfa ikisinin de başvurusudur ve eğitim her birini çalıştırılabilir bir örnek üzerinde adım adım gösterir.

Oloproof bir ortamı barındırmaz, sıfırlamaz ya da benzetmez ve politika eğitmez. Değerlendirdiği her sistemin kendi kodunu çalıştırması gibi, sisteminiz de kendi ortamını çalıştırır.

Bölümler

Bir görev bir vakadır. Bir bölüm, onun tek bir ölçümüdür: sisteminiz politikayı kendi ortamında çalıştırır ve bölümü current_case().rl_episode(...) ile bir rl_episode/v1 yapıtı olarak kaydeder.

AlanTürAnlamı
stepsadım listesi, index 1'den başlarHer adımın reward değeri, kısıt cost değeri (varsayılan 0) ve isteğe bağlı olarak action ve observation
successdoğru, yanlış ya da yokOrtamın bölüm hakkındaki kendi hükmü
truncatedmantıksal değer, varsayılan yanlışAdım sınırı bölümü bir son duruma varmadan bitirdi
horizontamsayı, isteğe bağlıAdım sınırı; bölüm bundan uzun olamaz

Kayıt, bölümün her adımını tutar. Kesilmiş bir bölüm, değerlendirme protokolünün sınırında biten olarak tanımladığı bir bölümdür; dolayısıyla getirisi ve maliyeti alt sınır değil, eksiksizdir.

Sistemin kaydettiği türü bildirin; böylece bir çalıştırma, sistemin hiç yazmadığı bir kayda ihtiyaç duyan bir değerlendiriciyi reddedebilir:

system:
  name: grid-agent
  callable: env:run_baseline
  records: [rl_episode/v1]

Bölüm değerlendiricileri

TürÖlçtüğüAlanlar
episode_returnHer ödülün adım başına discount ile ağırlıklandırıldığı getiri, bir puan olarakreturn_range (zorunlu), discount (varsayılan 1)
episode_successBölüm success: true kaydettiğinde geçer; hiçbir şey kaydetmediğinde eksiktiryok
episode_cost_withinAdımların maliyetlerinin toplamı en fazla budget olduğunda geçerbudget (zorunlu)

return_range, her getirinin içinde bulunduğu aralıktır; örneğin en kötü durumda her biri -1 olan 30 adım, en iyi durumda hedef ödülü. Ortalama bir getiri üzerindeki aralık yalnızca onun içinde geçerlidir; bu yüzden onun dışındaki bir getiri çalıştırmayı 2 çıkış koduyla durdurur. SDK'da sınıflar oloproof.evaluators içindeki EpisodeReturn, EpisodeSuccess ve EpisodeCostWithin sınıflarıdır.

Görev başına birkaç bölüm

Her görevin birkaç bölümünü çalıştırmak için replicates: ayarlayın. current_case().replicate hangisinin çalıştığını söyler (ilki için 0) ve saklanan yürütmenin anahtarının bir parçasıdır; böylece bölümün tohumunu ondan türeten bir ortam, aynı tekrar için aynı bölümü yeniden oynatır ve ikinci bir çalıştırma sakladığını yeniden kullanır.

Birim görev olarak kalır. Her kriter, her görevin kendi bölümleri üzerindeki ortalamasının görevler üzerindeki ortalaması olur ve aralık görevleri sayar: bir görevin beş bölümü, beş bağımsız görev değildir.

Tekrarlanan görevler üzerindeki bir geçme oranı, her görevin geçen bölümlerinin payını okur. Bunun yerine bir görevin her seferinde geçip geçmediğini sormak için bir every_replicate metriği bildirin:

metrics:
  - {id: solved_every_time, type: every_replicate, criterion: episode_success}

Bir görev yalnızca tüm bölümleri geçtiğinde sayılır; böylece her görev tek bir geçti ya da kaldı olur ve kesin binom aralığı uygulanır. Görev başına tek bölümle geçme oranına eşittir. Eksik bir bölümü olan görev, bölümlerinden bir başkası kalmış olsa bile eksiktir.

İki politikayı karşılaştırmak

oloproof compare her görevi kendisiyle eşleştirir; her taraf kendi bölümleri üzerindeki ortalaması değerindedir. Bir getiri farkı getirinin kendi biriminde, bir geçme oranı farkı yüzde puan olarak gösterilir. İki çalıştırma görev başına farklı sayıda bölüm çalıştırabilir; every_replicate metriği bunun istisnasıdır: beş bölümün her birinde başarılı olmak ile tek bölümde başarılı olmak farklı sorulardır, bu yüzden o karşılaştırma hesaplanmaz. Çalıştırmalardan herhangi birinde görev başına birkaç bölüm olduğunda kantil ve sıralama karşılaştırmaları hesaplanmaz.

Politika dışı (off-policy) değerlendirme

Önem verdiğiniz sonuç yalnızca gerçek dünyada ortaya çıktığında (çözülen bir destek talebi, geri dönen bir kullanıcı) ve yeni politikayı henüz gerçek trafikte deneyemediğinizde kullanın. Kanıt, daha eski bir politikanın verdiği kararların bir kaydıdır.

Her vaka kaydedilmiş tek bir karardır:

{"id":"t001","input":{"topic":"technical","length":"short"},"expected":{"action":"small","logging_probabilities":{"small":0.7,"large":0.3},"reward":1}}
AlanAnlamı
inputPolitikanın karar verirken gördüğü
expected.actionKayıt politikasının (logging policy) seçtiği eylem
expected.logging_probabilitiesKayıt politikasının o anda her eyleme verdiği olasılık; toplamı 1
expected.rewardArdından gelen, reward_range içinde; hiç gelmediyse yok

Sistem, değerlendirmek istediğiniz politikadır. input alır ve her eylem için kendi olasılığını probabilities altında ya da probabilities_field ile adlandırdığınız alanda döndürür. Asla bir model çalıştırmaz ya da gerçek dünyaya dokunmaz. input yalnızca kayıt politikasının karar verirken gördüğünü içerir: test edilen politikanın görmemesi gereken kaydedilmiş eylemi ya da ödülü asla içermez. Seçimini örnekleyen bir politika, çektiği eylemi değil, örneklediği olasılıkları döndürür; her karar, girdisi tekrarlansa bile yeniden değerlendirilir. Eylemler tam olarak kaydın adlandırdığı gibi adlandırılır: farklı yazılmış bir eylem, kayıt politikasının hiç seçmediği bir eylem sayılır.

TürTahmin ettiği
off_policy_valuePolitikanın, kaydedilenlere benzer kararlardaki ortalama ödülü
off_policy_improvementO ortalamadan kayıt politikasının kendi ortalamasının çıkarılmışı

İkisi de reward_range ve propensity_floor alır; ikincisi, kayıt politikasının yeni politikanın seçebileceği herhangi bir eyleme verdiği en küçük olasılıktır. Onu kayıt politikasının nasıl tasarlandığına göre (bir keşif oranı, asgari bir pay) belirleyin, asla kayıt üzerinde değerler deneyerek değil. Kaydedilen her karar, eyleminin yeni politikadaki olasılığının kayıt politikasındakine oranıyla yeniden ağırlıklandırılır ve taban bu ağırlığı sınırlar: o olmadan hiçbir aralık geçerli olmaz. SDK'da sınıflar OffPolicyValue ve OffPolicyImprovement sınıflarıdır.

Motorun, verildiği haliyle okuyamadığı bir kararla ne yaptığı:

DurumSonuç
Toplamı 1 olmayan olasılıklar, 0 olasılıkla kaydedilmiş bir eylem, reward_range dışında bir ödülÇalıştırma 2 çıkış koduyla durur: yanlış bir olasılık aralığı, bunu göstermeden yanlış yapar
Yeni politika, tabanın altında bir olasılıkla kaydedilmiş bir eylemi seçebilirKarar eksiktir ve en kötü durumuyla sınırlanır
Ödül yokKarar eksiktir ve en kötü durumuyla sınırlanır

Yanıtın varsaydıkları:

  • Olasılıklar kayıt politikası karar verirken kaydedilmiştir ve onun kullandıklarıdır. Oloproof onları asla tahmin etmez.
  • Her kararın ödülü diğer kararlara değil, kendi girdisine ve eylemine bağlıdır.
  • Kayıt politikası, kaydın kapsadığı süre boyunca aynı olasılıkları korumuştur.
  • Yanıt, kaydın kapsadığı dönemde, kaydedilenlere benzer kararları anlatır.

Taban küçük olduğunda aralık geniştir: nadiren seçilen bir eylem hakkında bilgi veren kararlar azdır ve her biri birçok kez sayılır. Daha uzun bir kayıt ve daha çok keşif yapan bir kayıt politikası onu daraltır.

Neler yapılmadı

  • Her seçimin sonra geleni değiştirdiği bir karar dizisinin politika dışı değerlendirmesi.
  • Politikası, kayıt süresi boyunca öğrenirken olasılıklarını değiştiren bir kayıt.
  • Sonradan tahmin edilmiş olasılıklar.
  • Ortamları ve benzeticileri barındırmak ya da sıfırlamak.

Sonra nereye