# RL Reward Hacking

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](https://en.wikipedia.org/wiki/Reward_hacking).

<div align="center"><figure><img src="https://i.pinimg.com/originals/55/e0/1b/55e01b94a9c5546b61b59ae300811c83.gif" alt="" width="188"><figcaption></figcaption></figure></div>

**Kann man Belohnungsmanipulation entgegenwirken? Ja!** In unserem [kostenlosen gpt-oss RL-Notebook](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/gpt-oss-\(20B\)-GRPO.ipynb) 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.

## :trophy: Ü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__, {})`\\


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://unsloth.ai/docs/de/loslegen/reinforcement-learning-rl-guide/advanced-rl-documentation/rl-reward-hacking.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
