QQ 音乐推荐系统的精细化调控
分享嘉宾:Bill 腾讯音乐
编辑整理:Hoh
出品平台:DataFunTalk
导读: 大家好,我是来自QQ音乐数据科学团队的Bill,接下来由我给大家分享QQ音乐在内容理解和精细化运营方面的一些实践和经验,副标题是推荐系统的精细化调控,相比于前面分享的一些硬核的算法模型和系统架构,我这里更多会介绍一些更显性的、更具可解释性的一些数据驱动方法在内容精细化运营场景的应用。
本文主要分为5部分:第1部分会介绍业务背景、总体解决方案和收益,第2~4部分分别介绍内容理解、运营中台、投放系统的具体实现方案,最后做一个简单的总结和展望。
01
背景与方案
QQ音乐作为一个以PGC内容为主的一款产品,编辑运营的内容占据了用户消费的很大一块流量,运营的诉求是多种多样的:比如新歌运营,重点流派运营(像国风、说唱、韩流等),以及综艺影视歌曲、热点事件或热点歌曲艺人、重点节日或活动的运营等等。
一方面,我们传统的运营手段是通过左边这张图中的 音乐馆 tab 里面的各个入口进行人工配置的,它存在的问题是:
- 比较依赖人工,甚至有时候需要7*24小时处理;
- 入口众多且比较分散,基本无法联动;
- 运营的标准差异较大,缺乏数据反馈;
- 能够展示的内容较少,主要聚焦与头部艺人的内容,没法对海量长尾内容做扶持。
另一方面,我们的推荐系统有很好的数据和模型驱动,也占据很多用户的流量,如右图中推荐tab的图所示,但是它没有运营可介入的抓手,而且也存在以下的问题:
- 太过于聚焦短期的数据表现;
- 内容策略的实验和调整成本太高,比如多加一个召回通路做扶持这个过程还是很漫长繁琐的;
- 对新冷的长尾内容不够友好,虽然也有一些内容冷启动的方案。
总而言之,就是运营需求多样化和运营工具手段缺乏的矛盾,以及内容运营缺乏数据驱动和精细化的能力,是我们面临的两个很重要的问题,这严重阻碍了我们对优质内容的扶持和宣发。
为了解决这两个主要问题,我们参考业界特别是一些广告投放系统的思路,并结合我们内容运营宣发场景做了一些创新,接下来是我们解决方案的主要思路。
我们解决方案的整体目标是,在保证当前用户体验的前提下,通过精细化运营使流量收益最大化。这里用户体验主要是指推荐场景下用户的完播、时长、次留等核心体验指标;而流量收益则包括我们运营的内容的播放份额提升、用户时长的提升,以及通过扶持音乐人的优质作品,吸引更多优质音乐人并创作更多优质作品等。
具体的思路是分3步走:
- 首先是内容理解,也就是建立一套科学的、完备的内容价值评估和挖掘体系,达成对重点内容的“知而善用”和潜力内容的“伯乐识马”;
- 其次是内容扶持,基于科学的内容评估和高效的宣发能力,实现重点内容的扶持目标,保障流量分配的平衡和流量价值的最大化;
- 最后是智能宣发,构建以实时数据表现为正负反馈的智能宣发投放系统,接入多个中心化和个性化点位,获取最优的宣发收益。
整体的技术框架如上图所示:
自底向上是一个内容甄选的金字塔,最底下是完整的曲库,经过一些版本、时长、流派标签、上架状态等条件的过滤,到我们的基础内容池。对这个基础内容池,我们区分中头部内容和长尾内容,分别进行内容的价值评估和潜力挖掘。
内容价值评估的结果,主要通过内容运营中台,作用于个性化的排序阶段,提升待扶持内容的排名,通过点位流转后,用户反馈的数据又回到内容价值评估当中,形成一个数据驱动的闭环。
内容潜力挖掘的结果,主要通过精准投放系统,以精准匹配的方式直接触达到用户,同样的也通过实时收集用户反馈,对投放任务进行实时的流量调控,形成另一个数据驱动的闭环。
随着QQ音乐全面个性化的不断深化,个性化的流量已经远超中心化流量。下面以个性化场景为主线(也是我本次分享的副标题——推荐系统的精细化流量调控),来看下以上解决方案在各个推荐模块中的调控方式:
- 内容价值评估和潜力内容挖掘主要作用于内容准入和召回阶段,增加内容的多样性;
- 内容运营中台主要作用于排序阶段,作为排序模型的重要特征或直接作为排序分中重要的因子;
- 精准投放系统则主要作用于重排阶段,强插在推荐结果中给到用户。
从左到右,推荐内容候选集的大小越来越小,而本解决方案对流量的干预程度越来越大。
通过这些调控,我们不仅没有损失用户体验,还在各方面都有一些提升:
- 比如我们内容评估和挖掘使得准入歌曲数提升了10%以上,并且作为排序特征也使得人均时长和完播分别提升了10%、20%以上;
- 而通过内容运营中台,我们使得音乐人等重点内容在推荐点位的播放占比相对提升超过47%以上;
- 在投放系统中,内容的平均完播也是高于各自点位的平均完播的。
02
内容理解
在内容消费行业,一个常见的现象是:少数头部的内容占据大多数流量,而尾部很多的内容占据了很少的流量,比“二八定律”会更为夸张,头部内容的数量就如图中冰山之一角,可能只占据了5%~10%,但这部分内容却占据了90%~95%的流量。
在这个大的背景之下,分摊到每一个长尾内容上的用户反馈数据非常稀缺,我们很难获取到高置信度的用户反馈。更加雪上加霜的是,我们每天还有大量新上架的内容,这些冷启动内容的价值评估也是我们面对的难题。
我们解决这些内容质量评估的整体思路是“分而治之”:
- 对中头部内容,使用用户反馈数据为主
- 而对长尾内容,则结合稀疏的用户反馈以及内容本身的一些属性来挖掘和探索
- 对完全冷启的内容,则只通过音频、歌词等内容本身的信息来理解和挖掘了
据此,我将我们内容理解分为三大块,接下来重点介绍其中“价值评估”和“潜力挖掘”的部分,每一个部分又会分为三个小的方向进行介绍。
首先是内容价值的离线方案。这里主要是分为基础评估指标和业务策略维度,其中重点介绍下最重要的用户互动质量评估的方案。
互动质量这里主要由四部分的原子数据组成,其中前3个是比率型指标,最后1个是绝对值指标。对于比率类的指标,一个常见的问题是,在数据量较小的时候置信度不高,这里我们的解决方案是使用“贝叶斯平滑”,当I (Impression,曝光或播放)和 C(Click,点击或完播、搜播、收藏分享)都比较小的时候,评分 R 的平滑值就接近于大盘的均值。而对于绝对热度的指标,头部和长尾的数值差异较大,这里我们使用类似牛顿冷却定律的方式对热度做指数型衰减。
最后所有的指标做归一化后进行线性加权,得到综合的互动质量分。
其次,是内容价值评估的实时方案。这里主要有以下几个点:
- 多个来源的数据流不是通过join,而是先分别聚合,然后用union的方式融合到一起;
- 在中间结果的基础上再join内容属性或用户属性的数据,这里是通过异步io+缓存的机制;
- 在以上计算的基础上,区分不同大小的滚动时间窗口,进行二次聚合,这里短期窗口和中长期窗口分别能够处理及时性和稳定性的问题,同时多种时间窗口也能刻画出实时飙升的趋势;
- 最后结果双写到线上的es和离线的tdw数据仓库,可同时进行线上应用和离线分析。
下方两图是时间窗口的示意,包含我们实时评估中用到的滚动窗口和滑动窗口的示意,其中三个长度的滑动窗口有一个(短期)实际也是滚动窗口了,另外两个(中期和长期)是前后有重叠部分的滑动窗口。
接下来是我们对内容未来热度和质量的一个预估方案。这里主要采用的是一个时序的神经网络模型,也就是TCN,它是以CNN为基础,并做了这3点改进:
- 因果卷积:不考虑未来的信息,隐藏层越多考虑的历史信息越久远
- 空洞卷积:在标准的卷积里注入空洞,以此来增加感受野
- 残差模块:避免梯度消失或爆炸,并解决网络退化的问题
以上是我们在内容价值和质量评估方面的解决方案。接下来是我们在长尾内容的挖掘和理解方案。
首先是基于内容本身的内容理解,我们综合考虑了歌曲需要具备的特质,构建了基于深度神经网络的潜力挖掘模型 - PDM(Predictive Model)。具体而言,主要分为两大块:
底下部分是多维度的歌曲理解:一首好歌,在演唱、歌词、旋律、节奏等角度,都不应该存在问题,并且至少在某一方面有足够的亮点。因此,PDM技术会对歌曲进行“拆解”并分别建模,力求全方位的衡量歌曲的质量和潜力。在建模时,我们充分调研了当前业界领先的技术,并对现有技术更进一步地创新自研,力求更好的描述每个维度。最后,我们使用深度学习框架将各个维度的信息综合起来,从而给歌曲一个更加客观的评价。
顶上部分是多角度挖掘好歌:不同用户喜好的歌曲风格往往不同,喜好的表现也相对多样化,例如有些用户听到好歌会收藏,有些用户则会进行评论等。在圈定学习目标时,我们精选了多个用户群,并采取多种指标来描述用户的喜爱程度和歌曲的爆款潜力。通过对用户群和指标的组合,我们训练了一系列模型,力求从不同的角度挖掘到好歌。
其次是基于用户行为的潜力挖掘,我们从业务场景出发,通过对QQ音乐海量用户进行挖掘,圈定眼光独到、对社媒歌曲先知先觉的优质种子用户。
一方面用这些用户的搜索、播放、收藏、分享等行为,借助PageRank等算法对歌曲的潜力值进行投票打分,实现了无监督的潜力挖掘,避免了繁杂的数据打标和正负样本比例悬殊的问题。
另一方面,用这些用户的听歌等行为的序列,对内容进行嵌入表达,得到User-based Embedding,为后续与PDM融合打下基础。此外,为了弥补交互数据较少或缺失的内容无结果,解决内容“冷启动”问题,我们使用了更多的图模型,如node2vec、EGES等,引入歌曲与其作词、作曲、演唱等信息的关联图谱,并通过随机游走和嵌入表达,得到SideInfo-based Embedding,然后通过一个隐层进行融合,得到综合的黑马Embedding。
最后,在以上两部分的基础上,结合基于内容本身和基于用户行为两种内容理解的优势,作为内容在节奏、旋律、音色等空间的嵌入表达(PDM-Embedding),同时使用序列表示、图表示等方法将种子用户对歌曲的操作信息生成基于用户的嵌入表达(User-Embedding),并引入歌曲的作词、作曲、演唱者与歌曲关联的异构网络图谱,生成基于歌曲辅助信息的图嵌入表达(SideInfo-Embedding),最后通过深度神经网络,对上述Embedding进行进一步学习,实现了同时兼顾及时性和精准度的多模态潜力优质内容挖掘模型(MetaPDM),该融合模型不仅从音频和歌词等内容维度表征和建模歌曲,还会考虑到播放、收藏等用户行为,以及内容的创作者等知识图谱数据,实际挖掘和投放表现相比单一类型的模型有进一步的提升。
以上就是我们整理内容理解的主要解决方案了。接下来介绍一下我们是如何应用这些内容理解的结果的,分为两个大章节来介绍,首先是内容运营中台。
03
内容运营中台
内容运营中台主要是为了解决两类大的问题:一个是召回阶段的内容池圈定的问题,另一个是排序阶段内容排序的有目的的调控问题。系统整体的框架如上图所示:
最左边是我们离线和实时内容评估和挖掘的结果,分别通过spark和flink流转到我们的存储层。
存储层主要分为两级,包括es和ckv,其中es搭配kibana,既可以方便的进行相对复杂的脚本字段配置,又可以配置一些可视化的监控看板。在es的基础上还会加上一层ckv+的缓存层,以应对高qps的线上服务。
接下来是我们的服务层,主要是对外提供可灵活筛选的内容池服务和内容评估指标的参数服务,这两个服务都接入了我们的abt平台的用户分流,并且支持策略的可配置。
最后是我们的应用层,分别是个性化的召回服务和个性化的排序服务,其中个性化排序服务会将模型分和内容价值评估分进行线性加权后作为最终排序。
接下来我们重点介绍下这里内容池服务和参数服务的一些具体细节的实现。
首先是内容池的服务。内容池服务作用于推荐的召回阶段,作为主推荐召回路径的一个补充。
它的背景主要是因为推荐准入池缺少很多我们需要扶持的内容,或者我们挖掘的冷门优质的内容。这些内容只有加入到我们的召回通路,才有可能在后续的排序、重排以及最后被用户播放到。
相比于推荐准入池另外的一个差异在于,我们内容运营中台有很多垂直类别的小池子,包括不同场景的精选池、不同语种流派的垂类池、不同圈层下的冷启池等等,
这些池子在之前是离线计算+导出文件+编辑审核+数据入库和上线,这里是缺乏一些数据流转和审核干预的工具的,整体效率比较低下。
内容运营中台封装的内容池功能,就解决了这些问题,提供方便的数据流工具和运营审核平台,同时后续也会引入一些基于数据反馈进行内容池的持续迭代的能力,包括ab实验和准入退出的功能。
接下来是内容中台第2个重要的服务——参数服务。参数服务主要提供内容价值评估的策略配置和ab实验的能力。
下面第一个表是我们的内容价值评估结果的示意图,横向的是歌曲a、b、c、d,纵向的是内容在各个指标上的评估分数;第2个表格是我们的策略配置方案,实际中并不需要每一个评估指标都需要配置系数,只需要配置非0的部分即可。
那么综合这两个数据,在时间点t,内容的综合倾斜分数即为以下公式所示,其中S为m个内容在n个指标上的评分矩阵,P为某个实验策略的参数向量。
这里举了几个案例:
第1个是线性的策略,直接返回基于音频的内容评估分,可作为排序模型的特征参数。
第2个是动态的非线性策略,对特定圈层的用户,使用实时评估分作为变量的函数g的变换后的值g(S2)作为该指标系数,再与其他指标加权作为最终倾斜分。
这两个都相对简单的,还有一个相对复杂的是我们的EE模型:
EE模型是Explore-Exploit(也就是探索-利用策略),具体而言z是实时价值分,而x和y分别是大盘和单首歌曲的播放量。
当y小于探索阈值N时,内容的综合倾斜分数是由实时评估收益和收益置信上界(UCB)两部分决定的,当y较小的时候,会给予内容更大的置信上界倾斜;当y达到一定量,内容的实际收益比较稳定可信了,就以实际流量收益为主要影响因素。最后内容曝光的概率是这个正比公式决定的。
这里应用的场景主要是一些音乐人的新歌,或者潜力挖掘的冷门优质歌曲的探索和扶持。
以上就是我们内容中台的主要解决方案和思路,它是对推荐的排序阶段进行干预,达到不影响用户体验的同时,对特定内容进行扶持的。接下来介绍下我们在重排阶段进行干预的方案,也就是我们的精准投放系统。
04
精准投放系统
在介绍投放之前,我们先来对比下投放系统和推荐系统的差异:
- 首先,从本质上来说,推荐系统是为了迎合用户喜好的,是根据用户去找最喜欢的内容;而投放本质则是根据内容来找用户,本质是将用户的流量进行变现的。
- 从整体架构上看,推荐系统需要从上百万的候选池中去选择合适的内容推给用户,而投放则一般只有几百到几万的内容量,所以基本不需要召回层。
- 从评估指标上看,投放系统除了用户体验指标外,还有任务完成率等诉求。
- 从内容特点上看,投放系统中大部分内容是新冷内容,更需要注重解决冷启动的问题。
- 最后是投放系统要保证任务完成率,就需要对任务进度进行把控,需要有保量机制。当然,如果某些内容质量确实一般,但需要的量又大,对用户体验损失比较明显,我们也需要有退出机制,来保证用户体验不受太多伤害,而不是一定要完成保量。
接下来重点介绍下我们投放系统的整体解决方案:
- 最左边是我们运营管理平台,包括业务方管理、任务管理以及渠道管理。
- 中间是我们核心的投放后台服务部分,包括三个大的模块:排序、重排、用户体验。其中排序有多个算法的迭代过程,而重排主要是基于内容反馈和任务进度的一些调控机制,用户体验则包括离线投放用户画像和实时的任务退出机制。
- 最右边是我们用户侧的一些点位。
接下来重点介绍下中间这部分的实现方案。
首先是我们排序模块的最初版算法,基于用户画像和内容属性标签的匹配,主要是应用在有预设保量投放量的场景,使用余弦相似以及xgboost进行用户的内容的匹配和排序。
另外一个场景则是对批量内容没有保量要求,但需要测试那些内容更优质的场景,这种则采用右边这种分级分发的模式,前提也是用户和内容的流派标签完全匹配,在投放的过程中再根据实时反馈来决定是否需要给予更多的流量。
以上两种都是相对简单的投放逻辑,在项目初期投放的内容质量有一定保证的情况下,对用户体验的干扰也很小,但随着后续参差不齐的投放内容引入,我们也升级了投放匹配模型。
也就是我们现在的AE和DeepFM模型,这里AE是指audio embedding。在之前用户和内容的流派、语种、歌手等基础之上,新引入了音频本身的向量表征,用户侧的AE则用用户近期收藏或完播的歌曲的AE的均值来表征。
用户和内容的特征经过特征拼接后,输入到DeepFM的Dense Embedding层,分别通过FM部分进行特征交叉、DNN部分进行high-order的特征抽取,最终线上效果相比xgb在完播率和投放量上都有显著的提升。
以上就是排序模型部分的主要方案。
接下来是我们的重排模块。投放这里的重排主要背景是,如果只按照排序模型来决定投放,会有很多任务投放进度比较滞后的问题。所以重排这里,主要会考虑任务进度、任务优先级以及实时效果来进行排序的调整,从而最终决定投放的内容。
重排的分数是如右边这个公式来计算,其中主要的指标有以下几个,除了模型预测分之外,还有任务的流派倾斜因子、任务的投放进度和时间进度等。
最后是我们在投放用户体验上的一些努力和探索。
首先是离线的投放用户画像,将用户对投放内容的完播收藏等数据,和非投放的推荐完播收藏数据,刻画用户对投放内容的接受程度,将接受程度高的称为探索型用户,接受程度低的称为保守型用户,然后对这两类用户分别做多投或少投的策略,下面表格是我们这个策略线上实验的一些效果。
另外一方面,我们在任务投放的过程中,还会做实时反馈的评估,对于反馈较差的内容给予警告和退出的逻辑。集体而言,是在一个基础时间和投放量保量的基础上,判断实时反馈是否低于平均效果超过一个阈值,超过之后任务就直接终止退出了。
以上就是我们整体内容精细化运营的解决方案了,最后做一个总结和展望。
05
总结和展望
总结一下,以上解决方案的主要收益包括:
- 内容价值评估的新热内容和潜力挖掘的优质内容接入推荐准入池,使得准入池歌曲数量提升10%;作为排序模型的物品特征,人均时长提升10%,完播率提升超过20%;
- 通过内容中台参数倾斜和投放运营,重点扶持内容播放占比提升超过47%;
- 内容投放系统的运营内容接入重排通路,投放内容的平均完播率高于点位的平均完播率。
此外,我们也在探索一些其他场景和应用,比如我们的“下一首心动”AI歌单,以及银河计划中音乐人优质作品甄选和宣发推广等。
展望未来,我们正在进行中和规划中的工作主要包括:
- 内容理解:进一步完善内容评估体系,尝试更多的潜力内容挖掘算法,助力更多优质内容的发掘;
- 内容中台:基于Flink实践在线学习、强化学习以及多目标分发;
- 内容投放:结合用户行为的音频内容理解优化,实时look-alike算法等;
- 应用推广:更多可控流量场景&更多业务平台。
06
精彩问答
Q:如何定义保守型和探索型用户?
A:我们这里的保守型和探索型用户主要针对投放场景进行用户画像刻画的,因为投放场景有很多新冷内容,这些新冷内容我们很难学习到他们的序列embedding特征,但是通过我们的投放系统给到用户,是能购获取到用户对这些新冷内容的偏好度的,这样我们就可以训练和预测用户对新冷内容的偏好度了,偏好度高的就是我们的探索型用户,偏好度低的是保守型用户。
Q:内容扶持占比达到了50%,那如何保证不影响用户体验指标的?
A:这里的提升是相对的提升,相比于之前提升接近50%,并且是在不影响用户体验指标的前提下做到的,而不是说提升到占推荐整体流量的50%,相对的提升是比如说从之前的占10%提升到占15%这样的,所以用户体验指标是可以做到不损失的,我们是通过ab实验来看这两部分指标进而决定策略是否可以全量。
Q:新歌曲和新歌单是如何来做价值评估的?
A:这里主要是通过潜力内容挖掘的方法去预测的。因为我们有很多上架时间比较久的内容,他们有丰富的用户互动数据,有真实的完播率、收藏率以及热度等信息,这些内容的数据是我们完全基于内容本身挖掘内容质量或热度的学习样本,通过这些样本学习到的模型,应用与新内容的预测上。
Q:内容挖掘里怎么样圈定种子用户的?
A:这个问题很好。我们有简要提到过,种子用户主要是从我们平台的核心用户,包括优质歌单的创作者,以及对热门歌曲有前瞻性或热衷于“火钳刘明”的,在热门歌曲还没有火爆之前就主动去发掘优质冷门歌曲的用户,这些作为我们基于规则圈定的原始种子用户。在此基础之上,我们还会去根据当前场景,构造一些用户特征,并通过lookalike的方式去扩充种子用户的范围。
Q:内容倾斜的参数怎么定?线性组合的权重怎么定?
A:这个问题也很好。其实在参数服务做倾斜的时候,例如腾讯音乐人扶持的那个案例,我们首先是一个人工经验给定的一个系数,然后在线上实验时根据实时效果去动态调整的,实时效果好的会给予更大的倾斜分数。另外一个问题,线性组合的权重方面,主要是基于内容评估原子指标的数据分布和统计指标,如均值、方差等数据,给定一个初始的权重系数,并且会引入一些人工经验,比如对完播会给予相对更大的权重,因为它的数据相对不那么稀疏;在此基础上,我们还会通过一些线上ab实验来寻参。
Q:能举例介绍下一个音乐的生命周期吗?比如新音乐冷启动、如何进入精选池、后面平稳期、淘汰期、再漏出之类的?
A:随着短视频平台的兴起,其实音乐内容的生命周期是在逐渐缩短的。对于我们平台内部,对内容冷启,我们主要是通过一些潜力内容挖掘和评估的方法,将预测的优质新内容通过内容池给到推荐的召回,并在排序阶段加入一些倾斜,达到对新内容冷启的加速。但是当冷启完成之后,后面的平稳、淘汰期我们就不再做过多干预了,它就自凭本事了。
Q:内容label用flink聚合的等待窗口多大,比如有些长视频的完播时间比较长,如何权衡不同label流水的时间窗口?
A:首先这里播放流水是播放完成或者说切歌的时候才会上报的,所以这里不存在等待的问题。然后对于长音频内容,我们是需要单独去做评估的,在长音频内容内部做实时评估和排序的。
Q:推荐系统和投放系统流量是如何结合的呢,比如一个Q音内容页面,哪些内容是推荐的,哪些是投放的?是与广告相关的内容都走投放系统吗,还是说投放系统都是负责分发冷启内容?
A:我们的投放内容和推荐内容是动态排序的,投放内容与推荐内容最后会做再一次综合的重排。我们这里说的投放系统主要是音乐内容的投放,不含广告内容,然后我们的内容投放不只是对新冷内容的,也有大约20%的非新冷内容,这些主要是我们需要大力宣推的,希望能触达更多用户。
分享嘉宾: