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.
| Alan | Tür | Anlamı |
|---|---|---|
| steps | adım listesi, index 1'den başlar | Her adımın reward değeri, kısıt cost değeri (varsayılan 0) ve isteğe bağlı olarak action ve observation |
| success | doğru, yanlış ya da yok | Ortamın bölüm hakkındaki kendi hükmü |
| truncated | mantıksal değer, varsayılan yanlış | Adım sınırı bölümü bir son duruma varmadan bitirdi |
| horizon | tamsayı, 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_return | Her ödülün adım başına discount ile ağırlıklandırıldığı getiri, bir puan olarak | return_range (zorunlu), discount (varsayılan 1) |
| episode_success | Bölüm success: true kaydettiğinde geçer; hiçbir şey kaydetmediğinde eksiktir | yok |
| episode_cost_within | Adımların maliyetlerinin toplamı en fazla budget olduğunda geçer | budget (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}}| Alan | Anlamı |
|---|---|
| input | Politikanın karar verirken gördüğü |
| expected.action | Kayıt politikasının (logging policy) seçtiği eylem |
| expected.logging_probabilities | Kayıt politikasının o anda her eyleme verdiği olasılık; toplamı 1 |
| expected.reward | Ardı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ür | Tahmin ettiği |
|---|---|
| off_policy_value | Politikanın, kaydedilenlere benzer kararlardaki ortalama ödülü |
| off_policy_improvement | O 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ığı:
| Durum | Sonuç |
|---|---|
| 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çebilir | Karar eksiktir ve en kötü durumuyla sınırlanır |
| Ödül yok | Karar 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
- Eğitim: bir pekiştirmeli öğrenme politikasını değerlendirme: iki kısım, baştan sona çalıştırılmış.
- Paket yazma: tekrarlar ve paketin diğer alanları.
- Yapılandırma başvurusu: bu değerlendiricilerin her alanı.