关于网易云音乐冷启动技术的推荐系统

PHPz
发布: 2023-11-14 08:14:10
转载
979 人浏览过

关于网易云音乐冷启动技术的推荐系统

一、问题背景:冷启动建模的必要性和重要性

关于网易云音乐冷启动技术的推荐系统

作为一个内容平台,云音乐每天都会有大量的新内容上线。虽然相较于短视频等其他平台,云音乐平台的新内容数量相对较少,但实际数量可能远远超出大家的想象。同时,音乐内容与短视频、新闻、商品推荐又有着显着的不同。音乐的生命周期跨度极长,通常会以年为单位。有些歌曲可能在沉寂几个月、几年之后爆发,经典歌曲甚至可能经过十几年仍然有着极强的生命力。因此,对于音乐平台的推荐系统来说,发掘冷门、长尾的优质内容,并把它们推荐给合适的用户,相比其他类目的推荐显得更加重要

冷门、长尾的item(歌曲)由于缺乏用户交互数据,对于主要依赖行为数据的推荐系统来说,想要做到精准分发是非常困难的。理想情况是允许拿出一小部分流量做探索分发,在探索中积累数据。但是,线上的流量又十分珍贵,探索往往容易破坏用户体验。而推荐作为直接对业务指标负责的角色,不允许我们为这些长尾 item 做过多不确定的探索。因此,我们需要做到从一开始就能较为精准地找到 item 潜在的目标用户,也就是零交互记录 item 冷启动。

二、技术方案:特征选取、模型建模

接下来分享云音乐采用的技术方案。

关于网易云音乐冷启动技术的推荐系统

核心问题是如何找到冷启动项目的潜在目标用户。我们将问题分为两个部分:

在没有用户点击播放的情况下,冷启动项目还有哪些有效的信息可以作为特征帮助我们进行分发?这里我们采用了音乐的多模态特征

如何利用这些特征来做好冷启动分发建模?针对这一点,我们将分享两个主要的建模方案:

  • I2I建模:自引导对比学习增强冷启算法。
  • U2I建模:多模态 DSSM 用户兴趣边界建模。

关于网易云音乐冷启动技术的推荐系统

重新写成中文: 歌曲本身是一种多模态信息,除了语种、曲风等标签信息外,歌曲的音频和文本(包括歌名和歌词)中包含了丰富的信息。理解这些信息,并发现它们与用户行为之间的关联性,是成功进行冷启动的关键。目前,云音乐平台采用了CLIP框架来实现多模态特征表达。对于音频特征,首先采用一些音频信号处理方法,将其转换为视频领域的形式,然后使用序列模型如Transformer进行特征提取和建模,最终得到一个音频向量。对于文本特征,采用BERT模型进行特征提取。最后,使用CLIP的自监督预训练框架,将这些特征进行序列化,得到歌曲的多模态表示

对于多模态建模,业界有两种做法。一种是将多模态特征放到业务的推荐模型中进行端到端的一阶段训练,但这种方法的成本较高。因此,我们选择了两阶段的建模。首先进行预训练建模,然后将这些特征输入到下游业务的召回模型或精排模型中进行使用。

关于网易云音乐冷启动技术的推荐系统

如何将一首没有用户交互行为的歌曲分发给用户呢?我们采用的是间接建模方案:把歌曲到用户(I2U)问题转化为歌曲-相似歌曲-用户(I2I2U)问题,即先找到与这首冷启动歌曲相似的歌曲,然后这些相似的歌曲与用户有一些历史交互记录,例如收藏等比较强的信号,可以找到一批目标用户。然后将这首冷启动歌曲分发给这些目标用户。

关于网易云音乐冷启动技术的推荐系统

具体的做法如下,首先第一步是监督学习的任务。在歌曲特征方面,除了刚才提到的多模态信息外,还包括歌曲的标签信息,如语种、曲风等,以此来帮助我们进行个性化建模。我们将所有特征聚合到一起,输入到一个编码器中,最终输出歌曲向量,每个歌曲向量的相似度可以通过向量内积来表示。学习的目标是基于行为计算出的I2I的相似度,即协作过滤的相似度,我们在协同过滤数据的基础上加了一层后验校验,即基于I2I推荐后,用户反馈效果较好的一对项目对作为学习的正样本,以确保学习目标的准确度。负样本采用全局随机采样构建。损失函数采用BPR损失。这是推荐系统中非常标准的CB2CF的做法,即基于歌曲的内容、标签信息去学习歌曲在用户行为特征上的相似度

关于网易云音乐冷启动技术的推荐系统

在上述方法的基础上,我们引入了对比学习作为第二步的迭代。我们之所以选择引入对比学习,是因为在这一套流程学习中,我们仍然使用CF数据,并且需要通过用户的交互行为来进行学习。然而,这样的学习方法可能导致一个问题,即学习到的物品会存在“热门物品学得多,冷门物品学得少”的偏差。虽然我们的目标是从歌曲的多模态内容到歌曲的行为相似性进行学习,但在实际训练中发现仍然存在热门和冷门的偏差问题

因此我们引入了一套对比学习算法,旨在增强冷门 Item 的学习能力。首先,我们需要有一个 Item 的表征,这个表征是通过之前多模态 encoder 学习得到的。然后,对这个表征进行两个随机变换,这是 CV 中一些常见的做法,在特征上做随机的 mask 或者加噪。由同一个 Item 产生的两个经过随机变化的表征被认为是相似的,由不同Item 产生的两个表征被认为是不相似的,这样的对比学习机制是对冷启动学习的数据增强,通过这样的方式生成对比学习知识库样本对。

关于网易云音乐冷启动技术的推荐系统

在特征增强的基础上,我们还加入了关联分组机制

重写后的内容如下: 关联分组机制:首先计算每对特征之间的相关性,即维护一个相关性矩阵,并在模型训练过程中更新该矩阵。然后根据特征之间的相关性将特征分为两组。具体操作是,随机选择一个特征,将与该特征最相关的一半特征放入一组,将剩余的放入另一组。最后,对每组特征进行随机变换,从而生成对比学习的样本对。这样,每个批次内的N个项目将生成2N个视图。来自同一项目的一对视图作为对比学习的正样本,来自不同项目的一对视图作为对比学习的负样本。对比学习的损失采用信息归一化交叉熵(infoNCE),并与前面监督学习部分的BPR损失相结合,作为最终的损失函数

关于网易云音乐冷启动技术的推荐系统

线上部署和推理流程:在离线训练完成后,对所有现有歌曲构建向量索引。对于一个新的冷启动项目,通过模型推理得到它的向量,然后从向量索引中检索出与之最相似的一些项目,这些项目是过去的存量项目,因此有一批与它们有过历史交互行为的用户(如播放、收藏等),将这个需要冷启动的项目分发给这批用户,完成对该项目的冷启动

关于网易云音乐冷启动技术的推荐系统

我们对该冷启动算法进行了评估,包括离线和线下指标的评估,取得了非常好的效果,如上图所示,冷启动模型计算得到的歌曲表征对不同曲风的歌曲可实现优秀的聚类效果。部分成果已有公开论文发表(Bootstrapping Contrastive Learning Enhanced Music Cold-Start Matching)。在线上,该冷启动算法在找到更多的潜在目标用户(+38%)的同时,还实现了冷启动item 的收藏率(+1.95%)、完播率(+1.42%)等业务指标的提升。

关于网易云音乐冷启动技术的推荐系统

我们进一步思考:

  • 在上述 I2I2U 的方案中,未使用任何用户侧特征。
  • 如何引入用户特征帮助 Item 冷启动?

关于网易云音乐冷启动技术的推荐系统

U2I 冷启动方案采用多模态 DSSM 建模方法。该模型由一个 ItemTower 和一个 UserTower 组成。我们将之前歌曲的多模态特征继承到 ItemTower 中,用户塔创建了一个常规的用户塔。我们对用户序列进行了多模态的学习建模,模型训练基于全量的item 空间,无论是冷门还是热门歌曲,都会作为样本去训练模型。推理时,只对圈选好的新歌或冷门歌曲池进行推理。这样的做法与之前一些双塔方案类似:对于热门的item,构建一个塔,对于新的或冷门的 item,构建另一个塔来处理。然而,我们更独立地处理了常规的 item 和冷启动的 item。我们为常规的 item 使用常规的召回模型,而对于冷门的 item,则使用专门构建的 DSSM 模型

关于网易云音乐冷启动技术的推荐系统

由于冷启动的 DSSM 模型只用于对冷门或新歌曲进行推理,我们发现对用户的 BIAS 进行建模非常重要,因为我们不能保证所有用户都喜欢冷门或新的 Item。候选集本身是一个非常大的池子,我们需要对用户 Item 进行建模,因为某些用户可能偏爱热门Item,而推荐池中可能缺少他喜欢的 Item。因此,在传统方法的基础上,我们建立了一种称为“兴趣边界”的塔来对用户的偏好进行建模。利用兴趣边界将正负样本分开,训练时,使用兴趣边界分数划分每个用户的正负样本;推理时,比较物品得分和用户兴趣边界得分来决定是否推荐该物品。训练时,我们使用兴趣边界向量和用户兴趣向量进行内积计算来得到边界的表征向量。在上图 loss 基础上,使用传统二分类的交叉熵做建模。负样本会将用户兴趣边界抬高,而正样本会将用户兴趣边界压低,最终,训练后会达到一个平衡状态,用户的兴趣边界将正负样本分开。在线上应用时,我们根据用户的兴趣边界来决定是否将冷门或长尾的 Item 推荐给该用户。

三、总结

关于网易云音乐冷启动技术的推荐系统

最后做一个总结。云音乐推荐的多模态冷启建模主要工作包括:

  • 特征方面,采用了 CLIP 预训练框架下对多模态进行建模。
  • 建模方案上采用了两种建模方案,I2I2U 间接建模和冷启动多模态 DSSM 直接建模。
  • Loss & 学习目标上,Item 侧引入了 BPR & 对比学习,User 侧兴趣边界增强冷门 Item 学习和用户学习。

未来的优化主要有两个方向。第一个方向是通过内容和行为特征的多模态融合建模。第二个方向是对召回和排序进行全链路优化

四、问答环节

Q1:音乐冷启动的核心指标是什么?

A1:我们会关注多方面的指标,其中比较重要的是收藏率和完播率,收藏率=收藏 PV/播放 PV,完播率=完整播放的 PV/播放 PV。

Q2:多模态特征是端到端训练还是预训练出的?第二步对比视图生成时,输入 x 具体是什么特征?

A2:我们目前采用的方案是基于 CLIP 框架进行预训练,并利用预训练得到的多模态特征来支持下游的召回和排序业务。我们的预训练过程是分为两个阶段进行的,而不是端到端的训练。虽然从理论上来说,端到端的训练可能效果更好,但相应地,对机器的要求和成本也更高。因此,我们选择预训练这个方案,这也是出于成本方面的考虑

x表示歌曲的原始特征,包括歌曲的音频、文本多模态特征以及语种曲风等标签类特征。这些特征经过分组和两个不同的随机变换F’a和F’’a得到x’和x’’。f是编码器,也是模型的主干结构,g加在编码器输出之后的一个头部,仅用于对比学习部分

Q3:对比学习训练时两组增强的塔的 embedding 层和 DNN 都是共享的吗?为什么对比学习对于内容冷启动有效,是会专门针对非冷启动内容做负采样吗?

A3:模型始终只有一个编码器,也就是一个塔,所以没有参数共享的问题

关于为什么对冷门的物品有帮助,我这样理解,不需要对冷门物品进行额外的负采样等工作。实际上,仅仅在监督学习的基础上学习歌曲的嵌入表示可能会导致偏差,因为学习的是协同过滤的数据,会导致偏好热门歌曲的问题,最终嵌入向量也会有偏差。通过引入对比学习机制,在最终的损失函数中引入对比学习的损失,可以校正学习协同过滤数据的偏差。因此,通过对比学习的方式,可以改善向量在空间上的分布,而不需要对冷门物品进行额外处理

Q4:兴趣边界那里是多目标建模吗?看起来又不太像,可以介绍一下 ⍺ 和 p 这两个量吗?

A4:多模态DSSM建模中包含一个ItemTower和一个UserTower,然后在UserTower的基础上,我们对用户特征额外建模了一个塔,称之为兴趣边界塔。这三个塔分别输出一个向量。在训练时,我们会对物品向量和用户向量进行内积,得到物品得分,然后将用户向量和用户的兴趣边界向量进行内积,表示用户的兴趣边界得分。参数⍺是一个常规的样本加权参数,用于平衡正负样本对损失的贡献比例。p是物品最终得分,计算方式为将物品向量和用户向量的内积得分减去用户向量和用户兴趣边界向量的内积得分,并通过sigmoid函数计算得到的最终得分。在计算过程中,正样本会提高物品和用户内积的分数,降低用户和用户兴趣边界的内积得分,负样本则相反。理想情况下,用户和用户兴趣边界的内积得分可以区分正负样本。在线推荐阶段,我们使用兴趣边界作为参考值,将得分较高的物品推荐给用户,而得分较低的物品则不推荐。如果一个用户只对热门物品感兴趣,那么理想情况下,这个用户的边界分,也就是他的用户向量与他的兴趣边界向量的内积会非常高,甚至高于所有的冷启动物品得分,因此不会向该用户推荐一些冷启动的物品

Q5: 用户塔(userTower)和兴趣边界塔在结构上有什么区别,看起来输入似乎是一样的?

A5:这两者的输入确实是一样的,结构也是类似的,只是参数不共享。最大的区别只在于损失函数的计算上。用户塔的输出与物品塔的输出进行内积计算,得到的是物品得分。兴趣边界塔的输出与用户塔的输出进行内积计算,得到的是边界分。在训练时,将这两者相减后参与二分类损失函数的计算,而在推理时,则比较这两者的大小来决定是否将该物品推荐给用户

以上是关于网易云音乐冷启动技术的推荐系统的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:51cto.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板