# RL報酬ハッキング

強化学習（RL）の究極の目的は、ある報酬（例えば速度、収益、ある指標）を最大化することです。しかしRLは **不正を行うことがあります。** RLアルゴリズムが実際にタスクを遂行することなく報酬を増やすためにトリックを覚えたり何かを悪用したりする場合、これは「**報酬ハッキング（Reward Hacking）**".

の原因です。モデルがコーディングチャレンジを通過するためにユニットテストを改変することを学ぶのはこのためであり、これらは実世界での展開における重大な障害となります。他の良い例は [ウィキペディア](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>

**報酬ハッキングに対抗できますか？はい、できます！** 私たちの [無料の gpt-oss RL ノートブック](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/gpt-oss-\(20B\)-GRPO.ipynb) では、コード生成の設定で報酬ハッキングに対抗する方法を探り、一般的なエラーモードに対する具体的な解決策を示しています。モデルがタイミング関数を編集したり、他のライブラリに外注したり、結果をキャッシュしたり、完全に不正を行ったりするのを観察しました。対策を講じた後、我々のモデルは巧妙な不正ではなく真に最適化された行列乗算カーネルを生成するようになりました。

## :trophy: 報酬ハッキング概要

強化学習中の報酬ハッキングの一般的な例には以下があります：

#### 怠惰さ

RLはNumpy、Torch、その他のライブラリを使うことを学び、最適化されたCUDAカーネルを呼び出します。生成されたコードが標準外のPythonライブラリをインポートしているかを検査することで、RLアルゴリズムが最適化コードを呼び出すのを防ぐことができます。

#### キャッシュと不正

RLは出力結果をキャッシュすることを学び、Pythonのグローバル変数を調べて実際の出力を見つけることを学びます。

大きな偽の行列でキャッシュを消去することにより、RLアルゴリズムがキャッシュデータを使用するのを防げます。また、複数のループや反復で慎重にベンチマークする必要があります。

#### 不正行為

RLはタイミング関数を編集して経過時間を0として出力することを学びます。グローバルやキャッシュされた変数を使用するのを防ぐために、RLの `ローカル（locals）` および `グローバル（globals）`を制限します。また、 `exec` で関数を作成するので、出力を空の辞書に保存する必要があります。さらに、 `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/jp/meru/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.
