Zum Inhalt springen

Anleitungen

Reinforcement Learning

Oloproof evaluiert eine Reinforcement-Learning-Policy, indem es sie in Episoden ausführt, oder anhand des Protokolls der Policy, die sie ersetzen würde. Führen Sie sie aus, wenn Sie können; nutzen Sie das Protokoll, wenn das Ergebnis erst in der realen Welt eintritt. Diese Seite ist die Referenz für beides, und das Tutorial führt beides an einem ausführbaren Beispiel vor.

Oloproof hostet, setzt zurück oder simuliert keine Umgebung, und es trainiert keine Policies. Ihr System betreibt seine eigene Umgebung, so wie jedes System, das Oloproof evaluiert, seinen eigenen Code ausführt.

Episoden

Eine Aufgabe ist ein Fall. Eine Episode ist eine Messung davon: Ihr System führt die Policy in seiner Umgebung aus und zeichnet die Episode mit current_case().rl_episode(...) als rl_episode/v1-Artefakt auf.

FeldTypBedeutung
stepsListe von Schritten, index ab 1Die Belohnung (reward) jedes Schritts, seine Constraint-Kosten (cost, Standard 0) und optional action und observation
successtrue, false oder fehlendDas eigene Urteil der Umgebung über die Episode
truncatedBoolean, Standard falseDas Schrittlimit hat die Episode vor einem Endzustand beendet
horizonGanzzahl, optionalDas Schrittlimit; die Episode darf nicht länger sein

Der Datensatz enthält jeden Schritt der Episode. Eine abgeschnittene Episode ist eine, die das Evaluationsprotokoll an ihrem Limit enden lässt, daher sind ihr Return und ihre Kosten vollständig und keine unteren Schranken.

Deklarieren Sie die Art, die das System aufzeichnet, damit ein Lauf einen Evaluator abweisen kann, der einen Datensatz braucht, den das System nie schreibt:

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

Episoden-Evaluatoren

TypMisstFelder
episode_returnDen Return, jede Belohnung pro Schritt mit discount gewichtet, als Scorereturn_range (erforderlich), discount (Standard 1)
episode_successBesteht, wenn die Episode success: true aufzeichnet; fehlt, wenn sie nichts dazu aufzeichnetkeine
episode_cost_withinBesteht, wenn sich die Kosten der Schritte auf höchstens budget summierenbudget (erforderlich)

return_range ist der Bereich, in dem jeder Return liegt, etwa im schlechtesten Fall 30 Schritte zu je -1 und im besten die Belohnung für das Ziel. Das Intervall um einen mittleren Return gilt nur innerhalb dieses Bereichs, daher stoppt ein Return außerhalb davon den Lauf mit Exit 2. Im SDK sind die Klassen EpisodeReturn, EpisodeSuccess und EpisodeCostWithin in oloproof.evaluators.

Mehrere Episoden pro Aufgabe

Setzen Sie replicates:, um mehrere Episoden jeder Aufgabe auszuführen. current_case().replicate sagt, welche gerade läuft (0 für die erste), und es ist Teil des Schlüssels der gespeicherten Ausführung: Eine Umgebung, die den Seed der Episode daraus ableitet, spielt für dasselbe Replikat dieselbe Episode erneut ab, und ein zweiter Lauf verwendet wieder, was er gespeichert hat.

Die Aufgabe bleibt die Einheit. Jedes Kriterium wird zum Mittelwert über die Aufgaben des Mittelwerts jeder Aufgabe über ihre Episoden, und das Intervall zählt Aufgaben: Fünf Episoden einer Aufgabe sind nicht fünf unabhängige Aufgaben.

Eine Bestehensrate über replizierte Aufgaben liest den Anteil bestandener Episoden jeder Aufgabe. Um stattdessen zu fragen, ob eine Aufgabe jedes Mal besteht, deklarieren Sie eine every_replicate-Metrik:

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

Eine Aufgabe zählt nur, wenn alle ihre Episoden bestanden haben, daher ist jede Aufgabe ein einziges Bestanden oder Nicht bestanden, und das exakte Binomialintervall gilt. Mit einer Episode pro Aufgabe ist sie gleich der Bestehensrate. Eine Aufgabe mit einer fehlenden Episode gilt als fehlend, selbst wenn eine andere ihrer Episoden nicht bestanden hat.

Zwei Policies vergleichen

oloproof compare paart jede Aufgabe mit sich selbst, wobei jede Seite so viel zählt wie ihr Mittelwert über ihre Episoden. Die Differenz eines Returns wird in der eigenen Einheit des Returns angezeigt, die einer Bestehensrate in Prozentpunkten. Die beiden Läufe dürfen unterschiedlich viele Episoden pro Aufgabe ausführen, außer bei einer every_replicate-Metrik: In jeder von fünf Episoden erfolgreich zu sein und in der einzigen sind verschiedene Fragen, daher wird dieser Vergleich nicht berechnet. Quantil- und Ranking-Vergleiche werden nicht berechnet, wenn einer der beiden Läufe mehrere Episoden pro Aufgabe hat.

Off-Policy-Evaluierung

Verwenden Sie sie, wenn das Ergebnis, auf das es Ihnen ankommt, erst in der realen Welt eintritt (ein gelöstes Ticket, ein Nutzer, der zurückkam) und Sie die neue Policy noch nicht an echtem Traffic ausprobieren können. Die Evidenz ist ein Protokoll der Entscheidungen, die eine ältere Policy getroffen hat.

Jeder Fall ist eine protokollierte Entscheidung:

{"id":"t001","input":{"topic":"technical","length":"short"},"expected":{"action":"small","logging_probabilities":{"small":0.7,"large":0.3},"reward":1}}
FeldBedeutung
inputWas die Policy sah, als sie entschied
expected.actionDie Aktion, die die protokollierende Policy (logging policy) gewählt hat
expected.logging_probabilitiesDie Wahrscheinlichkeit, die die protokollierende Policy in diesem Moment jeder Aktion gab, in der Summe 1
expected.rewardWas darauf folgte, innerhalb von reward_range; fehlt, wenn es nie eintraf

Das System ist die Policy, die Sie evaluieren wollen. Es erhält input und gibt seine eigene Wahrscheinlichkeit für jede Aktion unter probabilities zurück oder unter dem Feld, das Sie in probabilities_field nennen. Es führt nie ein Modell aus und berührt nie die reale Welt. input enthält nur, was die protokollierende Policy sah, als sie entschied: nie die protokollierte Aktion oder die Belohnung, die die getestete Policy nicht sehen darf. Eine Policy, die ihre Wahl zufällig zieht, gibt die Wahrscheinlichkeiten zurück, aus denen sie zieht, nicht die gezogene Aktion; jede Entscheidung wird neu evaluiert, auch wenn sich ihre Eingabe wiederholt. Aktionen heißen genau so, wie das Protokoll sie nennt: Eine anders geschriebene Aktion zählt als eine, die die protokollierende Policy nie gewählt hat.

TypSchätzt
off_policy_valueDie mittlere Belohnung der Policy bei Entscheidungen wie den protokollierten
off_policy_improvementDiesen Mittelwert abzüglich des Mittelwerts der protokollierenden Policy selbst

Beide nehmen reward_range und propensity_floor, die kleinste Wahrscheinlichkeit, die die protokollierende Policy irgendeiner Aktion gab, die die neue Policy wählen kann. Legen Sie sie anhand dessen fest, wie die protokollierende Policy entworfen wurde (eine Explorationsrate, ein Mindestanteil), nie durch Ausprobieren von Werten am Protokoll. Jede protokollierte Entscheidung wird mit der Wahrscheinlichkeit ihrer Aktion unter der neuen Policy im Verhältnis zu der unter der protokollierenden Policy neu gewichtet, und die Untergrenze beschränkt dieses Gewicht: Ohne sie gilt kein Intervall. Im SDK sind die Klassen OffPolicyValue und OffPolicyImprovement.

Was die Engine mit einer Entscheidung macht, die sie nicht so lesen kann, wie sie vorliegt:

SituationErgebnis
Wahrscheinlichkeiten, die sich nicht zu 1 summieren, eine protokollierte Aktion mit Wahrscheinlichkeit 0, eine Belohnung außerhalb von reward_rangeDer Lauf stoppt mit Exit 2: Eine falsche Wahrscheinlichkeit würde das Intervall falsch machen, ohne es zu zeigen
Die neue Policy kann eine Aktion wählen, die mit einer Wahrscheinlichkeit unter der Untergrenze protokolliert wurdeDie Entscheidung gilt als fehlend und wird mit ihrem ungünstigsten Wert begrenzt
Die Belohnung fehltDie Entscheidung gilt als fehlend und wird mit ihrem ungünstigsten Wert begrenzt

Was die Antwort voraussetzt:

  • Die Wahrscheinlichkeiten wurden aufgezeichnet, als die protokollierende Policy entschied, und sie sind die, die sie verwendet hat. Oloproof schätzt sie nie.
  • Die Belohnung jeder Entscheidung hängt von ihrer eigenen Eingabe und Aktion ab, nicht von anderen Entscheidungen.
  • Die protokollierende Policy hat über das Zeitfenster des Protokolls dieselben Wahrscheinlichkeiten beibehalten.
  • Die Antwort beschreibt Entscheidungen wie die protokollierten, über den Zeitraum, den das Protokoll abdeckt.

Das Intervall ist breit, wenn die Untergrenze klein ist: Die Entscheidungen, die über eine selten gewählte Aktion Auskunft geben, sind wenige, und jede zählt vielfach. Ein längeres Protokoll und eine protokollierende Policy, die mehr exploriert, machen es schmaler.

Was nicht gebaut ist

  • Off-Policy-Evaluierung einer Folge von Entscheidungen, bei der jede Wahl verändert, was als Nächstes kommt.
  • Ein Protokoll, dessen Policy ihre Wahrscheinlichkeiten änderte, während sie im Zeitfenster lernte.
  • Nachträglich geschätzte Wahrscheinlichkeiten.
  • Das Hosten oder Zurücksetzen von Umgebungen und Simulatoren.

Wie es weitergeht