读 Selective DPO:偏好数据为什么不是越难越好
偏好对齐里有一个很自然的直觉:只要 chosen 和 rejected 没有标错,数据越多越好;难样本甚至应该更有训练价值。
Selective DPO 挑战了这个直觉。它提出,偏好数据是否有用,不只取决于标签质量,也取决于样本难度是否落在当前模型的能力范围内。
论文的核心主张是:
偏好样本具有稳定的难度差异;过难样本会因为超过模型容量而伤害对齐,而且“过难”的阈值随模型能力变化。
偏好对齐里有一个很自然的直觉:只要 chosen 和 rejected 没有标错,数据越多越好;难样本甚至应该更有训练价值。
Selective DPO 挑战了这个直觉。它提出,偏好数据是否有用,不只取决于标签质量,也取决于样本难度是否落在当前模型的能力范围内。
论文的核心主张是:
偏好样本具有稳定的难度差异;过难样本会因为超过模型容量而伤害对齐,而且“过难”的阈值随模型能力变化。
大模型开始重复时,表面上像是“同一个词说了太多次”。真实故障往往更严重:生成过程失去向前推进的能力,开始不断确认最近出现的高概率模式,直到外部用 max_tokens 强行终止。
开放文本里可能是句段复述,代码里可能是无休止的 if/elif、函数壳和断言,翻译里则可能同时出现语言切换和段落循环。
把这些现象放在一起看,repetition 更像一种生成动力学退化:
模型滑入了低信息、低变化、但局部概率很高的轨道,而且后续输出不断把它送回同一轨道。
长上下文推理最先撞到的墙,经常不是 FLOPs,而是 KV Cache。
模型每生成一个新 token,都要让当前 query 访问过去 token 的 key 和 value。为了避免把过去全部重算一遍,推理系统把这些 K、V 留在显存里。代价是缓存随上下文长度、层数和 KV head 数一起增长。
这类工作看起来很多,其实可以放进一个很清楚的坐标系:
KV Cache 优化主要是在 Token、Layer、Head 三个维度上减少需要保存的状态。
训练大模型时,我们通常先把数据清洗好,再随机采样训练。这个流程隐含了一个假设:
一条数据的价值在训练开始前就能确定,而且训练到哪一步都差不多。
OPUS 质疑的正是这个假设。同一条数据对初始模型可能很有用,对已经学会相关知识的模型却可能只是在重复;更关键的是,样本的原始梯度并不等于参数最后真正走的方向。AdamW 会按坐标缩放梯度,Muon 会对矩阵梯度做更强的几何变换。若数据选择仍按原始梯度打分,评分系统和真实训练过程就没有对齐。
OPUS 的核心判断可以压成一句话:
一条样本是否值得现在训练,要看它经过当前优化器处理后,能否把模型推向目标分布需要的方向,同时又不和已经选中的样本重复。
假设模型面对一道数学题,四次生成中只有一次答对。训练系统不会把标准答案当作交叉熵标签直接喂回模型,而是把四份回答放在一起比较:答对的回答得到正的相对优势,答错的回答得到负的相对优势,再通过当前模型对这些 token 的概率计算梯度。
这就是本文要复原的核心链路:
prompt
→ 旧策略采样多份回答
→ reward 函数打分
→ 组内标准化得到 advantage
→ 当前策略重新计算 log-probability
→ ratio + clip + KL 构成 loss
→ backward() 更新 actor 参数本文只讨论可验证最终答案的数学任务,并使用教学设定解释机制。DeepSeek-V3 的完整训练还包含预训练、SFT、代码与写作等任务,以及从 DeepSeek-R1 系列蒸馏推理能力的后训练流程;下面的数学例子不是官方训练配置的逐项复现。DeepSeek-V3 技术报告,第 5 节
Muon 的核心动作是对矩阵动量做谱方向校正;PSGD-Kron 的核心动作是在线学习左右预条件因子。把二者直接相加并不能说明谁贡献了什么,因此本文记录一条更具体的组合路径:用动量 \(M_t\) 拟合 PSGD 的坐标变换,在这个坐标中把原始动量与 Newton–Schulz 谱方向做等范数混合,最后映回参数空间。
在 51M 参数模型、100,663,296 个 FineWeb-Edu 训练 token 上,正式候选为“\(\alpha=0.5\)、用 \(M\) 拟合 \(Q\)、前 256 步每步拟合,之后每 8 步拟合一次”。它在三个全新 seed 上都取得低于 Muon 的全量验证 loss,平均差值为 \(-0.006636\);代价是平均 wall-clock 高约 7.7%。因此正确的结论是“在这个受控设置下,用额外计算换取稳定但有限的 loss 改善”,而不是“已经普遍超过 Muon”。
本文信息截止到 2026-09-22。文中的实验数字来自附带的第二轮算法与 FineWeb 验证记录;它们是当前研究过程中的可复现实验证据,不是已发表论文的 benchmark 结论。
Mercor 的 headline 是:用 1,928 个专业知识工作任务做 RL 后,Qwen3.5-397B-A17B 在 APEX-Agents 上的 Pass@1 从 16.11% 提高到 27.29%,绝对提升 11.18 个百分点,相对提升约 69%。但如果只记住“397B、GRPO、提升 69%”,几乎学不到怎么实现。
真正值得拆的是下面这条链:
Harbor task directory
→ Trial.create()
→ ECR world / Modal sandbox / MCP gateway
→ ArchipelagoAgent: LLM → tool call → observation → LLM
→ TITO: token_ids + loss_mask + rollout_logprobs
→ tests/test.sh → verifier_result.rewards["reward"]
→ TITOHarborGenerator
→ 16 rollouts / prompt 的 GRPO group
→ group-relative advantage
→ DPPO token mask + prompt_mean reduction
→ Megatron 更新参数
→ NCCL 同步到 12 个 vLLM engines本文不再复述“Agent RL 很难”这种背景,而是沿这条链逐段打开数据结构和控制流。读完后,至少应该能回答三个具体问题:某个 tool observation 为什么不能有梯度?一条旧 policy 生成的 trajectory 怎么进入当前 policy 的 loss?batch=16, samples=16, staleness=3, workers=64 合起来到底是多少条 rollout?
代码核查截止 2026-09-03,固定到 ApexAgents-SkyRL-Recipe 8e7702f、Archipelago da7cfef 与本文本地核查的 SkyRL checkout。训练任务、world image 和 rubric 没有公开,因此机制与配置可以核查,headline 训练结果还不能独立复现。
Oak Lab 最近的一篇文章,标题是 Learning from experience instead of curated datasets。它表面上在比较 SGD 与 NetworkIDBD,实际上是在提出一个更大的研究议程:如果智能体面对的是未经筛选、持续到来的真实经验,学习算法本身必须知道哪些误差值得学习,哪些误差只是噪声。
这与“把更多数据喂给更大的 Transformer”是不同的问题。Oak Lab 的公开使命是让智能体在“大世界”(big worlds)中实现目标:环境持续变化、观测不完整、资源有限,系统不能把所有知识都同时精确地存下来。围绕这个目标,他们把研究集中到 OaK Architecture、batch-size-one 在线学习、事件驱动神经网络和面向规划的时间抽象上。
本文信息截止 2026-09-02。Oak Lab 尚未公开 OaK 的完整实现、训练数据配方或端到端能耗测量,因此文中会明确区分来源结论与综合判断。