論文(arXiv)
デモ
モデル(Hugging Face)
ベンチマークデータセット(Hugging Face)

AIテキスト検出器は、重要性の高い環境でますます使用されるようになっているが、意味を保持した敵対的リライティングに対する堅牢性は依然として不確かである。我々は、適応的パラフレーズ攻撃によってAIテキスト検出器をストレステストするための強化学習フレームワークであるStealthRLを紹介する。StealthRLは、意味内容を保持しながら検出器アンサンブルに対してパラフレーズポリシーを訓練し、その後、未観測の検出器ファミリーへの転移を評価する。フィルタリング済みの完全なMAGEテストプール(人間15,310件 / AI 14,656件)において、StealthRLは平均AUROCを0.79から0.43に低下させ、RoBERTa、Fast-DetectGPT、Binoculars、MAGE全体で平均TPR@1%FPR 0.024を達成する。この攻撃は訓練に使用されなかった2つの検出器にも転移し、単一検出器の失敗ではなく共通の脆弱性を明らかにする。さらに、検出器のスコア分布を分析し、E5、BERTScore、LLMベースのLikert評価を用いて品質を評価する。我々の結果は、現在のAIテキスト検出器が現実的なパラフレーズ圧力の下で依然として脆いことを示し、敵対的堅牢性評価のための再現可能なプロトコルを提供する。
このリポジトリは、StealthRLの背後にある研究・エンジニアリングコードベースです。以下が含まれます:
このリポジトリは、以下のことを行いたい研究者にとって有用な出発点となることを意図しています:
stealthrl/: 訓練コード、検出器ラッパー、報酬、データユーティリティ、およびオリジナルのStealthBenchパッケージeval/: 論文結果に使用された研究グレードの評価ハーネスscripts/: 訓練、評価、オーケストレーション、プロット、ユーティリティのための実行可能なエントリポイントconfigs/: 訓練、評価、アブレーション用のYAML設定figures/: パイプラインダイアグラムと静的アセットtests/: 統合テストと健全性チェックanalysis/: アドホックな分析ヘルパーと単発ユーティリティpython -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
プロジェクトのどの部分を実行するかによって、追加で必要になる場合があります:
pip install tinker
pip install openai
pip install vllm
注意:
tinker は、M2 で使用されるクラウドバックエンドのStealthRLチェックポイント推論パスに必要です。openai は、GPT/Likert品質評価ステップでのみ必要です。vllm は、論文のベースラインにおける高速なローカル生成に推奨されます。リポジトリで使用される一般的な環境変数:
export HF_HOME=$HOME/.cache/huggingface
export TRANSFORMERS_CACHE=$HF_HOME
export OPENAI_API_KEY=...
export TINKER_API_KEY=...
段階的な論文評価パイプラインでは、envファイルとチェックポイント記述JSONを使用しました。公開スクリプトでは、両方のパスを明示的に上書きできます:
python scripts/run_full_mage_research_eval.py \
--env-file ~/.config/stealthrl/eval.env \
--checkpoint-json ~/.config/stealthrl/m2_checkpoint.json
python scripts/run_eval.py --quick
python scripts/run_stealthbench.py --config configs/stealthbench.yaml
これにより、設定されたテキストファイルを読み込み、設定された検出器を実行し、CSV出力を保存して、比較プロットを生成します。以前のTODOのみのスタブは削除されました。
python scripts/run_full_mage_research_eval.py \
--env-file ~/.config/stealthrl/eval.env \
--checkpoint-json ~/.config/stealthrl/m2_checkpoint.json \
--run-root outputs/eval_runs/full_mage_public \
--gpus 0 1 2 3
リポジトリには、demo/ 配下にFastAPIバックエンドのデモWebサイトが含まれています。洗練された静的UIを提供し、APIキーサポート付きの POST /api/paraphrase を公開しています。さらに、未認証ユーザーには1日20回の公開クォータを提供します。
pip install -r demo/requirements.txt
uvicorn demo.stealthrl_demo.app:app --reload --port 8080
デフォルトでは、デモはUIテスト用のゼロコストの mock モードで実行されます。実際のStealthRLサンプラーを使用するには、STEALTHRL_DEMO_INFERENCE_BACKEND=tinker、STEALTHRL_DEMO_CHECKPOINT_JSON、TINKER_API_KEY を設定してください。APIキー、クォータ、Docker、AWSデプロイに関する注意事項は demo/README.md を参照してください。
論文は、フィルタリング済みの完全なMAGE評価プールでの結果を報告しています:
研究グレードの評価パイプラインは、eval/ モジュールと scripts/ 配下の段階的スクリプトで実装されています。
認証情報とチェックポイントメタデータを準備します。
OPENAI_API_KEY と TINKER_API_KEY を含むenvファイルと、StealthRL Tinkerサンプラーパスを記述したチェックポイントJSONを作成します。
プリフライトを実行します。
python scripts/preflight_research_eval.py \
--env-file ~/.config/stealthrl/eval.env \
--checkpoint-json ~/.config/stealthrl/m2_checkpoint.json
python scripts/run_full_mage_research_eval.py \
--env-file ~/.config/stealthrl/eval.env \
--checkpoint-json ~/.config/stealthrl/m2_checkpoint.json \
--run-root outputs/eval_runs/full_mage_repro \
--gpus 0 1 2 3
選択した実行ディレクトリ配下で、生成された手法出力、検出器スコア、メトリクス、プロットを確認します。
キャッシュされた出力に対してGPTベースの品質判定のみを再実行する必要がある場合:
python scripts/run_gpt_quality_only.py \
--run-root outputs/eval_runs/full_mage_repro \
--env-file ~/.config/stealthrl/eval.env
python scripts/compute_bertscore_for_run.py \
--run-dir outputs/eval_runs/full_mage_repro/assembled \
--device cuda:0 \
--batch-size 16 \
--chunk-size 512
BERTScoreスクリプトは、各チャンクの処理後に quality.parquet と quality.csv をその場で更新するため、実行が中断された場合でも、完了済みの行を再計算せずに再開できます。小さなスモークテストには --limit-per-method を、既存のBERTScore列を意図的に再計算する場合にのみ --force を使用してください。
段階的実行は以下を生成します:
method_runs/: 手法ごとの生成出力detector_scores/: 検出器ごとのparquetスコアファイルassembled/metrics.json: 集計された検出器メトリクスassembled/thresholds.json: 校正された検出器しきい値assembled/quality.parquet: 自動品質メトリクスassembled/quality_gpt.parquet: GPT/Likert品質評価assembled/figures/: 論文用のプロット主要な論文チェックポイントは、configs/tinker_mage_10k.yaml を標準的な訓練設定として使用します:Qwen3-4B-Instruct(LoRAランク32)、GRPOグループサイズ8、10,000件のMAGE訓練サンプル、3エポック、学習率 2.8e-4、KL係数 0.05、温度 1.0、top-p 0.9、および 0.6 RoBERTa / 0.4 Fast-DetectGPTで重み付けされた2検出器報酬アンサンブル。configs/ 内の他の設定は、レガシーな例、スモークテスト設定、またはアブレーションテンプレートとして保持されており、明示的に文書化されない限り、論文の権威ある設定として扱うべきではありません。
StealthRLは、検出器ではなくパラフレーズポリシーを訓練します。核となるアイデアは、AI生成テキストを意味的に忠実に保ちながら検出器の信頼度を低下させるようにリライトするモデルを最適化することです。
Qwen/Qwen3-4B-Instruct-2507報酬は多目的であり、以下のバランスを取ります:
実装は主に以下にあります:
stealthrl/tinker/train.pystealthrl/rewards/configs/論文のStealthRL攻撃は、テスト時には単発です:
検出器へのアクセスは、オフラインRLトレーニング中と外部評価に使用され、M2 の適応的クエリ時探索には使用されません。
論文の評価は、古い stealthrl/evaluation/ ハーネスではなく、新しい eval/ スタックで実装されています。
M0: 攻撃なしM1: 単純なパラフレーズベースラインM2: StealthRLM3: 検出器誘導型敵対的パラフレーズベースラインM4: AuthorMistベースラインM5: 文字レベルの難読化ベースライン関連コード:
eval/methods/scripts/generate_method_outputs.py主要な論文の検出器パネルは以下を使用します:
roberta: openai-community/roberta-large-openai-detectorfast_detectgptbinocularsmage: yaful/MAGEリポジトリには、レガシー/互換性実験用の ghostbuster サポートも保持されていますが、Ghostbusterは最終的な4検出器の論文パネルの一部ではありません。
関連コード:
eval/detectors.pyscripts/score_detector_outputs.pyeval/runner.py公開評価コードは以下を計算します:
関連コード:
eval/metrics.pyeval/plots.pyeval/quality_judge.pyscripts/finalize_eval_run.py現在の評価コードは、高スループットのベースライン評価のためのvLLMバックエンドのローカル生成をサポートしています。これは以下に実装されています:
eval/methods/vllm_backend.pyStealthRL M2 手法は、チェックポイント記述JSONを介したTinkerバックエンドのサンプリングをサポートしています。このパスは以下に実装されています:
eval/methods/stealthrl.pyフルMAGEパイプラインは意図的に段階化されています:
これにより、長時間のマルチGPU実行がより堅牢になり、デバッグが容易になります。
eval/methods/ の下にクラスを追加しますBaseAttackMethod インターフェースを実装しますeval/methods/__init__.py に登録しますeval/runner.py で使用される検出器レジストリに登録しますこのリポジトリは、AIテキスト検出器の堅牢性、敵対的評価、防御ベンチマークに関する研究のために公開されています。カンニング、盗用、または正当な安全性・整合性システムの回避を支援することを意図したものではありません。
この研究を基に構築する場合は、検出器の堅牢性、校正、転移評価、およびデプロイメントの限界に関する透明性を向上させるために使用してください。
このリポジトリを使用する場合は、論文を引用してください:
@article{ranganath2026stealthrl,
title={StealthRL: Reinforcement Learning Paraphrase Attacks for Multi-Detector Evasion of AI-Text Detectors},
author={Ranganath, Suraj and others},
journal={arXiv preprint arXiv:2602.08934},
year={2026}
}