RL Reward Hacking
Lerne, was Reward Hacking im Reinforcement Learning ist und wie man dem entgegenwirkt.
Das ultimative Ziel von RL ist es, eine Belohnung (z. B. Geschwindigkeit, Umsatz, eine Metrik) zu maximieren. Aber RL kann betrügen. Wenn der RL-Algorithmus einen Trick lernt oder etwas ausnutzt, um die Belohnung zu erhöhen, ohne die Aufgabe tatsächlich zu erfüllen, nennt man das "Belohnungsmanipulation".
Es ist der Grund, warum Modelle lernen, Unit-Tests zu verändern, um Programmieraufgaben zu bestehen, und dies sind kritische Blocker für den Einsatz in der realen Welt. Einige weitere gute Beispiele stammen aus Wikipedia.

Kann man Belohnungsmanipulation entgegenwirken? Ja! In unserem kostenlosen gpt-oss RL-Notebook untersuchen wir, wie man Belohnungsmanipulation in einem Code-Generierungs-Setting entgegenwirken kann, und zeigen greifbare Lösungen für häufige Fehlermodi. Wir sahen, wie das Modell die Zeitmessfunktion bearbeitete, Aufgaben an andere Bibliotheken auslagerte, Ergebnisse zwischenspeicherte und offen betrog. Nach Gegenmaßnahmen erzeugt unser Modell wirklich optimierte Matrixmultiplikations-Kernel, keine cleveren Tricks.
🏆 Überblick über Belohnungsmanipulation
Einige häufige Beispiele für Belohnungsmanipulation während RL sind:
Faulheit
RL lernt, Numpy, Torch und andere Bibliotheken zu verwenden, die optimierte CUDA-Kernel aufrufen. Wir können den RL-Algorithmus daran hindern, optimierten Code aufzurufen, indem wir prüfen, ob der generierte Code andere nicht standardmäßige Python-Bibliotheken importiert.
Zwischenspeicherung & Betrug
RL lernt, das Ergebnis der Ausgabe zwischenzuspeichern, und RL lernt, die tatsächliche Ausgabe zu finden, indem es Python-Globale überprüft.
Wir können den RL-Algorithmus daran hindern, zwischengespeicherte Daten zu verwenden, indem wir den Cache mit einer großen falschen Matrix löschen. Wir müssen auch sorgfältig mit mehreren Schleifen und Durchläufen benchmarken.
Betrug
RL lernt, die Zeitmessfunktion zu bearbeiten, damit sie 0 Zeit als bestanden ausgibt. Wir können den RL-Algorithmus daran hindern, globale oder zwischengespeicherte Variablen zu verwenden, indem wir seine lokalen Variablen und globalen Variablen. Wir werden außerdem exec verwenden, um die Funktion zu erstellen, daher müssen wir die Ausgabe in einem leeren Dict speichern. Wir untersagen außerdem den Zugriff auf globale Variablen über types.FunctionType(f.__code__, {})\
Zuletzt aktualisiert
War das hilfreich?

