先这样答
核心原因是偏好数据存在长度偏差。这是淘天二面的一道原题。偏好数据里被选中的回答普遍更长。DPO 算法直接对偏好对进行优化。模型在训练中捕捉到了这个规律。长度本身成了一个可利用的信号。模型学会了写长内容。模型认为写得越长越容易被选中。
缓解这个问题需要从数据端控制。开发者在构造偏好对时要控制长度均衡。你需要针对同一个任务筛选数据。你需要约束 chosen 和 rejected 两个回答的长度差。开发者只保留长度相近的偏好对。这样能切断长度和偏好之间的关联信号。模型只能去学习回答的内容质量。模型无法再通过增加字数来作弊。
开发者也可以在奖励机制上做限制。你在奖励里加长度惩罚项。模型输出的字数超出合理范围时会触发惩罚。惩罚项会降低长回答的最终得分。这抵消了长文本带来的优势。模型必须在有限字数内提升回答质量。
面试官会怎么追问
-
「构造偏好对时控制长度均衡,具体是怎么操作的?」 开发者需要针对同一个任务处理数据。程序计算 chosen 和 rejected 回答的字数。开发者设定约束条件限制两者的长度差。程序过滤掉长度差过大的数据对。
-
「你提到的在奖励里加长度惩罚项,核心逻辑是什么?」 核心逻辑是打破长度与奖励的正相关。模型输出变长时会触发惩罚项扣分。这抵消了长度带来的额外偏好收益。模型不再把写长等同于更容易被选中。
-
「为什么 DPO 算法对这种长度信号特别敏感?」 DPO 直接对偏好对进行优化。算法要求模型区分 chosen 和 rejected 数据。模型会寻找最容易区分这两者的特征。长度本身就成了最直接可利用的信号。
回答的坑
将输出变长错误归因于模型本身的生成能力。 遗漏针对同一任务约束 chosen 和 rejected 长度差这个具体操作。
同系列的题