Przewodniki
Uczenie ze wzmocnieniem
Oloproof ewaluuje politykę uczenia ze wzmocnieniem, uruchamiając ją w epizodach, albo na podstawie logu polityki, którą miałaby zastąpić. Uruchamiaj ją, gdy to możliwe; korzystaj z logu, gdy wynik zdarza się tylko w świecie. Ta strona jest dokumentacją referencyjną obu sposobów, a samouczek przeprowadza przez każdy z nich na przykładzie do uruchomienia.
Oloproof nie hostuje, nie resetuje ani nie symuluje środowiska i nie trenuje polityk. Twój system uruchamia własne środowisko, tak jak każdy ewaluowany system uruchamia własny kod.
Epizody
Zadanie to przypadek. Epizod to jeden jego pomiar: Twój system uruchamia politykę w swoim środowisku i zapisuje epizod przez current_case().rl_episode(...) jako artefakt rl_episode/v1.
| Pole | Typ | Znaczenie |
|---|---|---|
| steps | lista kroków, index od 1 | Dla każdego kroku reward, cost ograniczenia (domyślnie 0) oraz opcjonalnie action i observation |
| success | prawda, fałsz lub brak | Własny werdykt środowiska o epizodzie |
| truncated | wartość logiczna, domyślnie fałsz | Limit kroków zakończył epizod przed stanem terminalnym |
| horizon | liczba całkowita, opcjonalnie | Limit kroków; epizod nie może być dłuższy |
Rekord zawiera każdy krok epizodu. Epizod obcięty to taki, który protokół ewaluacji definiuje jako kończący się na swoim limicie, więc jego zwrot i koszt są kompletne, a nie są dolnymi ograniczeniami.
Zadeklaruj rodzaj, który zapisuje system, aby przebieg mógł odrzucić ewaluator wymagający rekordu, którego system nigdy nie zapisuje:
system:
name: grid-agent
callable: env:run_baseline
records: [rl_episode/v1]Ewaluatory epizodów
| Typ | Mierzy | Pola |
|---|---|---|
| episode_return | Zwrot, w którym każda nagroda jest ważona przez discount na krok, jako ocenę | return_range (wymagane), discount (domyślnie 1) |
| episode_success | Zaliczenie, gdy epizod zapisuje success: true; brakujący, gdy nie zapisuje żadnego | brak |
| episode_cost_within | Zaliczenie, gdy koszty kroków sumują się do co najwyżej budget | budget (wymagane) |
return_range to zakres, w którym leży każdy zwrot, na przykład 30 kroków po -1 w najgorszym razie i nagroda za cel w najlepszym. Przedział dla średniego zwrotu obowiązuje tylko wewnątrz niego, więc zwrot spoza niego zatrzymuje przebieg z kodem wyjścia 2. W SDK klasy to EpisodeReturn, EpisodeSuccess i EpisodeCostWithin w oloproof.evaluators.
Kilka epizodów na zadanie
Ustaw replicates:, aby uruchomić kilka epizodów każdego zadania. current_case().replicate mówi, który jest uruchamiany (0 dla pierwszego), i jest częścią klucza zapisanego wykonania, więc środowisko, które ustawia ziarno epizodu na jego podstawie, odtwarza ten sam epizod dla tego samego powtórzenia, a drugi przebieg ponownie używa tego, co zapisano.
Jednostką pozostaje zadanie. Każde kryterium staje się średnią po zadaniach z własnej średniej każdego zadania po jego epizodach, a przedział liczy zadania: pięć epizodów jednego zadania to nie pięć niezależnych zadań.
Odsetek zaliczeń dla zadań z powtórzeniami odczytuje udział zaliczonych epizodów każdego zadania. Aby zamiast tego zapytać, czy zadanie zalicza się za każdym razem, zadeklaruj metrykę every_replicate:
metrics:
- {id: solved_every_time, type: every_replicate, criterion: episode_success}Zadanie liczy się tylko wtedy, gdy wszystkie jego epizody zaliczyły, więc każde zadanie to jedno zaliczenie lub niezaliczenie i stosuje się dokładny przedział dwumianowy. Przy jednym epizodzie na zadanie równa się odsetkowi zaliczeń. Zadanie z brakującym epizodem jest brakujące, nawet gdy inny jego epizod nie zaliczył.
Porównanie dwóch polityk
oloproof compare paruje każde zadanie z nim samym, a każda strona jest warta swojej średniej po swoich epizodach. Różnica zwrotów jest pokazywana we własnej jednostce zwrotu, a różnica odsetków zaliczeń w punktach procentowych. Oba przebiegi mogą mieć różną liczbę epizodów na zadanie, z wyjątkiem metryki every_replicate: sukces w każdym z pięciu epizodów i w jedynym epizodzie to różne pytania, więc takie porównanie nie jest liczone. Porównania kwantylowe i rankingowe nie są liczone, gdy którykolwiek przebieg ma kilka epizodów na zadanie.
Ewaluacja off-policy
Użyj jej, gdy wynik, na którym Ci zależy, zdarza się tylko w świecie (rozwiązane zgłoszenie, użytkownik, który wrócił), a nie możesz jeszcze wypróbować nowej polityki na prawdziwym ruchu. Dowodem jest log decyzji, które podjęła starsza polityka.
Każdy przypadek to jedna zarejestrowana decyzja:
{"id":"t001","input":{"topic":"technical","length":"short"},"expected":{"action":"small","logging_probabilities":{"small":0.7,"large":0.3},"reward":1}}| Pole | Znaczenie |
|---|---|
| input | Co widziała polityka, gdy podejmowała decyzję |
| expected.action | Akcja, którą podjęła polityka rejestrująca |
| expected.logging_probabilities | Prawdopodobieństwo, jakie polityka rejestrująca nadała każdej akcji w tamtej chwili, sumujące się do 1 |
| expected.reward | Co nastąpiło potem, w zakresie reward_range; brak, jeśli nigdy nie nadeszło |
System to polityka, którą chcesz ocenić. Otrzymuje input i zwraca własne prawdopodobieństwo każdej akcji w probabilities lub w polu, które nazwiesz w probabilities_field. Nigdy nie uruchamia modelu ani nie dotyka świata. input zawiera tylko to, co widziała polityka rejestrująca, gdy podejmowała decyzję: nigdy zarejestrowanej akcji ani nagrody, których testowana polityka nie może widzieć. Polityka, która losuje swój wybór, zwraca prawdopodobieństwa, z których losuje, a nie wylosowaną akcję; każda decyzja jest oceniana od nowa, nawet gdy jej wejście się powtarza. Akcje są nazywane dokładnie tak, jak nazywa je log: akcja zapisana inaczej liczy się jako taka, której polityka rejestrująca nigdy nie podjęła.
| Typ | Szacuje |
|---|---|
| off_policy_value | Średnią nagrodę polityki na decyzjach podobnych do zarejestrowanych |
| off_policy_improvement | Tę średnią minus własną średnią polityki rejestrującej |
Oba przyjmują reward_range i propensity_floor, najmniejsze prawdopodobieństwo, jakie polityka rejestrująca nadała dowolnej akcji, którą może podjąć nowa polityka. Ustaw je na podstawie tego, jak zaprojektowano politykę rejestrującą (współczynnik eksploracji, minimalny udział), nigdy przez próbowanie wartości na logu. Każda zarejestrowana decyzja jest przeważana przez prawdopodobieństwo jej akcji według nowej polityki podzielone przez prawdopodobieństwo według polityki rejestrującej, a próg ogranicza tę wagę: bez niego żaden przedział nie obowiązuje. W SDK klasy to OffPolicyValue i OffPolicyImprovement.
Co silnik robi z decyzją, której nie może odczytać w podanej postaci:
| Sytuacja | Wynik |
|---|---|
| Prawdopodobieństwa, które nie sumują się do 1, zarejestrowana akcja z prawdopodobieństwem 0, nagroda spoza reward_range | Przebieg zatrzymuje się z kodem wyjścia 2: błędne prawdopodobieństwo uczyniłoby przedział błędnym, nie pokazując tego |
| Nowa polityka może podjąć akcję zarejestrowaną z prawdopodobieństwem poniżej progu | Decyzja jest brakująca i ograniczana w najgorszym przypadku |
| Brak nagrody | Decyzja jest brakująca i ograniczana w najgorszym przypadku |
Co zakłada odpowiedź:
- Prawdopodobieństwa zostały zapisane, gdy polityka rejestrująca podejmowała decyzję, i są tymi, których użyła. Oloproof nigdy ich nie szacuje.
- Nagroda każdej decyzji zależy od jej własnego wejścia i akcji, a nie od innych decyzji.
- Polityka rejestrująca utrzymywała te same prawdopodobieństwa przez cały okres objęty logiem.
- Odpowiedź opisuje decyzje podobne do zarejestrowanych, w okresie, który obejmuje log.
Przedział jest szeroki, gdy próg jest mały: decyzji, które informują o rzadko wybieranej akcji, jest niewiele, a każda liczy się wielokrotnie. Dłuższy log i polityka rejestrująca, która więcej eksploruje, go zawężają.
Czego nie zbudowano
- Ewaluacji off-policy sekwencji decyzji, w której każdy wybór zmienia to, co następuje dalej.
- Logu, którego polityka zmieniała swoje prawdopodobieństwa, ucząc się w trakcie objętego nim okresu.
- Prawdopodobieństw szacowanych po fakcie.
- Hostowania ani resetowania środowisk i symulatorów.
Co dalej
- Samouczek: ewaluacja polityki uczenia ze wzmocnieniem: obie części, uruchomione od początku do końca.
- Pisanie zestawu: powtórzenia i inne pola zestawu.
- Dokumentacja konfiguracji: każde pole tych ewaluatorów.