多样性需要被显式设计
别名: 显式多样 · 多样性设计 · intentional serendipity
概念解释
排序器不会因为「用户应该看广一点」就自动把名单铺开。多样性是产品决定要保护的属性,必须写进目标、约束或界面结构,否则下一轮点击优化会把它抹平。被设计的多样性(designed diversity)指:在什么维度上多样、占多少位置、失败时如何回退,都是事先规定的,而不是训练的副作用。
希望用户自己点开冷门,不是设计。把冷门放进付得起代价的位置,才是。
机制
相关性和多样性在同一条列表上互相挤位置。相关性的梯度每一步都在,多样性的梯度只有被写进损失或被界面预留栏位时才在。没有这一笔,模型的局部最优就是更像上周已点击的东西。编辑「偶尔插一条」若不算进目标,下一次重训仍会把它挤走。
界面结构是第二种设计:独立的「发现」轨、配额槽、交叉栏,等于在布局上把多样性从主排序里拆出来,使它不必和点击头名抢同一格。不拆的话,多样条目会沉到需要滚动才到达的深度,等于没设计。
怎么研究
比较三种产品状态:无多样约束、只在损失里加一项多样正则、在界面上单开多样轨。测列表内相似度、覆盖、以及用户是否把多样位置上的条目当作「系统出错」。自变量:多样维度(题材 / 作者 / 立场)、配额比例、是否可见标记。因变量:组内多样性指标、主目标(点击)的同期变化、把多样槽误判为故障的比例。
随机打乱不是多样条件。打乱只提高噪声,会把「多样有害」错安到「多样」头上。结构化配额才是要检验的设计。
边界
用户正在完成一个封闭任务(继续看这一季、买已加入购物车的配件)时,插入多样是干扰,应停在任务结束之后。安全与合规清单上的排除,不是多样性失败。目录规模小于配额时,设计无从落地。这条论证「多样不会自己出现,必须被规定」,不规定用随机还是用行列式点过程,也不处理用户发现不了自己缺什么。
怎么落地
- 先写下维度和配额:例如首页十个位置里至少两个不同一级类、同一作者不超过两个。没有数字的「注意多样」等于没有设计。
- 给配额一个不会被主排序吞掉的座位:单独一轨,或锁定槽位。不要只把多样项写进损失然后仍按点击切页。
- 验证:关掉多样约束重跑一周影子流量,看配额槽是否被主排序填满。被填满就证明多样从未被设计进结构,只是当时运气好。