AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

全民 K 歌内容挖掘与召回

  • 2021-04-15
  • 本文字数:3432 字

    阅读完需:约 11 分钟

全民K歌内容挖掘与召回

推荐系统一般分为两部分,召回阶段和排序阶段。召回阶段是从全量数据中挑选出用户可能感兴趣的一部分数据,供后面的排序阶段使用。全民 K 歌作为一个拥有大量用户上传作品的平台,如何挖掘用户上传的内容作为推荐的候选集,也需要精心设计。


今天的介绍会围绕下面四点展开:

  • 内容挖掘

  • 召回模型

  • 召回模型实践

  • 总结和展望

内容挖掘

首先和大家分享下全民 K 歌进行内容挖掘在业务上的必要性。

1. 内容挖掘--重要性


跟普通的召回相比,全民 K 歌作为一个 UGC(User Generated Content,也就是用户生成内容,即用户原创内容),存在着两种用户:内容创作者和内容消费者。两者对于平台的诉求是不一样的:内容消费者和其他平台的用户一样,希望看到好的内容,获得好的用户体验。而内容创作者更看重自己发布的作品被更多的人去看到,去喜欢。所以如果单纯从个性化分发的角度去看待问题,推荐的目标是为了满足内容消费者短期的需求,在短期内可能对于消费规模上会有一个增益。但是长期来看,这种方式会导致推荐流量分配越来越集中到少数作者。大量作者因为得不到推荐流量,缺少创作激励,会导致平台创作者的流失。这样对于平台的生态来说是不理的。所以除了个性化分发的视角以外,还有一个从内容生态视角进行考虑的,从内容生态视角触发的一个机制。这个机制就是内容挖掘机制。

2. 内容挖掘—目标

内容挖掘的目标是持续发现优质内容,建立优质流量通路。为了实现这个目标,内容挖掘主要分为两个模块

  • 内容准入机制:从内容创造者上传的内容中筛选出优质作品,进入到推荐系统链路

  • 分发通路:内容创作者上传内容中筛选出优质作品之后,需要一个稳定的分发通路,保证这些优质资源能够让用户看到。


这两个模块也是经历了一系列的迭代和优化过程,下面将详细介绍迭代过程。

3. 内容挖掘—迭代



在内容准入方面,一开始用的是人工存量挖掘。靠人工对上传的资源进行打分。这样做可以获取到高质量的资源,但是人工操作费时费力,效率很差,时效性也无法获得保证。后面为了提高效率尝试用一些人工标注的特征进行模型预估来识别优质内容,但是这些模型都存在一些问题。现在用的方案是基于视频音频本身的特征来做优质内容的识别,然后用人工的一些辅助审核来帮助实现的内容准入。


在内容分发方面,一开始完全是基于推荐系统的自然分发,然后在此基础上,为了更好的激励内容创作者,增加了冷启动内容保量机制。现在采用的是多级分发,针对不同的反馈效果去给一个作品做多流量的分发机制。

4. 内容挖掘—方案

从整体上看,内容挖掘一共有三部分组成:


① 内容准入:内容准入部分是由 TME 创新团队提供的深度神经网络模型,将一些普通内容和优质内容进行人工标注之后训练模型。对于新发的音频和视频资源,模型会根据他的唱功、视频质量等一系列特征来判断内容好坏。对于音频资源通过模型打分之后直接进入到推荐候选池中,对于音频资源还需要通过人工审核才能入库。通过这样的流程就可以很高效的从每日发布的 500w 资源中挖掘出可以推荐的资源。

② 分级分发:从用户创作的内容挖掘出优质资源之后,跟着的就是冷启动阶段。根据用户的账号等级,给资源初始曝光量,在曝光量打到设定的值之后根据反馈的数据与资源的平均数据进行对比,如果反馈效果更好的话就增加曝光量,在扩大曝光几次之后,如果资源的反馈仍然比较好,就用双塔模型对资源进行一个保量。

③ 召回:召回模型采用的是双塔模型,不过和传统的双塔模型相比,这里只用到了作品的源信息,没有用到后续的信息。

在完成保量过程之后优秀的作品会转入到流量流转阶段,这个阶段和分级分发类似,每个推荐周期结束后根据一些指标对内容进行评估。比如看点击率、完播率这些,根据这些表现来确定是不是要把它放到更大一级的流量池里面去分发。

召回模型

完成了内容创作者资源的挖掘之后,从每日上传的内容里面可以获取到比较优秀的内容,构建内容池,然后对这个内容池来做个性化召回。

1. 召回模型—总览


全民 K 歌的召回主要分为三类:

  • 属性召回:用户在看什么内容,说明用户对于这类属性的物品有一个偏好,然后可以根据这些偏好去做点对点的召回,召回一些带有用户偏好属性的内容;

  • 模型召回:从用户和 item 的建模角度,把用户和 item 建模到同一个向量空间,之后可以按照相关检索去为用户做一个召回;

  • 其他召回:除了上述两种召回以外,基于实时热门内容、LBS(基于位置服务)、关系链召回也可以召回少量数据作为补充。

2. 召回模型—画像属性召回

基于用户画像的属性召回的原理比较简单:根据全平台的流水(如搜索、播放、点赞、分享、关注和点唱等用户行为),实时计算用户在我们平台的各个维度(如音频标签、视频标签、伴奏、歌手、创作者)的偏好。最终选取用户比较高的偏好维度的一系列属性来为用户去做召回。这种召回对于用户的感知性很强,因为召回结果和用户的实时行为时有强相关的关系。

3. 召回模型—属性向量化

单纯用点对点的属性召回是存在问题的:这样的召回比较死板,没有考虑到属性之间的相似性。为了解决这个问题,这里引进了属性向量化,训练属性的 embedding,根据属性直接的相似关系进行相似扩展。比如用户喜欢的伴奏,可以扩展到相似的伴奏然后寻找作品。用户喜欢某个作者,也可以扩展到风格相似的作者。

召回模型实践

在介绍完召回模型的理论部分之后,下面介绍一下召回模型的实践以及实践中的探索优化

1. 召回模型实践—模型化召回

模型化的召回是相似性的表征建模:通过模型把用户和物品 encode 到相同维度的向量空间,在最后一层进行相似性交互(cosine,dot 等相似性计算方法),线上通过最近邻来召回最相似的内容。

模型化召回典型结构有三种:

  • 只有 Embedding 层:矩阵分解

  • 用户单塔+softmax:Youtube-DNN

  • 双塔+cosine:DSSM


全民 K 歌线上采用的是第三种结构,和排序模型相比有几个需要注意的问题:

  • 相比排序,召回面临的搜索空间更大。排序只是把少量内容进行打分然后按照分数从高到低排序,但是召回要面临的数据更多,而且数据分布也不相同,所以选择负样本非常重要。

  • 线上检索速度有要求,时间太长会影响用户体验,所以无法引入用户的 item 的交叉特征,导致模型的表达能力比起排序模型偏弱。

  • 作为个性化分发的起点,需要引入 debias 机制,缓解 bias 循环

2. 召回模型实践—负样本选取

在排序和召回模型两块工作中,看到的内容视角是不一样的。在召回阶段,候选的物品是整个全集;而在排序阶段,候选的物品只是全集的子集,因为待排序的物品是召回模型筛选之后的结果。正是视角的不同,所以召回和排序的采样方法不一样。在召回阶段,随机负采样的效果往往优于曝光未点击。

3. 召回模型实践—增强单塔的表达能力

用于召回的双塔模型存在一个问题:不能用到用户和 item 之间的交互特征,前面说过这样导致的结果就是导致表达能力偏弱。所以需要做一些优化来增强单塔的表达能力。具体的做法是利用用户比较稳定的一些行为序列,再加上用户的用户画像的的一些基础信息,根据这些来构建用户的隐藏的表征。然后基于这个表征,去筛选用户的动态,比如播放、点击这种比较稳定的行为动态,这样就能得到一些和当前预测目标更相关的信息。

4. 召回模型—最终模型

最终经历了热度负采样、Hard-Negative Mining 和序列 Attention 三个优化之后,整体的模型上线之后效果得到了比较不错的提升,说明这些工作是有效的。

5. 召回模型实践—Debias

实践中发现推荐系统中存在着比较明显的 bias 循环:用户对于一个物品的转化,包括一个曝光的漏斗和一个曝光到转化的漏斗。如果我们只考虑转换这一层的漏斗,就会有夸大高曝光物品的可能,这就会偏离用户的真实偏好。

为了验证这个猜想,在全民 k 歌中选取了一个场景来做测试,采用的方案是全局样本补充+IPS 加权的方案,包括以下的操作:

  • (user,item,rating)从推荐场景扩充到全平台主动性为

  • Rating 的置信度与 Propensity Score 关联起来,降低高曝光正样本的权重,增加低曝光正样本的权重

  • IPS 变换和截断


这个方案上线以后也取得了一定的收益,说明 bias 的循环是存在的。采取上述方案 Debias 是成功的。

总结和展望


在未来,我们还会在三个方面进一步探索,一是通过更精细的流量分发控制提升优质内容的冷启及进入高展的速度;二是实时画像又统计方式切换到模型方式;三是模型召回也加入多目标的思考。


文章作者:

timmyqiu

腾讯音乐 | 应用研究

2016 年南京大学计算机系硕士毕业,同年加入腾讯 SNG 数字音乐部,先后负责过 QQ 音乐的画像和每日 30 首推荐的算法相关工作。2018 年底至今在全民 K 歌负责 UGC 作品的推荐算法开发与相关的工程实现。


本文转载自:DataFunTalk(ID:dataFunTalk)

原文链接:全民K歌内容挖掘与召回

2021-04-15 07:002808

评论

发布
暂无评论
发现更多内容

Jira Automation 探索与实践

GrowingIO技术专栏

项目管理 自动化 Jira

QDS curl 安装

耳东@Erdong

curl 8月日更 qds

微服务的演进之路

卢卡多多

微服务 8月日更

MongoDB中间件工具mgm入门介绍(一)

liuzhen007

8月日更

Python Web 菜谱项目再次前进一步,从应用层了解内置用户认证系统

梦想橡皮擦

8月日更

【SpringCloud技术专题】「Feign技术专区」从源码层面让你认识Feign工作流程和运作机制

码界西柚

OpenFegin spring-cloud Fegin 8月日更

Nacos-spring-boot 0.2.10 发布,全面支持 Nacos2.0

阿里巴巴中间件

云计算 开源 云原生 中间件

阿里P8整理的《百亿级并发系统设计》实战教程,实在是太香了

编程菌

Java 编程 程序员 阿里 计算机

”微博评论“的高性能高可用计算架构

feitian

平台利用大数据割韭菜,消费者为何沦为砧板上的鱼肉

石头IT视角

架构训练营 模块五

小卷儿

架构实战营作业 M05

Shawn Liu

在线CSS代码压缩美化工具

入门小站

工具

【大咖直播】Elastic Security 安全管理实战工作坊

腾讯云大数据

大数据 elasticsearch

真的香!Github一夜爆火被各大厂要求直接下架的面试题库也太全了

编程菌

Java 编程 程序员 面试 计算机

【ClickHouse】 核心特性

LeifChen

Clickhouse 8月日更

PAI:一站式云原生AI平台

阿里云大数据AI技术

[架构实战营一期] 模块五作业

trymorewang

架构实战营

有了阿里人的并发图册+JDK源码速成笔记,我终于不慌内卷了

编程菌

Java 编程 程序员 面试 计算机

从零开始的SRC挖掘

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞挖掘

面试必考:秒杀系统如何设计?

苏三说技术

系统设计 高并发 秒杀

网络攻防学习笔记 Day109

穿过生命散发芬芳

网络安全 8月日更

前端之算法(八)贪心算法

Augus

算法 8月日更

全靠阿里内部(珠峰版)Java面试笔记,成功拿下12家大厂offer

编程菌

Java 编程 程序员 阿里 计算机

模块五作业:设计微博评论的高性能高可用计算架构

Felix

模块五作业

绝影

架构训练营

架构实战营模块五作业

袁小芬

干货来袭!阿里技术官甩出的内部首推分布式系统开发笔记太顶了

编程菌

Java 编程 程序员 面试 计算机

阿里架构师花近十年时间整理出来的Java核心知识pdf(Java岗)

编程菌

Java 编程 程序员 面试 计算机

模块五作业

king

常见酒店行业术语

IT蜗壳-Tango

8月日更

全民K歌内容挖掘与召回_AI&大模型_DataFunTalk_InfoQ精选文章