标题:Trinity:将多兴趣、长尾兴趣与长期兴趣融为一体
单位:字节
链接:Trinity: Syncretizing Multi-/Long-tail/Long-term Interests All in One(2024.02)
摘要
推荐系统中的兴趣建模一直是改善用户体验的核心课题,多兴趣、长尾兴趣和长期兴趣等典型兴趣建模任务已在大量既有工作中得到研究。然而,其中大多数工作只孤立地考虑某一种兴趣,而忽略了它们之间的相互关系。本文认为,这些任务都受到一种共同的“兴趣遗忘”问题的影响,并且存在一种能够同时缓解该问题的解决方案。我们发现,长期线索可以成为这一方案的基石,因为它既能揭示多兴趣,又能澄清长尾兴趣。受此观察启发,我们在检索阶段提出了一种新颖的统一框架 Trinity,用于解决兴趣遗忘问题,并同时改进多种兴趣建模任务。我们构建了一个实时聚类系统,将物品投影到可枚举的簇中,并在这些簇上计算统计兴趣直方图。基于这些直方图,Trinity 能够识别曝光不足的主题,并在面对新兴热门主题时保持稳定。由于计算开销适中,Trinity 更适合大规模工业场景。由该框架衍生出的检索器已部署在抖音推荐系统中,显著改善了用户体验和留存。我们相信,这些实践经验可以很好地推广到其他场景。
关键词: 兴趣建模;兴趣遗忘;统计方法
1 引言
大规模工业推荐系统每天要处理海量请求,并且需要捕捉每位用户的兴趣。随着日活跃用户数(DAU)以及用户在平台上停留时长的增长,兴趣建模变得越来越困难,也越来越多样化。新出现的问题可以分为以下几类:
- 多兴趣:用户可能对许多主题和话题感兴趣。根据本文提出的聚类系统,在抖音中,大多数用户拥有 10 个以上的感兴趣主题。
- 长尾兴趣:指只吸引小众受众的非热门主题。
- 长期兴趣:主要指用户愿意持续观看的主题,而不是近期热点或新兴趋势。
例如,图 3 中的一位用户在大约六个月前观看了许多游戏和脱口秀视频;在最近一个月,她痴迷于舞蹈和健身主题;如今,她会观看一些科研进展类内容,而经济新闻则是她多年来一直关注的主题。这里提到的所有主题都可以视为多兴趣。游戏、脱口秀、舞蹈和健身属于长期兴趣主题,它们可能偶尔会被系统“遗忘”,但如果再次被推荐,仍然能够吸引她。科研进展是典型的长尾主题,很难吸引所有人,却可能受到相当一部分用户的喜爱,这也是我们关注长尾兴趣的原因。在该例中,科研进展有机会成为用户多兴趣的一部分。
图 1:兴趣之间的互惠关系与 Trinity 的灵感来源。多兴趣、长期兴趣和长尾兴趣相互依赖、彼此促进。详细示例见正文。
本文的核心观点是,多兴趣、长尾兴趣和长期兴趣相互依赖、彼此促进。因此,我们希望同时改进这些兴趣建模任务。如图 1 所示,我们有以下几点深入观察。首先,用户近期的行为序列很容易被少数热门话题主导,因此需要利用长期线索来识别多兴趣中的其他主题。其次,在一个成熟的工业系统中,热门主题已经得到了充分分发,因此我们所关注的多兴趣,本质上更多指向全局长尾主题。例如,在抖音中,大多数用户都能接受新闻和随拍内容,而我们真正需要解决的是如何将书法内容匹配给它的受众。最后,长尾兴趣同样依赖长期线索,因为只有通过长期观察,才能确认用户是否真正对某个主题感兴趣。受这些观察启发,我们考虑同时改进多种兴趣建模任务。
然而,这些兴趣的建模至关重要,却也十分困难。当前系统使用在线学习模型对候选物品进行排序,这些模型采用流式范式训练,天然偏向新到达的样本。因此,当与某些兴趣主题对应的训练样本偶尔缺失时,模型可能会“遗忘”这些主题,从而导致分发效果恶化。现有方法主要致力于修改在线学习框架,引入额外的预测头和记录用户历史行为的特征。然而,这些方法会带来过高的计算开销,而且通常只考虑其中一种兴趣建模任务,忽视了不同兴趣之间的相互关系。
图 2:所提出的 Trinity 框架。(a)训练过程。(b)通过将用户的长期行为序列投影为直方图并采用定制策略,可以捕捉多兴趣。(c)通过比较用户行为与全局簇流行度,可以确认用户对长尾主题的兴趣。(d)训练阶段生成的时间无关嵌入被用于i2i检索。
图 3:一位示例用户的观看历史,其中既呈现了游戏、脱口秀等短期兴趣,也呈现了由虚线连接的经济类长期兴趣。
本文发现,兴趣遗忘问题本质上由在线学习框架自身引起,对其进行修改可能并不能奏效。为此,我们提出了一个基于统计信息的框架 Trinity。Trinity 首先理解长期线索,将用户兴趣汇总为统计直方图,借此可以轻松区分多兴趣、长尾兴趣和长期兴趣。随后,系统通过定制策略选出曝光不足的主题,以改善用户体验。由于 Trinity 建立在长期统计信息之上,它既能稳健地表示多种兴趣,也能抵抗兴趣遗忘问题。
Trinity 由三个独立检索器组成:用于多兴趣的 Trinity-M、用于长尾兴趣的 Trinity-LT,以及用于长期兴趣的 Trinity-L,具体见第 4 节。据我们所知,Trinity 是首个将多种兴趣建模任务融合进统一框架的工作,也是首个创新性地将长度不小于 1000 的长序列线索引入检索阶段的工作。
与只关注单一兴趣建模任务的现有方法相比,Trinity 具有以下显著优势:
- 基于统计直方图,每个感兴趣簇都能得到清晰评估,不会被遗忘或忽略。
- 由于每个物品只会被分配到唯一的索引,计算开销会随着感兴趣主题数量的增加而线性增长,优于现有方法。
- 借助聚类系统,整个分发过程更加可解释,也更易于管理。我们可以进一步设计高级策略,以获得更好的用户体验。
Trinity 能够有效助力工业推荐系统,文中提到的检索器均已在抖音和抖音极速版上线。
综上,本文的主要贡献如下:
- 揭示了多兴趣、长尾兴趣和长期兴趣之间的关系,并论证了它们彼此依赖、相互促进。
- 提出了新颖且统一的 Trinity 框架,可同时改进多种兴趣建模任务。
- 给出了计算开销可控的 Trinity 详细实现,推动了大规模工业推荐系统的发展。
2 相关工作
本节将现有工作归纳为多兴趣、长尾兴趣和长期兴趣三个方向,并讨论本文工作与它们的区别。
近年来,MIND 是多兴趣建模中一种广受关注的方法。它提出使用多个用户表征(本文也称为“头”)从多个领域检索候选物品,并已成为工业应用中的主流方案。ComiRec 进一步考虑了多样性,以改善系统性能。MVKE 使用称为“虚拟核”的子专家网络,捕捉用户在不同任务和主题上的偏好,并将其组合起来输出综合结果。还有一些工作从不同角度研究用户兴趣,例如,有研究探索多尺度时间效应对用户兴趣的影响,另一些研究则将类似思想引入序列推荐场景。还有研究改进了负样本挖掘和路由算法,以解决多兴趣学习中的训练问题。由于这些方法都训练多个用户表征来覆盖用户的多种偏好,本文将其统称为“Multi-U”类方法。上述方法都着眼于修改既有在线学习框架,而本文提出的方法依赖长期统计信息。
长尾物品缺少用户反馈或协同数据,因此许多方法致力于利用多模态信息或图结构改善其表征与预测。也有研究通过主题模型提取产品画像和相似产品,或使用少样本学习实现长尾推荐。需要指出的是,本文并不专门关注长尾物品。长尾兴趣主要指小众主题,但属于这些主题的物品本身并不一定冷门。
在长期兴趣研究方面,有工作将长序列建模中资源消耗最大的部分从完整模型中解耦为独立模块,从而直接改善长序列建模。该方法通过触发事件而非请求来更新用户表征,并支持长度达到数千的序列。捕捉长期兴趣最知名的方法之一是基于搜索的兴趣模型(Search-based Interest Model,SIM)。它会搜索用户过去与当前主题相关的行为序列,作为衡量用户偏好的补充信息,但大多用于排序模型。本文的方法不直接在模型中引入长序列,因为这种做法可能难以扩展;相反,我们借助簇和整体兴趣分布挖掘长期线索。
本文在训练过程中使用 VQ-VAE 将物品分配到索引,并同时构建层次化聚类系统。该方法设置簇嵌入,并允许物品寻找其最近邻。借此,我们可以将数量未知且不断变化的物品投影到可枚举的簇中,进而处理用户行为序列。这类方法的多种变体已广泛应用于信息检索。
3 Trinity 基础框架
本节首先说明 Trinity 的核心思想,并介绍其基础训练框架。如何利用 Trinity 框架改进多兴趣、长尾兴趣和长期兴趣,将在第 4 节详细介绍。
如图 1 所示,我们同时考虑多种兴趣。不同于现有工作,我们认为兴趣建模任务并非彼此孤立;相反,这些兴趣相互依赖、彼此促进。因此,从全局角度统筹考虑会给系统带来显著收益。具体可以从以下三个方面理解。
- 长期兴趣揭示多兴趣。 用户的短期兴趣可能被新兴趋势和不可预测的热点主导,使其行为序列中的物品高度同质化。引入更长的行为序列后,我们能够辨别哪些主题共同构成多兴趣,并获得更全面的用户偏好。
- 多兴趣对长尾兴趣具有价值。 多兴趣覆盖广泛的内容主题,既包含热门话题,也包含小众主题。然而,在成熟的推荐系统中,热门主题的物品(如新闻和游戏)已经能被现有检索与排序阶段充分估计和分发。因此,当我们思考多兴趣时,实际关注的是科学、诗歌等不常见主题。
- 长期兴趣澄清长尾兴趣。 长尾主题只吸引较小范围的受众,而许多播放行为仅源于偶然兴趣。要找出会持续消费这些主题的真正受众,就需要回溯长期行为记录。
至此,不同兴趣之间的关系已经清晰,并启发我们对它们进行统一建模。然而,在在线学习框架中实现这一目标仍然很困难。现有工作一直试图解决兴趣遗忘问题,但在线学习模型必须拟合当前样本,因此不可避免地偏向新到达的样本和占据大多数曝光的热门物品。一旦某些主题的样本变得稀少,对应的兴趣便会逐渐被遗忘。本文将这一现象概括为“兴趣遗忘问题”,而在在线学习框架内缓解它需要投入大量人力。
本文不再修改在线学习框架,而是尝试采用另一种工具:统计信息。从长期行为中提取的统计线索能够清晰地揭示每一个感兴趣主题,并在新兴趋势出现时保持稳定。因此,它可以有效缓解兴趣遗忘问题,并区分多兴趣、长尾兴趣和长期兴趣。具体而言,我们首先建立一个兴趣聚类系统,然后将用户的历史行为投影到该系统中,形成长期行为直方图,最后依据这些直方图实施定制化分发策略。只要搜索长期行为,就能够改善长期兴趣建模;其余两类兴趣则通过以下方式得到改进:
- 按行为次数对直方图降序排序,选择排名前 的簇并进行多样化处理,确保中部簇中的物品不会被头部簇压制,从而提供更加全面的结果并改善多兴趣。
- 对每个全局长尾簇,如果当前用户频繁消费该主题下的物品,就增强该主题的分发。这能将小众主题与其受众相匹配,从而改善长尾兴趣。
从实现角度看,我们需要以下工具:一个可由嵌入构建、并能公平衡量长期行为和近期行为的聚类系统;一个存储系统,用于实时将行为映射到簇中并形成用户直方图;以及一系列分发策略。
图 2(a)展示了 Trinity 的基础框架。训练阶段主要由一个 SIM 头和一个 VQ-VAE 结构组成。对于每个物品,我们首先搜索其 SIM 序列,并分别提取当前物品和序列中行为物品的嵌入,记为 和 ,其中 。对行为序列嵌入进行平均池化,得到用户侧表征:
与此同时,我们准备可学习的主簇 和次簇 ,其中 、,并为它们分别设置嵌入 和 。 和 分别设为 128 和 1024。我们为当前物品搜索 Top-1 最近邻簇,将结果记为 和 ,并对 、 和 三组配对应用二元交叉熵(BCE)损失:
其中,下标 表示一个批次中的样本索引。当用户完整观看视频、与视频发生互动(点赞、分享、关注或评论),或者观看时长超过 10 秒时,。此外,我们加入一些随机负样本,以获得更具判别力的嵌入。
需要注意的是,物品与簇之间的分配关系会随着训练进程通过最近邻搜索实时确定,我们将这些信息写入键值存储,其中键为物品 ID,值为“主簇 ID、次簇 ID”。我们的实现遵循 VQ-VAE 的设计:簇对应的梯度直接传递给物品,而簇嵌入则通过所属物品嵌入的移动平均进行更新。
这里采用两级层次化聚类系统。细粒度的次级层用于选择物品,粗粒度的主级层用于避免主题重复并进行多样化处理,具体示例见第 4.1 节。由于物品嵌入由 SIM 头训练,训练会涉及跨度很大的历史行为记录,因此近期物品与非常“久远”的物品能够同时得到优化和公平衡量。由此,我们获得了一个基于协同信息、随时间变化且不受时间偏置影响的聚类系统;这是多模态特征无法实现的。更重要的是,数量无限且持续增长的物品被离散化为可枚举的簇集合,使簇级统计成为可能。
4 大规模推荐系统中的兴趣建模
上一节介绍了训练过程。本节给出具体且实用的策略,分别解决兴趣遗忘问题,并改善多兴趣、长尾兴趣和长期兴趣建模。需要说明的是,本文只关注检索阶段,原因有两点。一方面,检索器决定提供给排序模型的候选集。如果在这一阶段丢失了某些感兴趣主题,排序模型就无法为改善兴趣建模做任何事情。另一方面,为提高计算效率,检索器通常使用近似最近邻(ANN)搜索系统。在排序模型逐一精确评估每个候选物品的场景中,我们可以通过多样化处理提升某些主题,从而“记住”它们;但在检索阶段很难采用相同思路,因为近似计算从一开始就会舍弃部分候选物品。
4.1 多兴趣
改善多兴趣建模的核心思想,是从用户的统计直方图中选择强度适中但又足够显著的簇。这些簇对应的内容已经被用户消费过,却很容易被模型遗忘。根据每个簇上的行为次数,可以清楚地区分分发充分、分发不足和用户不感兴趣的主题。
如图 2(b)所示,在服务阶段,对于每次请求,我们首先提取用户的长期行为序列,长度为 2500。该序列只保存播放时长不小于 10 秒、被完整观看或发生过互动(点赞、关注、分享或评论)的物品 ID。随后,实时从第 3 节所述的键值存储中读取相应簇 ID,并将其组织为主簇直方图 和次簇直方图 ,每个柱的数值表示第 个主簇或第 个次簇上的行为次数。
只需对直方图进行降序排序,用户的兴趣分布便会清晰显现。例如,某个排序后的直方图为 ,对应索引为 。ID 为 10 的簇是该用户的主要兴趣;本文将具有最强响应的簇定义为“主要兴趣”簇。然而,索引 33 和 100 上也存在显著响应,它们构成了本文重点研究的“多兴趣”。主要兴趣同样属于多兴趣,但既有检索器通常已经对其进行了充分分发。簇 91 和簇 62 被视为探索性兴趣,它们未来可能成为用户的多兴趣或全局长尾兴趣。其他簇则被忽略。
基于这一观察,我们引入一个基于策略的检索器来改善多兴趣建模。首先读取用户过去行为对应的簇 ID:,其中 。在每一对 ID 中,将次簇 ID 作为主簇的子节点,从而得到形如 的结构化数据,其中 表示一对多映射关系。需要注意的是,在训练阶段,每个物品会分别搜索其最近簇,因此主簇和次簇之间只有统计关联。同一个次簇可能出现在不同主簇之下,所以 需要使用双下标。在后续过程中,主簇用于多样化处理,而次簇用于实际分发物品。
首先,我们选择满足以下条件的主簇: 大于阈值 ,且该主簇下每个次簇的 都大于 。然后,为每个主簇随机选择一个次簇。如果簇的数量不足,则从上述主簇中选择 最大的次簇。如果仍然不足,就按行为次数从大到小逐个收集次簇。以上每一步都会移除重复簇。算法 1 总结了该过程;将一个重排模型用于评估所选簇的候选物品后,便形成额外的 Trinity-M 检索器。
算法 1:用于多兴趣的 Trinity 检索器
输入: 结构化数据 ,阈值 、,目标簇数
输出: 次簇集合
- 令 ,。
- 遍历每个 :
- 若 ,且对其所有次簇 均有 ,则随机选择一个次簇 。
- 若 ,则令 。
- 若 ,则从 中随机选择 个簇并返回。
- 再次遍历每个 :
- 若 ,则在尚未进入 的该主簇所属次簇中选择 最大者:。
- 令 。
- 若 ,则从 中随机选择 个簇并返回。
- 按 从大到小对所有次簇 排序。
- 当 时,依次检查排序后的 ;若 ,则将其加入 ,并令 。
- 返回 。
由于模型偏差,例如模型认为簇 A 中的大多数物品都优于簇 B 中的物品,一些位于中部的簇可能会被主要兴趣主题压制,因此在单一双塔检索器中无法获得足够曝光。Trinity-M 则只从每个主簇中选择一个次簇,这相当于进行多样化处理,使系统能够收集互为补充、尚未被遗忘的簇集合。通过“唤醒”这些主题,用户能够重新获得自己的一部分兴趣,从而对系统更加满意。第 5.3 节将展示 Trinity-M 的互补性与全面性,以及它如何显著改善用户体验并提高系统多样性。
Trinity 框架通过将行为投影到簇中来引入长序列线索,同时避免直接在在线学习模型中使用长序列。检索器需要处理数十亿候选物品,很难像排序模型那样采用 SIM。据我们所知,Trinity 是首个在检索阶段成功使用长度不小于 1000 的长序列线索的工作。
本文将大多数通过训练多个用户表征(即多个头)并搜索多组候选结果来捕捉多兴趣的现有方法统称为“Multi-U”类方法,其中最知名的包括 MIND、ComiRec 和 MVKE。表 1 比较了 Trinity-M 与 Multi-U 类方法的优缺点。
表 1:Multi-U 类方法与 Trinity-M 的比较。
- 灵活性。 灵活性衡量能否灵活调整所关注的主题。Trinity-M 的策略可以定制,因此很容易扩展纳入考虑的主题、跳过头部簇或实现主题采样。相比之下,如果不训练新模型,Multi-U 方法没有简便的解决方案。
- 效率。 效率描述纳入更多主题时,服务成本如何增长。对于 Multi-U 方法,每增加一个头,就需要额外执行一次用户到物品搜索。然而,如图 4 所示,同一物品可能被多个头重复检索。因此,头的数量越多,每增加一个头所能带来的新增候选物品越少。Trinity-M 中的物品则以确定且互斥的方式分配给不同簇。增加簇时,只会带来补充候选物品;寻找更多感兴趣簇所产生的额外开销始终线性增长。
- 可解释性。 可解释性描述特定头或簇所代表的语义。Multi-U 方法会约束不同头学习不同样本,但我们很难控制训练过程,也无法指定要优化的特定主题。在 Trinity-M 中,簇本身具有明确语义,具体见第 5.1 节,因此我们知道系统正在考虑哪些主题。
- 可扩展性。 可扩展性衡量方法能否推广到其他场景。Multi-U 方法很少为长尾兴趣或长期兴趣建模任务提供解决方案,而 Trinity 可以同时改善这些兴趣建模问题,后文将对此进行说明。
- 可替代性。 可替代性指所提出的方法能否取代现有检索器。在这方面,Multi-U 方法可以作为替代方案,因为它的多个头很容易覆盖单个用户到物品模型的候选结果。然而,Trinity 建立在长期统计信息之上,新兴物品或主题难以及时凸显。因此,我们将 Trinity-M 用作额外检索器,只发挥其补充作用。
图 4:在 Multi-U 方法中,每个用户表征(黄色虚线圆)都会独立搜索候选物品,因此某些物品(实心或空心圆)可能被重复检索,灰色越深表示被检索的次数越多。随着头的数量增加,冗余计算开销会大幅增长。而在 Trinity 中,物品以互斥方式分配,每个物品最多只会被检索一次。
4.2 长尾兴趣
对于长尾兴趣,我们的思路是在簇的层面比较个人兴趣分布与全局兴趣分布。首先,需要自动识别或定义全局长尾簇;然后检查用户的统计直方图,判断用户是否在这些簇上存在显著响应。满足条件的簇会被收集起来,形成一个额外检索器。
我们采用类似的流式频率估计方法,但将其应用于簇而非物品。具体而言,簇 通过哈希函数 映射;在训练流中出现该簇时,其出现间隔按下式计算:
其中, 记录该簇上一次出现的时间戳, 表示最近一次出现间隔, 则是其全局移动平均值。图 2(c)展示了这一过程。
一般来说,可以根据出现间隔较大的簇识别全局长尾主题。然而,出现间隔较大的簇并不只由长尾主题构成,其中还存在一些“并置簇”:它们代表热门主题,却由于训练过程的偶然性只包含少量物品。我们移除物品数量少于 的簇,从而有效避免并置簇。在实现中,剔除并置簇后,我们按出现间隔排序,将排名前 600 的簇定义为长尾簇,它们覆盖约 22% 的曝光。
定义长尾簇后,我们检查用户的统计直方图。如果某个簇上的行为次数超过 ,就将其视为用户对该长尾兴趣的“可信”响应,并纳入候选集合。随后引入一个采样器选择 个簇,每个簇被采样的概率为:
超参数 用于调节分布,例如 时形成均匀分布; 则是平滑项。在实现中,我们令 、。与均匀随机采样器相比,该采样器在用户体验和多样性方面表现更好,因为属于高响应簇的物品更有可能被用户消费,详见第 5.2 节。与 Trinity-M 重复的簇会预先移除。
算法 2 总结了上述过程。收集次簇后,我们将其中的物品送入重排模型,以获得最终检索结果。该检索器记为 Trinity-LT。
算法 2:用于长尾兴趣的 Trinity 检索器
输入: 、全局出现间隔 、阈值 和 、候选长尾簇数 、目标簇数
输出: 次簇集合
- 令 ,。
- 遍历每个簇 ;若 包含不少于 个物品,则令 。
- 按 从大到小对 中的簇排序,选择排名前 的簇作为新的 。
- 遍历每个次簇 ;若 、 且 ,则令 。
- 使用上述采样器从 中选择 个簇。
- 返回 。
4.3 长期兴趣
如第 3 节所述,SIM 头会同时优化用户很久以前的行为物品和当前物品。因此,我们认为生成的物品嵌入能够表征长期线索,并据此构建一个物品到物品检索器来捕捉用户的长期兴趣。
如图 2(d)所示,我们训练一个预排序模型,从用户的历史行为序列中选择种子物品。为捕捉全面的兴趣,任何播放时长不小于 10 秒、完整观看或发生互动(点赞、分享、评论或关注)的反馈都被视为正样本。该模型采用传统双塔架构,并加入随机负样本。
对用户的行为物品进行排序后,序列长度不超过 2500,我们将这些物品投影到 Trinity 聚类系统中,并限制同一个簇的候选物品不超过 个,以实现多样化。随后,从排名前 的物品中随机选择 个作为种子,并使用 Trinity 嵌入计算相似度,搜索相似物品。与 Trinity-M 和 Trinity-LT 类似,搜索到的物品会被送入重排模型,形成 Trinity-L 检索器。需要指出的是,Trinity-M 和 Trinity-LT 已经利用了长期线索,因此 Trinity-L 只是一个轻量级的补充扩展。
4.4 实现细节
所提出的三个检索器会选择簇,并聚合簇内所属物品,但此时仍会留下约一万到十万个候选物品,对后续排序阶段而言数量仍然过大。因此,我们使用重排模型将候选集缩减至约 1000 个。重排模型采用双塔架构,但在服务阶段不使用 ANN,而是对候选物品进行精确打分和排序。
重排模型的目标是预测视频播放时长。具体而言,观看时长不超过 2 秒的样本为负样本。对于其余正样本,我们使用播放时长对批内 Softmax 损失进行加权,并将播放时长截断为最多 5 分钟。事实上,这种模型已经作为名为“停留时长检索器”的主要检索器投入使用,本文只是复用它来充当额外检索器的重排模型。
5 实验
本节展示 Trinity 的性能。首先,我们对其聚类系统进行可视化分析,说明所提出模型的一些有趣性质。随后,在大规模工业场景中展示这些额外检索器的在线性能,并对其展开详细分析,说明它们如何改善兴趣建模任务和用户体验。
5.1 Trinity 的聚类系统
图 5 可视化了 Trinity 各簇中的部分物品。同一行的物品具有相同的次簇 ID,我们使用“簇 ID、物品 ID”来指代它们。Trinity 聚类系统与从人类视角构建的直观聚类系统(下文称为标签系统)之间,最重要的区别在于聚类方式。
例如,第一行中的所有物品都围绕亲子关系,而不是通常意义上的育儿,这种分类方式从人类视角看并不常见。这些物品来自新闻、法律等多个标签,甚至最后一个示例讨论的只是一种虚构的、现实中并未发生的亲子关系。B 簇中也能观察到类似现象:无论是真人还是动画形象,其中的物品都与英俊男性有关。也就是说,一个簇的主题可能聚焦于非常规话题,并覆盖多个标签维度。
第三行展示了更常见的分类示例:三个物品都与教育有关,并分别讲解职业、经济和育儿等子主题的知识。最令人惊讶的示例来自最后一行。这些物品展示了三个地方的景点和美食,而这些地方位于同一个省。因此,还可以总结出 Trinity 聚类的另一项性质:其分类方式会随上层主题而变化。在教育主题下,它按学科划分物品;在旅游主题下,则按地理区域划分物品。
图 5:Trinity 簇中所属物品的可视化。同一行的物品具有相同的secondary cluster ID。
5.2 在线实验
我们进行了在线 A/B 实验,并给出抖音和抖音极速版大规模工业推荐系统上的结果。如前所述,我们只是将 Trinity-M、Trinity-LT 和 Trinity-L 三个额外检索器加入完整系统,并报告其性能。
指标。 推荐算法的最终目标是改善用户体验,而用户体验通常使用日活跃用户数(DAU)衡量。然而,DAU 很难在 A/B 实验中直接观察,因此需要替代指标。本文采用平均活跃天数(Average Active Days,AAD)作为描述用户体验的代理指标。当用户首次进入平台时,会被随机分配到对照组或实验组;随后统计该用户在实验期间的活跃天数,并计算两组之间的平均差异。
对于大多数应用而言,DAU 是最关键的指标。但在抖音中,许多用户几乎每天都会登录,因此 AAD 无法充分描述他们的体验。为解决这一问题,我们进一步提出平均活跃小时数(Average Active Hours,AAH),其计算方式与 AAD 类似,但统计的是用户活跃的小时数。多兴趣和长尾兴趣建模预期会改善多样性,因此我们还引入平均标签数(Average Tags,AT),用于统计用户消费的所有物品覆盖了多少个标签。此外,我们也使用观看时长作为辅助指标。
表 2:在线 A/B 实验结果,指标包括观看时长、平均活跃天数(AAD)、平均活跃小时数(AAH)和平均标签数(AT)。
表 2 展示了在线性能,其中只列出具有统计显著性的指标。我们对 Multi-U 方法进行了全面验证,但没有任何一种方法能在可接受的计算开销内取得显著改进。为简洁起见,文中只报告使用 6 个服务头的 MIND 结果。其成本远超预算,因此并不可行。一个出乎意料的观察是,MIND 降低了多样性,这意味着它的各个头会重复检索某些热门主题。
相比之下,Trinity-M 在有限开销下显著提升了抖音和抖音极速版上的 AAD 与 AAH,并已成功部署。我们还对 Trinity-LT 进行了消融实验,其中“均匀采样”表示使用均匀分布的采样器选择簇。均匀采样组没有对用户体验产生正向影响,多样性提升也较小,这验证了响应更强的簇所包含的物品更有可能被用户消费。Trinity-L 同样显著提高了抖音和抖音极速版的 AAD 与 AAH。
另一个有趣的观察是,与 Trinity-M 相比,Trinity-L 对 AAH 的贡献小得多,但其 AAD 提升具有竞争力。这说明,多兴趣建模主要惠及高活跃用户,即过去一个月内活跃超过 20 天的用户。这符合我们的预期,因为高活跃用户更有可能发现新的感兴趣主题。
5.3 Trinity-M 的全面性与互补性
图 6 可视化了停留时长检索器、MIND 和 Trinity-M 为两位用户检索出的主题。这里只展示排名靠前的结果,因为只有这些候选物品能够进入后续排序阶段。MIND 和 Trinity-M 同样可以检索出图中位于其左侧的主题,但为了简洁,图中省略了这些重复部分。
对于第一位用户,停留时长检索器只提供体育和游戏等热门主题。MIND 额外检索出电视剧和旅游等主题,其中书法是一个相当正面的案例,因为它属于长尾主题。除此之外,Trinity-M 还提供了更多主题,如历史、天文和农业。Trinity-M 检索到的簇不仅更加全面,而且更倾向于长尾主题。
第二位用户的情况则大不相同。该用户的兴趣主要来自游戏、育儿和新闻等热门主题。令人意外的是,即便是热门主题,单一的停留时长检索器也无法全部检索出来,而 Trinity-M 提供了新闻和动画等互补结果。最后一列中的“游戏”与第一列中的“游戏”并不相同,前者是描述主机游戏的子类别。在抖音中,根据 Trinity 聚类系统的衡量,大多数用户都拥有 10 个以上感兴趣的次簇,因此只有 Trinity-M 能够满足我们建模多兴趣的需求。
图 6:多个检索器的Top检索结果。方框区分了两位用户;对于 MIND 和 Trinity-M,仅展示其补充的主题。
5.4 哪些内容受益于 Trinity-LT?
Trinity-LT 的动机是改善全局长尾主题的分发。在实现中,我们使用 Trinity 自身提供的分类体系。本节则改用主要来自人类视角的标签系统,验证长尾主题的分发效果。根据实践经验,当物品的预估得到改善时,其长期曝光通常会显著增加,反之亦然。因此,只需检查 Trinity-LT 引起的曝光分布变化,就可以验证它对长尾兴趣建模的影响。
表 3:Trinity-LT 引起的曝光分布变化。
表 3 展示了上述曝光分布变化,其中 VV(Video View,视频观看量)表示特定主题的曝光。得到提升的典型主题包括金融、法律、摄影和职业。在我们的平台上,它们都被视为小众主题。需要注意的是,这些结果是在整个市场范围内计算的,而在 Trinity-LT 自身产生的流量中,这些主题获得的提升更加显著。相反,热门主题占据的曝光有所减少。因此,Trinity-LT 能够将小众主题匹配给对应受众,并在整体上抑制热门主题,符合我们的预期。
5.5 Trinity-L 的种子分布
本节分析 Trinity-L 的性质。由于用户长度为 2500 的历史行为序列中,每个物品都有可能被选作种子,我们预期 Trinity-L 会检索到时间更早的种子。与现有物品到物品检索器相比,Trinity-L 中来自 7 至 15 天前的种子多 67%,来自 15 至 30 天前的种子多 28%。现有检索器通过规则从近期行为中选择种子,并采用传统在线学习模型的嵌入。
在实验中,Trinity-L 为中等活跃用户,即过去 30 天内活跃超过 10 天但少于 20 天的用户,提供了时间最早的种子,并在该用户群体上取得显著的 AAD 提升。这表明,更精细的长期兴趣建模能够带来更好的用户体验,而 Trinity-L 确实捕捉了长期线索并改善了用户体验。这里的“更精细”依赖 Trinity 嵌入,因为如果不使用这种嵌入,即便采用长期种子,也无法获得显著的 AAD 提升。
6 结论
本文关注检索阶段的多兴趣、长尾兴趣和长期兴趣建模。我们发现,在线学习框架难以解决普遍存在的兴趣遗忘问题,并提出了一个统一的、基于统计信息的框架 Trinity 来应对该问题。基于一个利用协同信息且随时间变化的聚类系统,Trinity 针对三类兴趣分别衍生出 Trinity-M、Trinity-LT 和 Trinity-L 三个检索器。Trinity-M 和 Trinity-LT 支持定制策略,能够检索目标主题;Trinity-L 则恢复了一些已被遗忘的感兴趣主题。所有这些检索器均已部署在抖音和抖音极速版,并显著改善了用户体验。我们认为,长期统计信息能够直接缓解兴趣遗忘问题,非常适合大规模工业系统。