超越聊天机器人的直接偏好优化
Direct Preference Optimization Beyond Chatbots
Dharma AI 发布 DharmaOCR 模型,在巴西葡萄牙语 OCR 任务上测试了五个视觉语言模型家族。SFT 后文本退化率最高超 33%,而引入 DPO 训练阶段后,所有模型退化率平均降低 59.4%,最高达 87.6%。该方法将模型自身的退化输出作为 DPO 的拒绝配对,而非过滤掉,利用失败模式本身作为训练信号。该 pipeline 在 23,726 个文档上验证,无需人工标注即可构建偏好配对。
](https://huggingface.co/ErickvL)
* 利用模型自身失败产生的拒绝配对
* [循环在微调后依然存在](https://huggingface.co/blog/Dharma-AI/direct-preference-optimization-beyond-chatbots#the-loop-survives-fine-tuning "The Loop Survives Fine-Tuning")
* [设计决策:将退化输出作为拒绝配对](https://huggingface.co/blog/Dharma-AI/direct-preference-optimization-beyond-chatbots#the-design-decision-degenerate-outputs-as-rejection-pairs "The Design Decision: Degenerate Outputs as Rejection Pairs")
* [在五个模型家族中表现一致](https://huggingface.co/blog/Dharma-AI/direct-preference-optimization-beyond-chatbots#consistent-across-five-model-families "Consistent Across Five Model Families")
* [超越 OCR 的模式](https://huggingface.co/blog/Dharma-AI/direct-preference-optimization-beyond-chatbots#the-pattern-beyond-ocr "The Pattern Beyond OCR")
* [来源](https://huggingface.co/blog/Dharma-AI/direct-preference-optimization-beyond-chatbots#sources "Sources")
今年四月,我们发布了 DharmaOCR——我们专有的结构化 OCR 模型(可在 Hugging Face 上获取),并附上了一篇论文,详细阐述了其背后的方法论,以及一个展示其卓越质量和成本效益的 benchmark。该论文在结构化文档提取任务——巴西葡萄牙语文本的 OCR——上,对领先的视觉语言模型家族(包括开源和商业模型)进行了 benchmark 测试。报告的指标中包括文本退化率:模型产生重复循环而非转录内容的频率。
在测试的开源模型家族中,原始退化率范围从低于 1% 到超过 33%。监督微调(SFT)降低了大多数模型的退化率——但很少能达到生产可接受的水平。这种模式指向一个结构性限制:SFT 优化的是正确的输出,但并未明确惩罚退化。仅靠专注于任务的微调来减少这种失败模式似乎存在一个上限(文本退化文章)。
第二个训练阶段——在监督微调(SFT)之后,对相同的文档,使用相同的模型进行——在所有测试的模型家族中都降低了文本退化率。无一例外。平均降低幅度:59.4%。最佳情况:87.6%。

图 1:DPO 在所有测试的模型家族中均降低了相对于 SFT 的退化率——平均降低 59.4%,最高降低 87.6%(Nanonets-OCR2–3B:从 1.61% 降至 0.20%)。方向是不变的;变化的只是幅度。
这第二个阶段就是直接偏好优化(DPO)。几乎所有已发表的 DPO 应用都针对对话对齐——模型基于人类关于有用性或无害性的判断进行训练(例如:Rafailov 等人,2023)。OCR 不包含任何此类主观性:任务是客观的,并且没有对话上下文。然而,存在一个清晰的偏好信号。正确的转录是被选中的;退化循环是被拒绝的。DharmaOCR 利用这种二元性构建了一个 DPO 训练集,测试该技术并非用于对齐,而是作为针对特定失败模式的直接缓解工具。
训练信号来自模型本身——具体来说,来自它失败时产生的输出。失败模式如何成为训练信号,是一个关于失败本身的结构性问题,而非关于模型。
循环在微调后依然存在
为什么 SFT 在退化问题上存在上限仍是一个未解之谜——但主要的猜想指向损失粒度。SFT 逐 token 进行训练:每个预测都被孤立地评估,重复循环从未作为完成级别的失败受到惩罚。DPO 反转了这一逻辑。训练信号是完整的输出——被选中或被拒绝——这意味着一个退化的完成可以被明确标记为错误结果,而不仅仅是一系列局部概率较高的 token。
当训练目标最大化观测序列的似然时,它会将概率质量集中在这些序列所占据的分布空间区域。一个在推理过程中进入这些高概率吸引子区域的模型,会在下一步为相同的 token 分配更高的概率——这进一步增加了概率,从而维持循环直到序列达到最大 token 限制。文本退化就是这种几何结构的输出:一个自增强的重复循环,自回归模型在没有外部干预的情况下无法退出(Holtzman 等人,2020)。这并非纯粹的解码伪影。吸引子涉及训练目标、学习到的分布以及推理过程中概率质量的集中方式——这是一个系统级别的失败,而非局限于任何单一组件的失败。
这种失败的几何结构在 token 级别是可见的。

图 2:当一个 token 主导其自身的条件分布时,每个采样步骤都会加深吸引子。解码器从这种几何结构中采样;它并不决定这种几何结构。
推理层的干预措施——重复惩罚、温度调整、提前中止逻辑——作用于采样步骤。它们控制症状,但未触及产生症状的分布。吸引子持续存在。
监督微调将分布移近任务领域。对于结构化生成 pipeline,这意味着在目标语言中,使用所需的输出格式,针对特定领域的文档进行训练。模型在处理更长序列、受限语法和领域词汇方面变得更加流畅。SFT 没有做的是直接攻击退化。它的目标——最大化观测序列的似然——没有惩罚重复循环的项。这种失败模式完全超出了训练信号优化范围。
DharmaOCR benchmark 中的一个模型家族显示出一种意外模式:原始退化率为 0.60%,SFT 后升至 3.23%,随后 DPO 阶段将其降至 1.41%。这是一个单一数据点——一个例外,而非规则——将其视为某种机制的证明会夸大证据。但它确实说明了 SFT 并不能可靠地降低退化率。能力和抗退化性可以独立变化。
这种区别在结构上很重要。SFT 和 DPO 并非可互换的训练阶段,以不同强度执行相同操作。SFT 缩小了模型先验分布与任务领域之间的距离。它没有做的是将退化作为目标来针对——它对失败模式的影响是附带性的,并且 benchmark 结果显示这种影响并不一致。产生退化的吸引子不是模型与任务接近程度的问题——而是模型现在占据的分布空间形状的问题。
要解决这种几何结构,需要一个专门构建的训练信号,将模型指向远离其自身失败模式的方向。对于一个结构化的、非对话式的任务,没有人类偏好标签,也没有传统的“有用与有害”区分,构建这样的信号是一个设计决策。
设计决策:将退化输出作为拒绝配对
DharmaOCR pipeline 对 DPO 方法论的贡献是具体的:它使用了 SFT 模型自身的退化输出作为被拒绝的示例——不是作为需要去除的噪声,而是作为优化所需的负训练信号。
DPO 需要偏好配对:针对相同输入的一个被选中的输出和一个被拒绝的输出,其质量差异足够清晰,以便优化过程能够从中学习。在对话对齐中,人类标注员产生这些判断——对回答的有用性、准确性或安全性进行评分。结构化生成任务没有等效的标注来源。OCR pipeline 要么产生正确的转录,要么不产生。质量差异是存在的,但它们并非由人类偏好排名产生——而是由任务自身的正确性标准产生。
DharmaOCR pipeline 识别出结构化生成任务已经产生的一种偏好信号:SFT 模型在推理过程中产生的输出范围。一个能够执行结构化任务的模型,也必然能够以特征性的方式在该任务上失败。这些失败——进入退化吸引子的输出——并非需要过滤的噪声。它们是可获得的最具信息量的负信号。
该论文在 23,726 个训练文档上实现了这一点,使用 SFT 模型为每个文档生成多个候选响应,并使用自动化的 LLM 评判器对每个响应进行评分。pipeline 如下所示。

图 3:关键的设计决策不在于 pipeline 的结构——而在于 pipeline 保留了什么:显示文本退化的输出被有意标记为被拒绝的示例,而不是作为低质量噪声被过滤掉。
当训练数据中出现退化输出时,常规反应是将其移除。它们是低质量信号;过滤会产生更干净的数据集。DharmaOCR 的方法反转了这一逻辑。退化输出被有意保留,作为每个(被选中,被拒绝)配对中的被拒绝示例,因为它们恰恰代表了 DPO 阶段旨在抑制的失败模式。移除它们将丢弃可用的最清晰目标。
该论文将此描述为“偏好引导的隐式非似然”——模型不仅被训练朝向更好的输出,而且被训练远离特定类别的失败。SFT 最大化高质量输出的似然,而 DPO 阶段同时惩罚显示退化吸引子几何结构的输出。优化的方向是明确的,这是 SFT 单独无法实现的。
退化输出特别适合作为拒绝示例,因为它们代表一种一致的失败模式,而非各种低质量的输出。一个漏词的转录是低质量的,但其失败是特定于案例的。相比之下,重复循环即使在 SFT 之后也持续出现在文档和模型家族中——这种模式与基于似然的优化无法可靠纠正的失败模式一致。DPO 以不同的方式应用其损失:在完成级别,使用明确的拒绝信号。事后分析无法建立因果关系,但证据表明,SFT 目标未能解决的问题,DPO 的目标可能能够解决。
这种方法不需要专门的标注基础设施——只需要一个能够产生可接受输出和可识别失败输出的模型,以及一个用于标记偏好配对的评分模型。基于规则的机制可以机械地检测重复循环——但它无法识别哪些输出代表了值得保留为被选中示例的高质量转录。
评分模型两者兼顾:它将退化标记为被拒绝的输出,并将干净的提取验证为被选中的输出,保持模型的提取能力不变,同时 DPO 信号惩罚失败模式。由此产生的训练信号是否成功地将分布推向预期方向——以及它是否在不同架构间一致地做到这一点——是证据问题。
在五个模型家族中表现一致
DPO 阶段在所有测试的模型家族中都降低了文本退化率——相对于仅使用 SFT,降低幅度从 37% 到 88% 不等,平均为 59.4%。该结果在架构、参数规模和起始退化率(相差超过一个数量级)上均成立。数据集中有一个案例在 SFT 阶段后退化率增加,随后被 DPO 纠正。该案例并未使一致性复杂化。它比任何其他案例都更直接地确认了该机制。
图 1 显示了五个测试模型家族中每一个的三阶段退化率:原始、SFT 和 SFT+DPO。在五个家族中的四个中,退化率在每个阶段都下降。第五个家族的柱状图移动方式不同——而这种差异是研究中分析上最重要的数据点。
仔细阅读 Qwen2.5-VL-3B 的结果,它并非一个复杂情况。它是一个确认。该模型的原始退化率为 0.60%——不是因为它稳定,而是因为它过于通用,根本无法产生长的结构化输出。该模型没有进入退化吸引子,因为它没有足够认真地尝试任务以找到它。
SFT 改变了这一点。在领域适应之后,Qwen2.5-VL-3B 变得能够胜任该任务——使用 pipeline 所需的领域词汇和格式产生更长、更结构化的输出。这种能力首次使其接近退化吸引子。其退化率升至 3.23%。
这是该机制在经验上变得可见:SFT 同时将模型移向任务和移向任务的失败几何结构。这些不一定是相同的操作。一个增加任务能力的训练阶段可能会作为副作用增加暴露于失败模式的风险——特别是当失败模式位于能力前沿的边缘时。如果被视为相同操作,Qwen2.5-VL-3B 的结果看起来像是一个错误。如果被视为不同的操作——这正是 SFT + DPO pipeline 正式所做的——那么该结果与 SFT 和 DPO 处理不同失败维度的假设是一致的。
随后,DPO 阶段将退化率降至 1.41%。它没有恢复到原始基线,因为它并非为此设计:SFT 后的模型比之前更有能力,恢复到 0.60% 将需要撤销这种能力。DPO 阶段所做的是解决 SFT 阶段引入的失败几何结构。
其余四个模型家族为相同的结论增加了定量权重。图 1 显示了所有五个家族的 SFT 到 SFT+DPO 的比较。

图 1:DPO 在所有测试的模型家族中均降低了相对于 SFT 的退化率——平均降低 59.4%,最高降低 87.6%(Nanonets-OCR2–3B:从 1.61% 降至 0.20%)。方向是不变的;变化的只是幅度。
没有模型家族在 DPO 后显示退化率增加。没有家族对其效果免疫。这种一致性延伸到 gemma-3–4b-it,它以高出数量级的原始退化率进入 benchmark——33.96%,而次高为 2.62%——并且在 DPO 阶段后仍实现了 75% 的降低。降低范围——37.3% 到 87.6%——反映了起始配置和架构的差异,而非干预方向的不一致。
这并非普遍适用性的证明。DPO 可能无法转移到每个领域、失败模式或模型家族。DharmaOCR benchmark 提供的是跨五个 OCR 架构的证据,表明核心假设成立:在完整偏好配对上进行优化——而非最大化 token 级别的似然——解决了 SFT 在结构上无法针对的失败模式。该结果在所有测试的模型家族中方向一致。这种一致性,在此 benchmark 的范围内,是证据所支持的。
超越 OCR 的模式
DharmaOCR 方法之所以可行,是因为该 pipeline 满足了一组结构条件,使得 DPO 训练阶段能够按设计运行——这些条件的存在与否决定了相同的方法论是否适用于其他地方(ArXiv 上的 Dharma OCR 论文)。这并非因为 OCR 是一个独特的领域。
第一个条件是,失败模式必须可识别为输出的一个独特类别,而不仅仅是质量连续体上的一个点。文本退化符合条件,因为重复循环在类别上不同于漏词或误读字符的转录。输出不仅仅是次优的——它以一种特定的、行为上可识别的方式被破坏。这种类别上的独特性使得 pipeline 能够构建偏好配对,其中被拒绝的示例代表一个连贯的失败几何结构,而非噪声。一个失败模式与其可接受变化范围融合的任务缺乏此属性。
第二个条件是,评分机制能够可靠地区分可接受的输出和失败模式的输出,而无需人工标注。在 DharmaOCR pipeline 中,一个自动化的 LLM 评判器根据四个任务特定标准对候选响应进行评分。评分不需要完美——它需要足够一致,以产生在选中和拒绝之间具有有意义质量差距的偏好配对。质量差异模糊的配对会向 DPO 训练引入噪声,而非信号。评判器的一致性是一个设计要求,而非附带特征。
第三个条件是足够的数量——足够多的推理输出,以生成一个具有有意义质量方差的偏好数据集。按微调标准来看,这并非一个特殊要求,但它是真实存在的。
当所有三个条件都满足时,方法论上的移动在结构上是可行的。DharmaOCR pipeline 核心的设计决策——将模型自身的失败输出作为被拒绝的示例而非过滤掉——适用于任何模型的失败是可分类识别、可评分且数量足够多的场景。
对于构建结构化生成 pipeline 的 ML 工程师来说,实际意义是直接的。SFT 是必要的——它缩小了通用模型与任务能力模型之间的距离。但对于结构化输出的可靠性来说,它是不够的,因为任务能力和抗退化性是分布的不同属性。SFT 之后的 DPO 阶段是一次性的训练投入。在 DharmaOCR 的结果中,退化率的降低并未以提取质量为代价——论文的 benchmark 结果显示两者同时改善(专业化胜过规模文章)。
使失败模式可用作训练信号的不是领域——而是失败是否足够一致、足够可识别、并且数量足够多,以构成一个清晰的信号。在 DharmaOCR pipeline 中,它们是的。同样的条件在另一个上下文中是否成立,是一个关于任务失败模式的结构性问题,而非关于模型家族或领域的问题。
DharmaOCR 的结果不依赖于该领域是否特殊。它依赖于失败是否有用。
文本退化符合有用的条件,因为它在类别上不同于可接受的输出,在推理运行中一致地产生,并且无需人工标注即可可靠评分。这三个属性——而非 OCR 上下文、模型家族或语言——决定了偏好数据集是否易于处理。满足这些条件的失败模式不是需要去除的噪声。它是关于分布不应去往何处的、可获得的最直接证据。
DPO 阶段使用了该证据。退化率在所有测试的模型家族中均下降——在原始退化率低于 1% 的模型和高于 33% 的模型中均如此。方向保持不变。该 pipeline 没有丢弃其失败。它在其上进行训练。
来源
- Cardoso, Gabriel Pimenta de Freitas, 等人. "DharmaOCR: Specialized Small Language Models for Structured OCR that outperform Open-Source and Commercial Baselines." arXiv preprint arXiv:2604.14314 (2026).
- Dharma AI. "Text Degeneration: The Production Failure Mode That LLM Benchmarks Ignore." Medium (2026).
- Dharma AI. "Specialization Beats Scale: A Strategic Variable Most AI Procurement Decisions Overlook." Medium (2026).
- Holtzman, Ari, 等人. "The Curious Case of Neural Text Degeneration." arXiv preprint arXiv:1904.09751 (2020).
- Rafailov, Rafael, 等人. "Direct Preference Optimization: Your Language Model is Secretly a Reward Model." arXiv preprint arXiv:2305.18290 (2023).