推荐系统的去偏差

avatar

Tubi 是一家广告型视频点播 (AVOD) 流媒体公司,为观众提供免费的海量视频内容,包括电影、电视剧、直播新闻和体育赛事。推荐系统自然就成了该服务的关键组成部分。

图片 Tubi 主页 - 机器学习为生成主页的个性化推荐结果提供支持。

推荐系统中的曝光偏差

推荐系统帮助我们从庞大的数万部电影和电视节目库中选择内容推荐给用户,并通过用户行为中获得的反馈来学习。推荐算法通常提供推荐内容的排序列表;之后,用户将做出反馈,例如播放其中的某一视频内容;我们收集此反馈,进一步训练新的模型。因此,当前的推荐结果将影响未来的推荐列表,长此以往,会导致严重的曝光偏差——对用户的推荐结果会逐渐汇聚成一个小集合,这种现象在推荐系统中被称为“信息岛”。更重要的是,这意味着有些视频将永远不会被展示给用户,因此我们也将没有机会知道用户是否会喜欢这些内容。

图片 推荐算法提供推荐内容的排序列表;接着,用户将做出反馈,比如播放其中的某一视频内容;我们收集用户反馈并进一步用于训练新模型。因此,当前的推荐结果将影响未来的推荐列表。

我们利用用户行为(例如点击和浏览数据)生成个性化推荐结果时,需要充分考虑曝光偏差,以避免产生反馈循环问题。例如,在万圣节期间,新用户在推荐内容的列表中观看了一部恐怖片,然后,推荐系统就会为该用户推荐更多的恐怖片,用户也会因此观看更多的恐怖片,使反馈循环问题长期存在。然而,该用户可能对其他类型的内容也感兴趣;因此,我们需要一些方法来发现用户更多的兴趣。

通过这篇博客,我们将呈现 Tubi 解决曝光偏差问题所采取的一些方法。

特征工程

本节介绍利用特征工程来减少系统中曝光偏差的简单方法。推荐系统中许多机器学习模型通常使用内容的流行度作为特征。根据定义,流行度会偏向于那些曝光度高的内容。热门内容有更多被展示的机会,因此即使只有一小部分用户喜欢该内容,由于曝光偏差,这部分内容的流行度也会较高。

如何减少曝光偏差?

一个简单的解决方法是不直接使用流行度作为特征,而是使用基于曝光度标准化后的流行度,例如,使用该内容在多次曝光中所获得的平均流行度(以下简称平均流行度)。但使用该特征时,需要注意的是,对于只有极少数曝光的冷门视频内容,该指标是不稳定的。具体的算法是:

  1. 按流行度对内容进行排序,并将它们分到 X 个桶中,其中 X 是一个超参数。这一步使每个桶拥有整体流行度的 1/X 。

  2. 根据平均流行度对每个桶中的内容进行排序。我们假设每个桶中内容的平均流行度具有相同的可信度,因此可以对桶中内容依照平均流行度来进行排序。

在线实验表明,将这一新功能添加到内容排序后,我们原本会错过的长尾视频内容获得了更多展示机会。下图显示了长尾内容排名的提升。

图片

在图中,每一点表示一个内容。x 轴是流行度排名,流行度排名越低,内容流行度越高。y 轴表示改进的排名。改进的排名是对每个桶中的内容,通过我们上文提到的平均流行度来进行排名计算的。左边是前 300 个热门内容,右边是前 3000 个热门内容。可以看到,无论在哪一个桶中,改进的排名都与原排名之间几乎不存在相关性。这意味着使用改进的排名作为特征,可以为模型提供另一个角度的信息。

利用其他信息来源

本节我们介绍如何利用主页推荐之外的其他信息来源以减少系统中的曝光偏差,例如对内容的点赞数、用户的搜索查询以及搜索中的观看行为。我们以搜索中的观看行为为例,当部分用户的搜索观看记录与他的首页观看记录不同时,我们可以利用搜索观看记录来改进他的主页推荐。

我们用一个真实的例子来说明。下图显示了用户 A 在主页上的观看记录,表明他喜欢看惊悚片和恐怖片。

图片 用户 A 的主页观看记录

但是,该用户也搜索并观看了许多纪录片。下图显示了用户的搜索观看记录。

图片 用户 A 的搜索观看记录

这说明我们的推荐系统可以从用户的搜索历史中受益:除了恐怖片,我们还可以向该用户推荐一些纪录片。更进一步,每当用户需要通过搜索才能找到某些视频内容,也就意味着推荐系统错失了发挥作用的机会。我们基于协同过滤的方法,利用用户的搜索历史作为特征,增强了推荐系统对于用户真正兴趣的捕捉能力。在线实验结果表明,这一附加功能改进了播放和留存指标。

更多信息来源所带来的不同维度的信息,对于减少用户主页推荐的曝光偏差很有帮助。

Exploration 探索

减少曝光偏差的一个关键思想是探索(Exploration),探索的关键是向用户展示某一内容类别的一部分。当用户反馈稀疏时,探索可以帮助减少推荐结果的不确定性。

我们可以使用探索来为新的视频内容寻找受众,也可以发现用户的新兴趣;同样,我们自然也可以使用它来减少曝光偏差,因为探索可以帮助收集用户对于推荐系统无法触及到的内容的反馈。一般而言,探索的成本在短期内是存在的,而且不同的探索方式可能会造成不同的成本,比如糟糕的用户体验、甚至是用户退订。在以下段落,我们主要聚焦于“探索”这一工具为减少曝光偏差提供了哪些简单的解决方案。

我们尝试过的一个简单的想法是在排名模型分数中添加抖动。排名分数通常来自离线模型,而添加进来的探索是在文献中被广泛使用的玻尔兹曼探索。然而,在在线实验中,我们发现了这一尝试会损害整体的用户体验。

另一个实践成功的想法是,增加一个独立的探索模块,不断收集用户的无偏差反馈。我们需要考虑“探索”的成本与收益,虽然新视频内容的表现会因探索而获益,但一旦打破了现有内容的反馈循环并收集拥有不同偏好的用户的反馈,势必会影响一部分用户的使用体验。因此,我们在主页上添加了“ Something Completely Different ”的内容类别,并在上面运行各种探索算法。来自这个类别的反馈对改进其他类别的推荐非常有帮助,我们看到已经有一些实验使用了这一点并取得成功。

图片 "Something Completely Different" 内容类别

Bandits 算法

最后,探索和利用 (Exploration &  Exploitation) 之间的权衡是至关重要的,这让我们可以在确保用户体验不受影响的同时,又能在用户稀疏反馈时收集信息。这种权衡是强化学习或 Bandits 算法设计的核心。这一类算法致力于在“利用现有模型可以呈现的最佳结果“和”探索不太理想的替代方案“之间寻找平衡。我们发现,一位只看恐怖片的用户在探索阶段也会对喜剧等其他类型的视频内容有兴趣。Bandits 探索策略也是冷启动的好方法,冷启动是指将系统最新添加的、没有被模型学习过的视频内容推荐给用户。

这样做的难点在于在探索和利用之间找到最佳权衡点。对于最佳策略利用得过多,会导致没有足够的机会从探索中学习;反之,过多的探索会在一定程度上损害用户的体验。没有一劳永逸的办法,唯有通过一次次的实验,我们才能逐渐接近探索和利用之间的平衡。

我们观察到 Bandits 算法为新用户的内容推荐带来了极大的帮助。对于新用户,我们无法获得历史观看数据,可用的特征也很少,因此推荐系统很容易陷入无休止的反馈循环——即推荐相同的热门内容,并且只从这一小部分内容中学习。Tubi 的新用户 Bandits 模型通过允许更多样化的推荐集让我们摆脱了这个循环,同时借由 Bandits 的探索/利用策略,我们也确保了极致的用户体验。

总结

本文介绍了 Tubi 减少推荐系统曝光偏差的实践方法,这些方法亦可以快速适用于其他系统和其他问题的解决。

如果你也想学习和尝试减少偏差的其他方法, 欢迎关注 Tubi 的技术博客微信公众平台,也欢迎加入 Tubi 机器学习团队,或直接给我们写邮件 jobs.china@tubi.tv

原文链接:code.tubitv.com/reducing-bi…

原文作者:Qiang Chen, Jiayuan Dong, Tal Levy, and Jaya Kawale

译者:Jiayuan Dong, Tubi Machine Learning Engineer

关于 Tubi 机器学习团队

Tubi 数据与机器学习平台简介

机器学习在 Tubi 的应用

关于 Tubi ,你想知道的都在这里了!

Tubi 工程师文化

远程办公的编程模型