团队写拒答数据的方式是一张清单:这些话题,不回答。模型学会了清单,通过了用同一张清单出的题,然后在那条「往旁边挪一步」的请求上表现不可预测。
清单教的是分类,边界教的是判断。
清单不会泛化
如果负样本全是极端的,模型学到的阈值离你想要的位置很远。比极端温和一点的一切都会被当成可以回答,包括你真正关心的那些。
能修正这件事的,是温和的那些行:合法、说得通、但在你这个场景里仍然不希望被回答的请求。
故意把「差一点」写出来
每条边界写三行:明显在内、明显在外、以及一个老练的人也要想一下的。第三行才是训练信号,前两行是脚手架。
然后在第三行旁边写清理由。一条没有理由的拒答,会变成下一个模型继承下来的迷信。
一条拒答记录里有什么
- 请求,用它自然的说法
- 决定:回答、拒绝、或者带限制地回答
- 理由,一句话
- 部分回答时,允许的那部分是什么
把「部分允许」存下来,模型才不会把整个话题都当成禁区,而实际上只有一个用法不行。
两种错误都要量
拒绝过头和该拒没拒,代价不同,但都是代价。分开报、分片报,否则一次「拿一种换另一种」的改动,看起来会像进步。
这些行由 Zovda 通过 Datuva 生产,决定和理由始终挂在请求上。语料总目录标出了边界样本在各阶段的位置。
告诉我们你的产品必须守住哪条线,我们会在 1 个工作日内回复。
