您的位置:首页 > 理论基础 > 计算机网络

论文笔记:Deep neural networks for YouTube recommendations

2017-06-19 00:35 911 查看

论文提要

YouTube如今是工业界最大和最复杂的推荐系统之一,本文作者提出了一种高效的基于深度学习的推荐系统。该系统和工业界经典的推荐流程一样,系统分为候选集生成(也称为搜索或召回),排序两个阶段,这两个阶段分别使用了一个深度神经网络,本文从实践的角度对特征处理,模型训练和调优都有详细介绍。

解决的问题

YouTube是世界上最大的视频创作及分享平台,其视频推荐的面临的主要问题有:

1. 海量数据:现有的推荐算法通常在小数据集有良好的表现,但是在YouTube这样规模的数据集上未必表现良好,同时YouTube用户基数庞大,对服务系统的响应时间有严格要求。

2. **新鲜度:**YouTube系统每秒钟都有大量新视频上传,推荐系统应该能够快速的对视频及用户行为作出反馈,并平衡新老视频的综合推荐。

3. 噪声: 用户通常多种外界因素干扰,推荐系统通常不能够准确获得用户对视频的反馈信息,所以推荐算法必须对数据足够鲁棒。

作者之所以用DNN解决这些问题,是因为Google目前通用的学习方案都开始转向深度学习,该系统基于TensorFlow搭建在Google Brain上,推荐模型的变量将近10亿,并经受了超千亿的样本训练。

解决方法

整体结构

首先我们看一下作者的系统结构图:



该结构图和工业届常规的推荐系统结构图并无二致,整个推荐系统分为候选集生成(也称为搜索/召回)和排序两个阶段。其中召回阶段负责基于用户画像及场景数据从海量的视频库(百万级别)中将相关度最高的资源检索出来,作为候选集; 排序阶段负责基于更加精细的特征对候选集(百级别)进行排序,最终呈现给用户的只是很少一部分数据。

候选集生成

这一阶段的目标是从资源库中找出几百个最相关的资源,推荐系统以往的做法是采用矩阵分解技术计算相关度,作者提到他们早期也使用过浅层神经网络对用户历史浏览的embedded进行训练,该算法可以视作是非线性的矩阵分解技术。

作者将推荐任务转化为一个超级多分类问题,也即在时刻t,用户U在场景C的观看Wt为从视频库V预测为视频i的类别,其中每一个视频i可以视作为一个类别,其分类模型如下式所示:


(1)

其中u是RN空间内用户和场景信息的高维embedding, vj表示候选视频在RN空间的embedding。Embedding可以简单的理解为将一个稀疏实体(user,vedio)到RN空间内的密集向量的映射。

DNN的任务是基于用户的历史及场景,学习一个用户向量u的映射函数(embedding),通过一个softmax分类器,u能够有效的从视频语料库中识别视频的类别(也就是推荐的结果)。

模型结构

使用DNN的一个关键优点是,DNN的输入可以方便的处理离散和连续变量。作者将用户观看历史和搜索历史通过embedding的方式映射为一个稠密的向量,用户场景信息以及用户画像信息,比如年龄,性别等离散特征也被归一化到[0,1]作为DNN的输入。作者所设计的DNN架构如下图所示:



针对该架构,有如下几点值得关注:

(1) 主要特征的处理

列表内容观看和搜索向量的生成: 用户的历史观看是一个稀疏的,变长的视频id序列,作者对每一个视频从固定的词汇表里计算出一个多维词向量,这样用户的观看历史就可以通过加权平均的方式映射为一个稠密的,定长的watch vector。整个过程类似于word2vec算法。Search vector也可以通过类似的方式生成。

用户画像特征:如地理位置,设备,性别,年龄,登录状态等连续或离散特征都被归一化为[0,1], 和watch vector以及search vector做拼接(concat)

example age:该特征表示视频被上传之后的时间。我们知道,每一秒中,YouTube都有大量视频被上传,推荐这些最新视频对于YouTube来说是极其重要的。作者持续的观察到,用户更倾向于推荐那些尽管相关度不高但是是最新(fresh)的视频。推荐系统往往是利用用户过去的行为来预测未来,那么对于历史行为,推荐系统通常是能够学习到一种隐式的基准的。但是对于视频的流行度分布,往往是高度不稳定的。作者写道,在之前的处理上,训练所选择的时间窗口,是采用最近几周的用户平均观看似然率来进行推荐的。那么考虑到example age的现象,我们的推荐策略将example age作为一个特征拼接到DNN的输入向量。训练时,时间窗口越靠后,该值越接近于0或者为一个小负数。加入了example age特征后,模型效果和观测到的实际数据更加逼近,参见下图:



(2) 样本和上下文选择

样本选择:训练样本是从全部的YouTube观看记录中产生,而不仅仅是推荐系统所产生的观看记录。这样做的好处是便于加入对新视频的测试,防止对推荐者的观看记录过度利用,同时用户在其他途径的观看行为也容易被推荐系统采集到,从而可以快速传播用户行为基于CF。另外,作者对每一个用户所产生的观看记录都生成了固定数量的训练样本,每个用户在损失函数中的权重都是相等的,防止一小部分超级活跃用户影响到损失函数的公平性。

搜索样本的无序化处理:要注意防止过拟合的情况,比如利用用户的最后一次搜索生成推荐的主页通常效果糟糕。将用户的搜索序列做无序化处理,推荐系统不再直接获知搜索样本的原始值,效果会更加鲁棒。

上下文选择:用户观看视频时,遵循的是一种非对称的共同看过模式,在初始的观看序列中,范围会比较广泛,在后期的观看中,范围会逐渐集中。而大部分协同过滤算法,在推荐时往往利用的是用户的全量观看历史。所以,作者的改进在于从用户的观看历史序列中,只截取held-out watch之前的观看序列。该过程可以描述如下图:



(3) 特征集以及深度的实验

添加特征以及DNN深度可以显著提升预测效果,但并非一直如此。第0层的输入向量全连接到softmax输出层,第0层以及输出层都是采用固定的256维度。中间的深度网络采用的是类似tower的结构。深度增加时,预测效果如下图:



显然深度增加到第四层时,模型召回的准确率已没有显著的提升了。

(4)激活函数

深度层神经节点的激活函数采用的是RELU。该函数相对于sigmoid,tansig, 最大的好处应当在于能使得节点的激活率处于一个较低的水平。

(5) 离线训练模块

softmax层的输出是预测的视频分类结果。也就是公式1中的,用户观看视频j的概率。要注意,视频向量的embedding是通过类似word2vec的方式生成的,我们能拿到视频j的id,就能得到vj的向量。

(6) 在线服务模块

在线服务有严格的性能要求,必须在几十毫秒内返回结果。DNN输出用户向量u,u与视频库中的视频向量做内积并排序,得到TopN。该过程耗费时间巨大,作者采用了一种hashing算法进行加速。

排序

该过程是对生成的候选集做进一步细粒度的排序,可以参考更多维度的特征。通常,排序阶段还涉及到对多个不同召回源的文档进行有效集成,不同源的文档其特征及打分有时候并没有可比性,所以排序阶段也需要解决此类问题。

作者在排序阶段所设计的DNN和上文的DNN的结构是类似的,并基于逻辑回归对每一个视频进行独立打分,也就是说,离线训练模块,对视频的打分函数不再是softmax,而是采用的逻辑回归。排序DNN参见下图:



另外,排序的评估指标,由于常用的CTR指标对于视频搜索具有一定的欺骗性,所以作者提出采用期望观看时间作为评估指标

针对排序DNN,有如下几点需要关注:

(1) 尽管神经网络能够减轻人工特征工程的负担,但是我们依然需要花费精力将用户及视频数据转化为有效的特征。而其难点在于对用户行为序列建模,并关联视频打分机制。但是通过对用户和物品之间的交互行为,我们仍然能提取出一些有用信息,比如: 用户对频道的喜爱程度可以通过用户对该频道的视频的点击次数来度量;用户在该频道的上次观看时间,等。。

(2) 类别特征embedding:作者依然采用embedding的方式映射稀疏离散特征为密集向量,作者为每一个类别特征维度生成一个独立的embedding空间。值得注意的是,对于相同域的特征可以共享embedding,其优势在于加速迭代,降低内存开销。

(3) 连续特征归一化:NN对于输入的分布及特征的尺度敏感。作者设计一种积分函数将特征映射为一个服从[0,1]分布的变量。该积分函数为:



(4) 对观看时间建模:划分样本空间时,正样本为有点击视频,负样本为无点击视频,作者采用一种加权逻辑回归基于交叉熵损失进行训练。加权方案为,正样本用观看时间赋予权值,负样本赋予单位权值。在这种方案下,逻辑回归几率为:



并根据该几率,能够推导出可以采用自然指数作为预测节点的激活函数。

(5) 隐层数的实验召回阶段DNN的方法类似。

论文贡献

本文是工业届对DNN在推荐系统上的应用的最新报告。其最突出的贡献应当在于如何结合业务实际和用户场景,选择等价问题,实现推荐系统。

首先,作者对问题的拆解合理,将整个推荐仍然分为召回和排序两个阶段。

其次,作者对特征的处理策略,非常细致,又充满智慧。比如,对example age特征的加入,对单个用户生成的样本个数进行限制,对CF中held-out方式的优化,类别及连续特征的处理等。

最后,排序阶段,对评估指标的选择能够结合业务,取期望观看时间进行训练。

我的思考

本文作者详细的讲解了样本的选择以及特征的处理。样本选择时, 作者充分考虑了训练数据的选择范围,用户样本的产生对效果的影响;特征处理过程,让人更多的感受到该过程更是一种艺术而非科学,但是其中从始至终又秉承着一种思想,就是对用户使用场景和需求的准确理解,特征处理过程也是从用户角度出发的。我们在做推荐策略时,在样本选择和特征处理方面,也应如此。

本文结构清晰,从推荐系统的整体结构讲起,划分为候选集生成和排序两个阶段,然后对每个阶段展开论述,分别训练。整体过程条理清楚,细致严密,值得我们学习。

参考资料:

https://zhuanlan.zhihu.com/p/25343518

http://www.jianshu.com/p/19ef129fdde2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐