DPWriter:面向创意写作的多样化规划分支强化学习¶
笔记时间:2026-07-27 评分:5 领域:narrative 方法:rl-diversity, planning-branching, grpo 类型:method
元信息¶
- ID: arXiv:2601.09609
- 年份: 2026
- 作者: Qian Cao, Yahui Liu, Wei Bi, Yi Zhao, Ruihua Song, Xiting Wang, Ruiming Tang, Guorui Zhou, Han Li
- 团队: 中国人民大学;快手科技(一作在快手实习期间完成)
- 本地 PDF:
paper.pdf - 中文译文:
main_zh.md - 页数: 25
- 主题: RL 多样性, 创意写作, 半结构化长 CoT, 多样化规划分支 (DPB), 多样性贡献奖励, GRPO
定位:解决什么问题¶
RL(RLHF/GRPO)提升 LLM 后输出分布变尖、多样性塌缩——对创意写作这类开放式任务尤其有害。
典型表现:prompt「命名一本哈利波特书」生成 5 次,GRPO 有 4 次都答《魔法石》(图5)。创意写作的价值恰恰在"不重复、有惊喜",模型再对再流畅,每次给同一个故事就没用。
目标:在不损害质量前提下找回多样性,且要可控——不是 token 层面的随机噪声多样性,而是「视角/结构/风格」这种有意义的方向多样性。
动机:前序方法差在哪¶
两派都有具体缺陷:
- 改奖励函数派(Darling / GRPO-Unlikeliness / DRA-GRPO):在 GRPO 里加多样性感知奖励项。问题:只在打分阶段使劲,rollout 过程不受控——模型还在窄路径采样,多样性提升被动、慢,且易被 reward hacking(生成低质但"不同"的内容刷指标)。
- 分支/分叉派(TreePO / Segment PO / First-Return-Entropy,见 TODO):rollout 时主动分叉。问题:① 目的是样本效率/性能,不是多样性;② 从高熵 token 或固定段长分支——而高熵 token 多是"的、了、是"这类无实义虚词,在这分支产生的是词面噪声,不是"走向不同"。
共同问题:没在「有语义意义」的地方引导多样性。DPWriter 切入点:给生成加结构化规划阶段,在规划这个语义岔路口分支。

图1:直接生成 vs 非结构化长 CoT vs 本文带规划的半结构化长 CoT。后者在推理前引入全局规划,质量高且可控。
方法:三件套¶
1. 脚手架:带规划的半结构化长 CoT¶
在推理前插入显式规划,切成 5 个特殊 token 段:<goal>目标受众 / <info>信息视角 / <struct>结构逻辑 / <lang>语言风格 / <pres>呈现体验。生成流程:\(p\sim M(\cdot|q) \to c\sim M(\cdot|q,p) \to y\sim M(\cdot|q,p,c)\)。
关键直觉:这 5 段是「第几人称 / 线性还是倒叙 / 口语还是书面」等高层语义决策点,语义粒度高——<lang> 写"口语"还是"书面"、<info> 写"第一人称"还是"第三人称",一个词的差异就改变整篇故事走向。而 token 层面分支(在"的/了/是"处分裂)只改用词、走向不变。所以在规划段分支 = 在高杠杆决策点分裂,同样数量分支能覆盖大得多的故事空间——这是可控性的根本来源。

图2:春天面馆故事示例——先五维度规划再长 CoT 推理。
数据构造(43K SFT):原始只有 (指令,回复),用 GPT-4.1 两步:① 反推五维度规划;② 用规划改写原 CoT 使其一致(避免规划与推理脱节)。
冷启动 SFT 让模型学会两件事:① 输出 5 个特殊 token 段的规划格式;② 生成与规划一致的 CoT(用改写后的 plan-consistent 数据)。没有这步,rollout 时模型写不出规整的 <goal>...</goal>,DPB 就没有"段"可分支。表2 消融证明这个"规划+思考"的 SFT 本身就比标准 CoT SFT 强,且给 RL 打了好底。
RL 数据筛选(43K→10K):用 SFT 模型给每条生成回复、Skywork-Reward-V2-Llama-3.1-8B 打分,只保留模型还答不好的(最高分低于整体均值)→ 10K 用于 RL。直觉:RL 重点练弱样本,不浪费在已会的内容上。
2. 灵魂:多样化规划分支(DPB)¶
DPB 是 rollout 阶段的操作,替换 GRPO 原本"独立采样 n 次"的做法——在结构化的规划岔路口主动分裂、筛掉雷同。分支只发生在填 5 个规划段时;规划定稿后,长 CoT 和回复是正常单路生成的。
两个参数:K=分支因子(论文 32,每个空采多少条不同填法);G=组大小(论文 8,每个空填完保留多少条——也就是 GRPO 的组大小 n,即每条指令最终产出 G 篇回复)。
逐步 trace(candidate = 一段半成品生成「指令 + 已生成的规划部分」):
- 起点:候选集 C = {指令 +
<think>+<goal>开头},1 条。 - 第 1 段
<goal>:从这 1 条采 K 条不同填法 → 池 = 1×K。第一段特殊:直接从全池选 G 个最不同的留下 → C = G 条(各有不同目标)。 - 后续段(
<info>/<struct>/<lang>/<pres>):C 的每条候选各采 K 条 → 池 = G×K,分成 G 组(每个爹的 K 个孩子)。后续段规则:从每组只挑 1 条(最不同的)→ 共 G 条,保证每个爹至少留 1 个孩子,避免幸存者全来自同一分支、丢掉其他方向。 - 5 段都填完:C = G 条完整规划。之后不再分支,每条候选正常单路生成剩余的长 CoT + 最终回复 → G 篇方向各异的故事,构成 GRPO 的一个 group。
为什么第一段"从全池挑"、后续"每组挑 1 个"? 第一段只有 1 个爹没法"每组挑 1";后续若仍从全池 G×K 选 G 个最不同的,可能 G 个全来自同一爹(丢了其他分支),故强制每爹留 1。
"最不同的"怎么挑? 用多样性度量 \(\mathcal{D}(\cdot)\) 做贪心最远点采样(farthest-point):先选一个,再反复挑"离已选集合距离最大"的下一个,直到选满 G。\(\mathcal{D}(\cdot)\) 两种(主用第 1 种):n-gram 多样性(候选间不同 n-gram 数)、语义多样性(Qwen3-Embedding-0.6B 算候选间平均余弦距离)。注意是在候选规划段文本上算,不是最终回复。
⚠️ 别混淆:这里 \(\mathcal{D}(\cdot)\) 是训练 rollout 时用来决定保留哪些候选的;和评测时报告的 EAD/Emb/Distinct(见下节)是两回事——用途不同(一个驱动分支选择,一个报告结果),尽管都涉及 n-gram/嵌入。
通俗讲:以"多样性"为目标的束搜索——在"定目标/定视角/定结构"这些岔路口主动往不同方向走,长出 G 条方向各异的故事,而不是 G 条只在用词上不同的故事。

图3:DPB 概览——凌晨四点三个朋友故事,在
<goal>/<info>等规划段分支、选最不同的留下,最终长出《四点的回响》《寂静的黎明》等多样回复。
3. 打分:多样性贡献奖励 × GRPO(含质量门槛 τ)¶
奖励分两部分:
- 质量:\(r^{qua}=\mathcal{R}_\phi(q,y)\)
- 多样性贡献:\(r^{div}=\mathrm{Norm}\big(\mathcal{D}(y_i,\, Y\setminus\{y_i\})/|y_i|\big)\)——分子是这条回复独有的 n-gram 数(别人都没有的),直觉:你贡献了别人没有的独特内容就奖励你。
- 合并:\(r=(1-\lambda)r^{qua}+\lambda r^{div}\),仅当 \(r^{qua}>\tau\) 时激活多样性项(\(\lambda=0.6,\tau=10\))。
质量门槛 τ 是关键设计:防模型为刷多样性去生成低质内容。反面教材:Darling 在数学任务上用 n-gram 多样性作奖励、没配门槛,结果模型开始生成别的语言、或大段自我反思来骗 n-gram 奖励(附录 G),pass@1 反而劣于 GRPO 基线。τ = "先保证不是垃圾,再谈多样"。代入 GRPO 优势计算,其余不变。
实验:质量与多样性双赢¶
设置:骨干 Qwen3-4B / Llama-3.2-3B;基线 GRPO / GRPO-Unlikeliness / Darling / GAPO。质量裁判:WritingBench + EQ-Bench 用 Claude Sonnet 4,ArenaHard 用 DeepSeek-V3(WR 对 gemini-2.0-flash)。
多样性怎么量化(三个层次,缺一不可)¶
这是理解实验的前提。多样性评估的难点是「两条回复不一样」到底指什么——三个指标从浅到深回答:
| 指标 | 量的层次 | 怎么算 | 抗钻空子 | 贴近人 |
|---|---|---|---|---|
| EAD(n-gram distinct) | 词面 | 16 条回复里独有 n-gram 的占比,按长度校正(Expectation-Adjusted) | 弱 | 弱 |
| Emb | 语义向量 | 用 embedding 模型编码、算两两余弦距离取平均 | 弱(易被刷) | 中 |
| Distinct(NoveltyBench) | 功能/语义等价 | 训练一个二分类器判两条回复是否语义等价,聚类成等价类、数类数 | 强 | 强 |
哈利波特例子直观感受三者差距:5 条回复 =《魔法石》×4 +《密室》×1。
- EAD/Emb 会觉得"还算多样"(毕竟有《密室》这个不同词/向量)。
- 但 Distinct = 2(只有"魔法石""密书"两个意思)→ 真相:5 条只覆盖 2 本,塌缩严重。
- DPWriter 输出 5 本全不同 → Distinct = 5。
为什么 DPWriter 三个都报:单一指标会骗人——EAD 偏浅、Emb 可钻(GRPO-Unlikeliness 就靠生成低质内容刷高 Emb)。三个一起领先才有说服力。NoveltyBench 的"语义等价分类器"是这方向的公共基建:DPWriter 拿它评测、Darling 拿它训练。
主结果(WritingBench, Qwen3-4B, vs 标准 GRPO)¶
嵌入多样性 +15%、EAD +9.9%、质量总分 6.43 最高——多样性大涨同时质量不降反升。Creative Writing v3 / ArenaHard / NoveltyBench 多样性均第一。
反例:GRPO-Unlikeliness 在 ArenaHard(Llama)Emb 接近 DPWriter,但胜率与 EAD 明显落后——靠生成低质内容钻 Emb 指标。

图4:NoveltyBench Distinct 上 DPWriter 优于各基线。图5:命名哈利波特书,GRPO 4/5 同《魔法石》,DPWriter 5 本全不同。
消融与协同¶
- 去分支 → 多样性降;去多样性奖励 → 降最多(表3)。两者都关键,多样性奖励影响最大。
- 协同(图6):加多样性奖励后,多样性随分支因子 \(K\in\{16,32,64,128\}\) 增长的斜率明显变陡——分支给原料、奖励给方向,1+1>2。
- SFT 消融(表2):规划+思考一起的半结构化 CoT,比只规划/只思考/标准 CoT 都好,且更可控。

图6:
w/ div reward曲线在各 \(K\) 都更高且更陡。
局限¶
- 计算开销:半结构化 CoT + DPB 多分支多打分,超大模型/数据集可扩展性未验证。
- 跷跷板未根治:质量-多样性张力只是缓解(去门槛则质量掉)。
- 多样性 ≠ 创造力:指标上去是否真更有创意,是开放问题。
- 依赖定制数据:效果绑定 43K 高质量半结构化 CoT(GPT-4.1 反推+改写),非开箱即用的 RL trick。
- 训练质量 RM 未点名:论文只说 \(\mathcal{R}_\phi\) 是人类偏好数据训练的 RM,正文未公开具体模型(数据筛选另用 Skywork-Reward-V2-Llama-3.1-8B)——复现需看代码。
关系:在多样性版图中的位置¶
| 维度 | DPWriter | Darling(Meta+CMU+JHU) |
|---|---|---|
| 场景 | 创意写作专用 | 通用(写作+数学) |
| 改的是 | 怎么采样(rollout 规划段分支) | 怎么打分(奖励加权) |
| 多样性信号 | 规划级(结构化 5 维) | 语义级(学等价分类器) |
| 奖励融合 | 加(带质量门槛 τ) | 乘 |
| 抗 hacking | 质量门槛 τ | 语义分类器 |
- vs 改奖励派:DPWriter 多了 rollout 主动分支,可控性来自此。
- vs 分支派(TreePO/SPO/First-Return-Entropy):那些在高熵 token/固定段长分支;DPWriter 在结构化规划段分支——分支点即语义岔路,核心差异。
一句话定位:创意写作场景下、在规划层做可控分支的多样性方法。与 Darling 互补——一个改采样、一个改打分。
可借鉴点¶
- 在结构化决策点分支:可迁移到续写场景(先规划「冲突的几种走向」再分支续写)。
- 质量门槛 τ:不管用哪种多样性信号(n-gram、嵌入、语义分类器、熵等都是"多样性奖励"的不同实例),都应配一个"质量先过线再激活多样性奖励"的门槛,防 reward hacking——Darling 在数学任务裸用 n-gram 多样性(无门槛)就翻车(pass@1 反劣于 GRPO,附录 G)。