作者:阿里云MVP田亮
一、产品背景
克拉克拉(KilaKila)是国内专注二次元、主打年轻用户的娱乐互动内容社区软件。KilaKila 推出互动语音直播、短视频、对话小说等功能,满足当下年轻用户个性化、碎片化的文娱需求。其中短视频每天都有海量的视频素材产生,这对用户造成了严重的信息过载,难以从中自主挑选感兴趣的内容。每一位视频内容的消费者同时也是生产者,期望自己的作品能够被更多的志同道合者所看到,获得最大的曝光度。
为解决以上矛盾,考虑构建个性化推荐系统,在不需要用户明确说明更多信息的情况下仅仅依靠分析用户的历史行为数据,为用户推荐他可能感兴趣的内容。同时,推荐系统能够有效挖掘长尾内容,使一些小众的主题作品能够获得尽可能多的展示机会。面对以上业务诉求,经技术调研后决定使用阿里云PAI平台搭建基于KilaKila二次元UGC的个性化智能推荐系统,即个性化和排序技术为基础的热门视频推荐服务。
二、整体架构:
推荐系统整体架构分为两个阶段,即召回阶段+排序阶段。召回阶段可以由若干召回通道组成,根据用户的历史兴趣和历史行为从千万级别的视频库中挑选出一个候选集,候选集远小于视频库但大于最后呈现给用户的推荐列表。
在推荐系统中采用协同过滤算法生成视频候选集,候选集中都是用户可能会感兴趣的内容。
排序阶段则是在召回的候选集上根据相应的指标,如覆盖率、满意度、新颖度等综合各个召回通道的结果对候选集中的内容进行更加精准的计算并排序,达到从候选集中进一步挑选出用户最可能的感兴趣的高质量内容,生成推荐列表,一般为1000左右。我们使用LR+GBDT算法模型对召回阶段的视频候选集进行打分排序,该模型首先被Facebook在2014年提出,模型集成了LR和GBDT的优点。GBDT发现有效的特征组合Feature Set,然后将Feature Set引入到LR模型中。该技术方案目前广泛使用在各大互联网公司推荐系统中。KilaKila推荐系统整体架构如下图1所示:
▲图1 KilaKila推荐系统整体架构
该视频推荐系统主要以阿里云机器学习平台(PAI)和MaxCompute
数加平台搭建的,如下图2所示:
▲图2 阿里云机器学习平台
三、日志采集
用户在使用KilaKila APP时会产生各类行为日志。针对行为日志采集环节,我们选择了阿里云日志服务(Log Service)。该组件首先在本地服务器部署Logtail服务,该服务将日志实时传输到LogHup所配置Log Store中(Topic)。在Log Store基础上通过投递服务将海量日志同步到MaxCompute数据仓库中供批处理离线计算。与此同时,该海量日志也会被storm集群用于实时消费,满足实时业务和模型实时反馈。 如下图3所示:
▲图3 阿里云日志采集
四、特征工程
- 特征正确性
特征正确是保证模型训练有效性的前提,该过程需要注意平滑方式、值域上下限。 - 特征离散化
- 大规模组合
- 加强重要特征的作用
由于模型的参数估计环节存在受多种因素影响的可能性,这种影响会导致重要特征作用不足。所以可以增强该特征与训练目标的相关性,例如个性化特征。 - 向量化 - embedding
相关或相似的词可使用embedding表征用户和内容来做推荐,避免分别建模的损耗。如下图4所示:
▲图4 特征工程
五、召回阶段
1. 基于协同过滤的召回
这里使用基于物品的协同过滤算法,即为用户推荐与历史喜欢过物品所相似的物品,这个过程称之为基于物品的协同过滤算法(ItemCF)。但该过程不是利用物品内容属性计算物品之间的相似度而是通过分析用户行为来计算物品之间的相似度。如下图5所示
图5
该算法主要分为两步
1计算物品之间的相似度;
2根据物品的相似度和用户的历史行为生成推荐列表。
定义物品的相似度
其中 |𝑁(𝑖)|表示喜欢物品 i 的用户数。但该公式会造成任何物品都会和热门物品有很大的相似度,这不利于挖掘长尾信息。为了避免推荐出热门的物品,改进为:
2. 基于内容的召回
从历史记录中推测用户的偏好——如果两个人所看的视频相似,那么这两个人就相似。如果两个视频被相同的群体消费,那么这两视频就相似。所以协同过滤的做法根本没有考虑推荐内容方面的知识结构,也可以说协同过滤算法是内容无关的,所以我们使用多路召回,也就是在协同过滤的基础上再加上基于内容的召回。
具体思路是将视频的图像和音频分别转换为图片的形式,基于图片数据训练一个深度学习卷积神经网络模型,该训练模型分别对每个视频提取图像embedding特征向量和音频embedding特征向量。最后合成基于图像和音频的视频内容embedding特征向量。根据特征向量的相似度对每个视频召回候选集合。如下图6所示:
▲图6 基于深度学习的视频内容理解模型
六、排序阶段
在召回阶段之后获得了视频候选集,但直接将候选集呈现给用户仍然太过庞大,需要对召回结果做进一步精细化的排序处理。这里采用流行的 GBDT+LR 模型,模型结构如图7所示:
GBDT 是基于 Boosting 思想的 ensemble 模型,由多颗决策树组成,具有以下优点:
(1)对输入特征的分布没有要求。
(2)根据熵增益自动进行特征转换、特征组合、特征选择和离散化,得到高维的组合特征,从而省去了人工转换的过程并且支持了多个特征的 Interaction。
(3)预测复杂度与特征个数无关。
▲图7 GBDT+LR 模型
七、模型评估
1. 准确率。
预测准确率是度量一个推荐系统的能力,是最重要的推荐系统离线评测指标。
计算方法:已知一个离线数据集,该数据集包含用户的历史行为数据。通过时间将该数据集分成训练集和测试集。在训练集上建立用户的行为与兴趣模型,而后将该模型用于预测用户在测试集上的行为表现并计算预测行为与测试集上实际行为的重合度,TopN 推荐的预测准确率会得到precision和recall两个度量指标。
3. 覆盖率
覆盖率(coverage)描述一个推荐系统对物品长尾的发掘能力,简单定义为推荐系统能够推荐出来的物品占总物品集合的比例。
其中,系统用户集合为 U,推荐系统给每个用户推荐一个长度为 N 的物品列表 R(u)。覆盖率也可以用信息熵和基尼系数定义。覆盖率为 100%的推荐系统会将每个物品推荐给至少一个用户。为了更细致描述推荐系统发掘长尾的能力,需要统计推荐列表中不同物品出现次数的分布,如果所有物品都出现在推荐列表中且出现的次数差不多,则推荐系统具有较好的发掘长尾能力。但是在视频推荐中视频质量参差不齐,如果单纯为追求覆盖率则会导致高质量视频被低质量视频稀释,因为在视频推荐中可以容忍较低的覆盖率。
推荐系统一般都具有马太效应。评测推荐系统是否具有马太效应,可以使用基尼系数,设 G1 是从初始用户行为中计算出的物品流行度的基尼系数,G2 是从推荐列表中计算出的物品流行度的基尼系数,如果 G1
八、 阿里云机器学习平台(PAI)应用
KilaKila视频智能推荐系统是基于阿里云机器学习 PAI 平台搭建的,主要处理流程包括数据预处理、特征提取、模型训练、模型评估、在线实时预测。如下图8所示:
▲图8 Kilakila模型训练流程
在数据预处理阶段,主要以阿里云日志服务(Log Hup)和MaxCompute为中心所构建数据处理系统。
在模型训练阶段,召回过程主要采用协同过滤算法,其根据热门视频、兴趣视频、qurey视频生成召回候选集合;在排序阶段使用LR+GBDT模型。在训练过程中,根据需求和目标不断的调整参数和融合。
模型评估阶段使用PAI平台二分类评估组件和混淆矩阵组件进行模型评估。通过生成可视化评估报告来查看模型的各种指标数据,例如AUC值,如图9所示。通过模型评估让推荐系统变得灵活可控。
在实时预测阶段通过用户行为实时反馈提升用户体验。此外,根据用户的实时反馈建立用户的长短期兴趣并且建立基于人类记忆遗忘模型来搭建内容基础质量打分体系。
模型上线后,我们使用ABTest接口系统来评判模型的好坏,主要的评判指标是人均消费视频个数和视频曝光点击转化率。
▲图9 模型auc
至此,整个推荐过程结束。通过阿里云所提供的丰富开发套件和算法库,大大缩短了克拉克拉(Kilakila)从想法到产品落地的研发周期。