谷歌:Transformer在音乐推荐中的实践
大模型的输入并不一定只是文本token序列,它也可以是一切需要提取前后Token相关性的场景。
近日,谷歌工程师Anushya Subbiah和Vikram Aggarwal在谷歌官方技术博客刊载他们将Transformer应用到音乐推荐的实践分享。他们提出了一种音乐推荐系统,该系统使用 Transformer 模型来更好地理解基于当前用户上下文的用户操作序列行为特性进而提升推荐体验。
用户有比以往任何时候更多的选择来收听音乐。流行的服务拥有庞大而多样的类目(catalog)。例如,YouTube 音乐类目在全球拥有超过 1 亿首歌曲。因此,类目推荐是这些产品的核心部分。推荐系统使物料类目(item catalog)变得有意义,并且对于调整类目以满足用户的口味和需求至关重要。在提供推荐的产品中,用户对曲目的操作——例如 跳过,喜欢 或 不喜欢 ——提供了关于用户偏好的重要信号。观察和学习这些行为(action)可以获得更好的推荐系统。在YouTube Music,利用这些反馈对于理解用户的音乐品味至关重要。
考虑一个场景,即用户通常喜欢慢节奏的歌曲。当播放快节奏的歌曲时,用户通常会跳过它。然而,在健身房进行锻炼时,他们喜欢更快节奏的音乐。在这种情况下,我们希望继续从他们以前的历史中学习以理解他们的音乐偏好。同时,我们希望在健身时推荐音乐时忽略先前跳过的快节奏歌曲。
下面我们用图来解释用户的音乐聆听体验,其中音乐曲目显示为条目,用户的操作显示为下面的文本。在不考虑更广泛上下文的当前推荐系统中,我们预测用户会跳过一首快节奏的歌曲,从而降级一个可能相关且有价值的歌曲。
下图显示了与之前相同的用户旅程,但在不同的情况下,其中快节奏音乐可能更相关。我们仍然利用他们以前的音乐收听历史,同时推荐接近他们平常音乐收听习惯的快节奏音乐。实际上,我们正在学习哪些先前的操作在当前音乐排序任务中是相关的,哪些操作是不相关的。
一个典型的用户将执行数百次 喜欢 ,不喜欢 和 跳过 操作,并且这序列的输入数据虽然信息丰富,但很快变得难以管理。为了增加这种复杂性,用户执行的操作数量不同。虽然典型用户可能有数百次操作,但用户行为可能在少量操作和大量操作之间变化,一个好的排序系统必须能够灵活处理不同大小的输入。
在这篇文章中,我们讨论了如何应用 transformers,它们非常适合处理输入数据的序列,以改进 YouTube Music 中的推荐系统。该推荐系统包括三大关键阶段: 项目检索,项目排序和过滤。先前的用户操作通常作为输入特征添加到排序模型中。我们的方法使用了从生成模型中适应的 Transformer 架构来理解用户行为的顺序特性,并将其与个性化排序模型结合。使用 transformers 根据当前用户上下文集成不同的用户操作有助于直接将音乐推荐引导到用户的当前需求。对于已登录的用户,这种方法允许我们在不明确识别用户历史记录中哪些对排序任务有价值的情况下纳入用户的历史记录。
检索,排序和过滤
在现有模型中,很难识别哪些用户操作与用户的当前需求相关。要理解这些模型,我们需要看典型的推荐系统。这些系统通常设置为三个不同的阶段。首先,检索 系统从大型语料库中检索数千个相关item(文档,歌曲等)。其次,排序系统 对检索结果进行评估,以便更符合和重要用户需求的项目获得更高的分数。排序的主要复杂性来自于概念之间的价值判断,如相关性,重要性,新颖性,并为这些模糊概念分配数值。最后,过滤 阶段按分数对排序列表进行排序,并将排序后的列表减少为显示给用户的简短列表。在设计和部署排序模型时,从用户可能执行的数百或数千个操作中手动选择并应用相对权重是非常困难的。
Transformers 理解序列
Transformers 非常适合于需要理解输入数据序列的一类问题。虽然 transformers 已经用于改进排序功能,但之前的方法并未关注用户行为: Transformer 模型如 RankFormer 使用项目候选者(而不是用户操作)作为输入,经典语言transformers 如 BERT用于排序语言输出,或者 BERT-like 模型用于推荐,如 Bert4Rec。
Transformer 架构由自注意力层组成,能够理解顺序输入。Transformer 模型在翻译或分类任务中展现了惊人的性能,即使在输入文本模棱两可的情况下也是如此。自注意力层捕捉句子中文本单词之间的关系,这表明它们也可能解决用户行为之间的关系。transformers 中的注意层学习输入(tokens)之间的注意权重,这类似于输入句子中文单词之间的关系。
这就是我们如何使用 Transformer 架构来编码 YouTube Music 上的用户行为。在上述涉及快节奏音乐的用户旅程中,我们看到了一些操作比其他操作重要性较低。例如,当用户在健身房听音乐时,用户可能更喜欢通常会跳过的高能量快节奏音乐,因此相关操作(例如在本示例中的跳过操作)应获得较低的注意权重。然而,当用户在其他环境中听音乐时,用户的操作应得到更多的关注。应根据用户执行的活动来确定应用于音乐上下文和用户音乐历史的注意权重。例如,当用户在健身房时,他们可能会听更快节奏的音乐,但不会离他们平常听的音乐太远。或者当他们在开车时,他们可能更喜欢探索更多新音乐。
Transformers 在 YouTube Music 中的排序应用
我们的架构将 Transformer 与现有排序模型结合,以学习最好地结合用户操作与聆听历史的综合排序(见下图)。在此图中,信息从底部流向顶部: Transformer 的输入显示在底部,产生的排序分数显示在顶部。“item”在这里是我们希望排序的音乐曲目,目标是为给定的每个音乐“item”生成一个排序分数,并将其他信号(也称为特征)作为输入提供。
联合音乐推荐任务中的 Transformers 和 Ranker
以下是描述每个时间步骤的用户操作的信号:
操作意图: 中断音乐曲目,选择要收听的音乐曲目,自动播放。
行动的显著性: 播放了音乐曲目的比例,距离上一次用户操作的时间。
其他元数据: 艺术家,音乐的语言。
音乐曲目: 与用户操作对应的音乐曲目标识符。
与用户操作对应的音乐曲目用称为曲目嵌入的数字向量表示。此音乐曲目嵌入用作 Transformer 和现有排序模型的输入。用户操作信号如意图和元数据被转换为与曲目嵌入长度相同的向量。这种操作称为投影,使我们可以通过简单地添加两个向量: 用户操作信号和曲目嵌入来结合这些信号,生成 Transformer 的输入向量(称为 tokens)。提供给 Transformer 的 tokens 用于评分检索的音乐项目。考虑用户的历史时,我们包括以前的用户操作和用户当前正在收听的音乐,因为两者都捕捉了有价值的用户上下文。来自 Transformer 的输出向量与现有排序模型输入结合,使用多层神经网络。Transformer 与排序模型共同训练,以实现多个排序目标。
离线分析和现场实验表明,使用这种 Transformer 显著提高了排序模型的性能,导致跳过率降低和用户听音乐时间增加。跳过较少频繁表明平均而言,用户更喜欢推荐。会话时间增加表明用户对整体体验更满意。这两个指标表明用户对 YouTube Music 的满意度有所提高。
未来工作
我们看到两个主要的机会来建立在这项工作的基础上。第一个机会是在推荐系统的其他部分(例如检索模型)中适应该技术。我们还在探索如何将先前排序模型中使用的各种非顺序特征作为输入。目前,这些在 Transformer 阶段后被组合,我们预测在 Transformer 内部结合它们将允许在顺序特征(如用户操作)和非顺序特征之间实现改进的自注意力,例如艺术家受欢迎程度,用户语言,音乐受欢迎度等。
原文链接: https://research.google/blog/transformers-in-music-recommendation/
本文转载自 AI工程化,作者: ully