SpyRL:用「谁是卧底」游戏为开放域任务生成自验证 RL 奖励 · 干货攻略

  • 链接: https://arxiv.org/abs/2607.23802
  • 分类: x-tips
  • 来源: X @_akhaliq
  • 作者: Jay
  • 更新: 2026-08-11
  • 仓库: wangqinsi1/RLSVR(代码在 SpyRL 分支)

这是什么

SpyRL 是 RLSVR(Reinforcement Learning with Self-Verifiable Rewards)的具体实现,由 Duke 大学、Adobe、NUS、Penn State 等机构联合提出,已被 COLM 2026 接收。

核心思想一句话:把开放域任务变成一个「谁是卧底」游戏,让游戏的投票结果自动成为可验证的 RL 奖励信号——无需任何 ground truth、无需人类标注、无需 reward model。

  • 论文: arXiv:2607.23802(v2,2026-07-31)
  • 代码/模型: github.com/wangqinsi1/RLSVR(SpyRL 分支),HuggingFace huggingface.co/SpyRL
  • 基座: 基于字节跳动 verl 框架,训练从 Qwen3-4B / Qwen3-8B 起步

为什么值得关注

RLVR(Reinforcement Learning with Verifiable Rewards)驱动了 o1、DeepSeek-R1 等推理模型的突破,但它有一个致命局限:只在数学、代码等有确定性答案的领域有效

开放域任务(摘要、创意写作、对话)没有标准答案,业界通常依赖三种代理:

方式 问题
人类偏好(RLHF/DPO) 贵,无法规模化
Reward Model 需额外训练,judge 能力成为瓶颈
LLM-as-a-Judge 推理开销大,bias 难以消除

SpyRL 的洞察是:自监督学习之所以成功,是因为它自己构造了一个"前置任务",从数据内部自动生成监督信号。把这个思想迁移到 RLVR,就是 RLSVR——把开放域任务本身改造成一个规则可验证的代理环境


核验过程

官方来源(已读): 1. arXiv 论文摘要页(arXiv:2607.23802)—— 包含完整 Abstract、作者 Affiliation、Submission history(v1 2026-07-26,v2 2026-07-31) 2. arXiv HTML 全文页(2607.23802v2)—— 包含 Introduction、Method、Experiment 完整正文,以及论文中 Figure 1 的详细说明 3. GitHub README(wangqinsi1/RLSVR,SpyRL 分支 raw 文件)—— 包含全部性能数据表、Key Features、Quick Start、训练奖励公式

交叉验证: - 多方报道(Glonce、AI Weekly、explainx.ai)均引用相同核心数字:Qwen3-8B 上 SpyRL 摘要 A/B 胜率 75.4%、创意写作 77.3%、数学 7 项平均 +6.16%(8B)/ +8.97%(4B) - 所有数字与 GitHub README 表格完全一致,未发现冲突

原帖 vs 官方说明对照:

原帖主张 官方说明 结论
"arxiv 2026-07 有实现代码" ✅ 确认:GitHub 在 SpyRL 分支,HF 模型已发布 属实
"填补 RLVR 在开放域泛化的关键缺口" ✅ 论文 Abstract 明确提出此定位 属实
性能数字 ✅ README 包含全部 7 项 benchmark 原始数据 属实
适用条件 需 Qwen3-4B/8B 基座,训练基于 verl 框架 原帖未说明,已补全

上手步骤

1. 安装依赖

git clone https://github.com/wangqinsi1/RLSVR.git
cd RLSVR
git checkout SpyRL
pip install -e .

2. 下载预训练模型

官方已在 HuggingFace 发布 SpyRL 微调后的模型:

模型 HuggingFace
SpyRL-Qwen3-4B huggingface.co/SpyRL/Qwen3-4B-SpyRL
SpyRL-Qwen3-8B huggingface.co/SpyRL/Qwen3-8B-SpyRL
# 模型权重示例(HuggingFace)
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("SpyRL/Qwen3-8B-SpyRL")
tokenizer = AutoTokenizer.from_pretrained("SpyRL/Qwen3-8B-SpyRL")

3. 游戏机制:奖励怎么算

SpyRL 把一轮游戏分成三个阶段:

(1)角色分配 - 1 个 Spy(卧底):只拿到降级版输入(缺少关键信息) - n 个 Civilian(平民):拿到完整输入 - 所有人做同一个目标任务(摘要 / 创意写作 / 数学)

(2)投票 - 每个玩家看完所有人的输出后,投票指出谁最可能是 Spy - 投票格式:输出 \boxed{玩家编号}\boxed{N/A}

(3)奖励计算(规则天然可验证)

# 检测奖励(Detection Reward):投票是否命中 Spy,100% 可验证
r_D = 1[vote == spy]   # 猜对 = 1,猜错 = 0

# 表演奖励(Performing Reward):Spy 被投得多 = 平民输出好
# β 为超参数(论文中通过实验选定),m_u = Spy 得票数,m̄_c = 平民平均票数
r_P(spy)      = -β * (m_u - m̄_c)
r_P(civilian) = (β / n_c) * (m_u - m̄_c) - λ * (m_j - m̄_c)

关键点:游戏的投票结果由环境预设的 spy 身份决定奖励,天然可验证,不需要任何外部 judge

4. 运行训练

# 基于 verl 框架的分布式训练示例
# 详细配置见仓库 examples/ 或训练脚本
python -m verl.distributed.run \
    --model_name_or_path Qwen/Qwen3-8B \
    --train_group_size 8 \
    --epoch 10 \
    --total_epochs 10 \
    --game_data_path /path/to/your/document/corpus

训练数据只需原始文档(报告、故事、数学网页文本),不需要标注,不需要 question-level supervision,不需要偏好对

5. 评估

# 仓库提供 evaluation 脚本
python scripts/evaluate.py \
    --model_path SpyRL/Qwen3-8B-SpyRL \
    --tasks govreport,multi_news,writingprompts,gsm8k

坑与适用边界

适用场景: - 开放域生成任务(摘要、创意写作、开放式问答) - 已有可做任务的基座模型(Qwen3-4B/8B 级别) - 想在无标注数据下持续自改进

不适用 / 需注意: - 计算开销:SpyRL 每轮需要多 agent 交互(训练比单 agent RLVR 贵) - 游戏质量依赖:如果任务本身很难构造"信息不对称",游戏激励可能失效 - 领域迁移:需换领域 = 换文档语料,任务设计需要适配,不是开箱即用 - Vote gaming 风险:如果模型学会产生"引人注目但质量不高"的输出来操控投票,奖励信号可能偏移(论文用 GRPO 归一化缓解) - 原创论文声明:SpyRL 提出的关键弱点之一是"vote 与真实质量的关联性"取决于游戏设计质量;论文通过 100 场游戏的 GPT-4o 排序验证了相关性,但大规模训练中是否持续成立仍需观察 - 模型规模:论文仅在 Qwen3-4B/8B 上验证,更大规模或更小规模模型效果待测


一句话结论

SpyRL 把「谁是卧底」游戏的投票规则变成 RL 奖励信号,让开放域任务(摘要、创意写作)也能像数学代码一样做端到端自改进,无需任何 ground truth 或外部 judge,在 Qwen3-8B 上实现了 75%+ A/B 胜率。