网易云音乐介绍系统的冷启动技术

一、疑问背景:冷启动建模的必要性和关键性

作为一个内容平台,云音乐每天都会有少量的新内容上线,只管相较于短视频等其它平台,云音乐平台的新内容数量相对较少,但实践数量或许远远超出大家的构想。同时,音乐内容与短视频、资讯、商品介绍又有着清楚的不同,音乐的生命周期跨度极长,通常会以年为单位,有些歌曲或许在寂静几个月、几年之后迸发,经典歌曲甚至或许经过十几年依然有着极强的生命力。因此,关于音乐平台的介绍系统来说,开掘冷门、长尾的优质内容,并把它们介绍给适宜的用户,相比其余类目的介绍显得愈减轻要。

冷门、长尾的 item(歌曲)由于不足用户交互数据,关于关键依赖行为数据的介绍系统来说,想要做到精准散发是十分艰巨的。现实状况是准许拿出一小局部流量做探求散发,在探求中积攒数据。但是,线上的流量又十分宝贵,探求往往容易破坏用户体验。而介绍作为直接对业务目的担任的角色,不准许咱们为这些长尾 item 做过多不确定的探求。因此,咱们须要做到从一开局就能较为精准地找到 item 潜在的目的用户,也就是零交互记载 item 冷启动。

二、技术打算:特色选取、模型建模

接上去分享云音乐驳回的技术打算。

外围疑问在于:如何找到冷启动 Item 的潜在目的用户。咱们将疑问拆解成两个局部:

冷启动 Item在没有用户点击播放的状况下,还有哪些有效的消息可以作为特色协助咱们启动散发?这里咱们经常使用了音乐的多模态特色。

如何应用这些特色来做好冷启动散发建模?针对这一点,咱们将分享两个关键的建模打算:

歌曲自身是一种多模态消息,除了语种、曲风这些标签消息之外,歌曲的音频、文本(蕴含歌名与歌词)蕴含了少量的消息,了解好这些消息,并开掘它们与用户行为之间的关联性,是做好冷启动的关键。目前,云音乐平台驳回了 CLIP 框架来成功多模态特色表白。关于音频特色,咱们首先经常使用一些音频信号处置的方法,将其启动视频畛域的变换,而后经常使用序列模型如 Transformer 模型启动特色提取和建模,最终失掉一个音频向量。关于文本特色,经常使用 BERT 模型启动特色提取。最后,经常使用 CLIP 自监视的预训练框架,将这些特色启动序列化,最终失掉歌曲的多模态表征。

关于多模态建模,业界有两种做法。一种是将多模态特色放到业务的介绍模型中启动端到端的一阶段训练,但这种方法的老本较高。因此,咱们选用了两阶段的建模。首先启动预训练建模,而后将这些特色输入到下游业务的召回模型或精排模型中启动经常使用。

如何将一首没有用户交互行为的歌曲散发给用户呢?咱们驳回的是直接建模打算:把歌曲到用户(I2U)疑问转化为歌曲-相似歌曲-用户(I2I2U)疑问,即先找到与这首冷启动歌曲相似的歌曲,而后这些相似的歌曲与用户有一些历史交互记载,例如收藏等比拟强的信号,可以找到一批目的用户。而后将这首冷启动歌曲散发给这些目的用户。

详细的做法如下,首先第一步是监视学习的义务。在歌曲特色方面,除了刚才提到的多模态消息外,还包括歌曲的标签消息,如语种、曲风等,以此来协助咱们启动共性化建模。咱们将一切特色聚合到一同,输入到一个 encoder 中,最终输入歌曲向量,每个歌曲向量的相似度可以经过向量内积来示意。学习的目的是基于行为计算出的 I2I 的相似度,即协作过滤的相似度,咱们在协同过滤数据的基础上加了一层后验校验,即基于I2I 介绍后,用户反应效果较好的一对item对作为学习的正样本,以确保学习目的的准确度。负样本驳回全局随机采样构建。损失函数驳回BPRloss。这是介绍系统中非惯例范的 CB2CF 的做法,即基于歌曲的内容、标签消息去学习歌曲在用户行为特色上的相似度。

第二步迭代,在上述做法的基础上引入了对比学习的方法。之所以要引入对比学习,是由于这一套流程学习的依然是 CF 数据,须要基于用户的交互行为启动学习,会出现“抢手东西学得多,冷门东西学得少”的疑问,造成存在偏向。只管咱们的目的是宿愿从歌曲的多模态内容到歌曲的行为相似性启动学习,但实践训练中发现依然存在抢手和冷门的偏向疑问。

因此咱们引入了一套对比学习算法,旨在增强冷门 Item 的学习才干。首先,咱们须要有一个 Item 的表征,这个表征是经过之前多模态 encoder 学习失掉的。而后,对这个表征启动两个随机变换,这是 CV 中一些经常出现的做法,在特色上做随机的 mask 或许加噪。由同一个 Item 发生的两个经过随机变动的表征被以为是相似的,由不同Item 发生的两个表征被以为是不相似的,这样的对比学习机制是对冷启动学习的数据增强,经过这样的形式生成对比学习常识库样本对。

在特色增强的基础上,咱们还引入了关联分组机制。

关联分组机制:首先计算 item 每一对特色之间的关系性,即保养一个关系性矩阵,且该矩阵会随着模型训练降级。而后依据特色间的关系性将 item 的特色分为 2 组,详细做法是,随机选用一个特色,而后将与该特色最关系的那一半特色放入一组,将剩下的放入另一组。最后区分对每组特色启动随机变换,从而构成对比学习的样本对。这样,一个 batch 内 N 个 item 将生成 2N 个 view,来自同一 item 的一对 view 作为对比学习的正样本,来自不同item的一对 view 作为对比学习的负样本。对比学习的 loss 驳回 infoNCE,并与前面监视学习局部的 BPR loss 叠加作为最终 loss。

线上部署和推理流程:离线训练终了后,对一切存量歌曲的向量构建向量索引。对一个新的冷启动Item,经过模型推理失掉其向量,而后从向量索引内检索与之最相似的一些item,这些item是过去一些存量item,因此存在一批与它们有历史交互行为的用户(如播放、收藏行为等),将这个须要冷启动的Item散发给这批用户,成功对该Item的冷启动。

咱们对该冷启动算法启动了评价,包括离线和线下目的的评价,取得了十分好的效果,如上图所示,冷启动模型计算失掉的歌曲表征对不同曲风的歌曲可成功低劣的聚类效果。局部成绩已有地下论文宣布(Bootstrapping Contrastive Learning Enhanced Music Cold-Start Matching)。在线上,该冷启动算法在找到更多的潜在目的用户(+38%)的同时,还成功了冷启动item 的收藏率(+1.95%)、完播率(+1.42%)等业务目的的优化。

在此基础上咱们又思索:

U2I 冷启动打算驳回多模态 DSSM 建模方法。该模型由一个 ItemTower 和一个 UserTower 组成。咱们将之前歌曲的多模态特色承袭到 ItemTower 中,用户塔创立了一个惯例的用户塔。咱们对用户序列启动了多模态的学习建模,模型训练基于全量的item 空间,无论是冷门还是抢手歌曲,都会作为样本去训练模型。推理时,只对圈选好的新歌或冷门歌曲池启动推理。这样的做法与之前一些双塔打算相似:关于抢手的item,构建一个塔,关于新的或冷门的 item,构建另一个塔来处置。但是,咱们更独立地处置了惯例的 item 和冷启动的 item。咱们为惯例的 item 经常使用惯例的召回模型,而关于冷门的 item,则经常使用专门构建的 DSSM 模型。

由于冷启动的 DSSM 模型只用于对冷门或新歌曲启动推理,咱们发现对用户的 BIAS 启动建模十分关键,由于咱们不能保障一切用户都青睐冷门或新的 Item。候选集自身是一个十分大的池子,咱们须要对用户 Item 启动建模,由于某些用户或许偏爱抢手Item,而介绍池中或许缺少他青睐的 Item。因此,在传统方法的基础上,咱们树立了一种称为“兴味边界”的塔来对用户的偏好启动建模。应用兴味边界将正负样本分开,训练时,经常使用兴味边界分数划分每个用户的正负样本;推理时,比拟东西得分和用户兴味边界得分来选择能否介绍该东西。训练时,咱们经常使用兴味边界向量和用户兴味向量启动内积计算来失掉边界的表征向量。在上图 loss 基础上,经常使用传统二分类的交叉熵做建模。负样本会将用户兴味边界贬斥,而正样本会将用户兴味边界压低,最终,训练后会到达一个平衡形态,用户的兴味边界将正负样本分开。在线上运行时,咱们依据用户的兴味边界来选择能否将冷门或长尾的 Item 介绍给该用户。

最后做一个总结。云音乐介绍的多模态冷启建模关键上班包括:

未来优化关键有两个方向,一是经常使用内容和行为特色多模态融合建模,另一个是召回和排序全链路优化。

Q1:音乐冷启动的外围目的是什么?

A1:咱们会关注多方面的目的,其中比拟关键的是收藏率和完播率,收藏率=收藏 PV/播放 PV,完播率=完整播放的 PV/播放 PV。

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

A2:咱们目前驳回的打算是基于 CLIP 框架启动预训练,并经常使用预训练失掉的多模态特色来为下游的召回和排序业务提供支持。这是一个两阶段的预训练环节,而非端到端的训练。只管从通常上讲,端到端的训练或许会更好,但与之相对,对机器的要求和老本也会更高。因此,咱们选用启动预训练,这也是基于老本方面的思索。

x示意歌曲的原始特色,蕴含歌曲的音频、文本多模态特色以及语种曲风等标签类特色。这些特色经过火组和 2 个不同的随机变换 F’a 和 F’’a 失掉 x’和 x’’。f 是 encoder,也是模型的骨干结构,g 加在 encoder 输入之后的一个 head,仅用在对比学习局部。

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

A3:模型一直只要一个 encoder,也就是一个塔,因此并没有参数能否共享的疑问。

至于说为什么会对冷门的 item 有协助,我是这么了解的,由于并不是对冷门 item 去做额外的一些负采样之类的上班。其实假设只是单纯的在监视学习这个基础上去学习歌曲的 embedding 表征,或许会造成偏向,由于学习的是 CF 的数据,还是会出现抢手歌曲学得多的疑问,最终 embedding 向量也是有偏向的。经过引入对比学习机制,在最终的 loss 引入对比学习的 loss,它是对学习 CF 数据的纠偏环节。因此,经过对比学习的形式,是改善向量自身空间散布,并没有去对冷门的 item 去做额外的处置。

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

A4:多模态 DSSM 建模中蕴含一个 ItemTower 和一个 UserTower,而后在UserTower 的基础上,咱们去对 user 特色额外建模了一个塔称之为兴味边界塔。这三个塔区分输入一个向量,在训练时,咱们会对 item 向量和 user 向量启动内积,失掉 item 得分,而后将 user 向量和 user 的兴味边界向量启动内积,示意用户的兴味边界得分。参数⍺ 是一个惯例的样本加权参数,用于平衡正负样本对loss的奉献比例。p是item最终得分,计算形式为…将 item 向量和 user 向量的内积得分减去 user 向量和 user 兴味边界向量的内积得分,并经过 sigmoid 函数计算失掉的最终得分。在计算环节中,正样本会把 item 和 user 的内积的分数拉高,把 user 和 user 兴味边界的内积得分降落,负样本反之。现实状况下,user 和 user 兴味边界的内积得分可以划分正负样本。在线上介绍阶段,咱们经常使用兴味边界作为参考值,将得分更高的 item 介绍给用户,而得分较低的 item 不予介绍。假设一个用户只对抢手 item 感兴味,那么现实状况下,这个用户的边界分,也就是他的user 向量与他的兴味边界向量的内积会十分高,甚至高于一切的冷启动 item 得分,因此不会向该用户介绍一些冷启动的 item。

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

A5:二者输入确实是一样的,结构也是相似的,只是参数不共享。最大的区别仅体如今 loss 的计算上。用户塔的输入用于与 item 塔的输入做内积计算,失掉的是 item 得分。兴味边界塔的输入与用户塔的输入做内积计算,失掉的是边界分,训练时二者相减后介入二分类 loss 的计算,推理时比拟二者的大小来选择能否将这个 item 推给用户。

您可能还会对下面的文章感兴趣: