长尾问题在推荐/广告系统是一个较为常见的问题(这里主要针对 item 的长尾),原因可能比较多,笔者理解的主要原因是由于系统存在 feedback loop(即训练数据由模型产生,同时又会被模型用于训练) 的特性,在没有外部干预的情况下,马太效应会天然导致头部效应的现象比较严重,少部分的 item 主导了整个系统。
比如说推荐系统中,很多视频/文章并没有展示机会,在训练集中压根没出现过,高热的视频/文章在不同的用户中排序都比较靠前,进而得到多次被推荐的机会;在广告系统中,部分计划的消耗会特别高,而一些计划压根投不出去;这导致了用户或者广告主体验不佳,而这种现象往往也会被归为生态问题。
既然没有干预时,系统天然的特性导致了头部效应(或者说二八效应)比较严重,那强行干预系统的分布能不能改变这个问题?答案是可以的,而且目前绝大部分的方法都是在做这一类事情,常用手段往往有 2 种
(1)策略层面,根据系统和业务特性设计规则,比如说对长尾的 item 有特定的扶持,强行让这些 item 能触达到更多的用户
(2)模型层面,核心思想就是让模型能更好地学习到 long tail item 的 representation,因为这个问题的根本原因就是 long tail item 的样本过少,进而导致模型学习的不好;而具体的手段比较多,这部分会在后面详细介绍。
这篇文章主要介绍的几篇 paper都是模型层面的,因为策略层面的往往需要根据实际业务需求来拍一些规则,模型层面的一些方法更为通用。