大多数对话数据集是一堆单轮问答:一个问题,一个好答案。在这样的数据上训,模型第一轮很强,第四轮就丢了主线。
回合是对话的像素。真正要学的是回合之间传递的那个状态。
回合之间传的是什么
- 用户已经说过什么,包括他纠正过的部分
- 助手已经承诺了什么
- 还有什么不知道、需要问
- 用户已经默认接受了什么
模型如果表示不了这些,就会重复提问、自相矛盾,以及在被告知约的三个回合之后忘掉它。
收集约束,而不是收集句子
用户在第二轮说了「不要贝类」,有用的标签不是那句话,而是它建立的那条约束,以及它到第八轮有没有守住。
标注约束和它们的存活情况很枯燥,而它正是会改变行为的那部分。
修复回合最值钱
当用户说「不对,我说的是另一个」,这段对话里同时有一次失败和一次纠正。这一对抵得上很多条干净问答。
失败的回合要留下。删掉它,产出的是一个从没被纠正过的模型。
评整段对话,不评单条回复
评:目标有没有达成、约束有没有守住、用了几个回合。一段糟糕对话里的一个好回答,仍然是一段糟糕的对话。
这些集合由 Zovda 通过 Datuva 生产,每段对话都保留它的目标和约束清单。题库与推理语料展示了多步答案的组织方式。
告诉我们「一段好对话」在你的产品里指什么,我们会在 1 个工作日内回复。
