youtubeDNN及其优化

1.YouTube推荐系统需要解决的三大难点

  • 数据规模:YouTube 的用户和视频量级都是十亿级别的,需要分布式学习算法和高效的部署。

  • 新颖性:推荐系统需要及时对新上传的视频和用户的新行为作出响应。

  • 数据噪音:由于稀疏和外部因素影响,用户的历史行为很难预测。大部分 YouTube 视频只有隐式反馈(即用户对视频的观看行为),缺少显式反馈(即用户对视频的评分)。此外,视频的元信息不够有结构性。我们的算法需要对训练数据的这些因素稳健(robust)。

2.整体架构

图片

召回模型的网络结构:

图片

3.模型结构和算法原理

在给定用户历史行为与上下文的情况下,通过DNN网络,学习user embedding向量,作为输入送到softmax分类器,生成召回候选集。

负类采用通过重要性采样softmax,避免了softmax在计算时要便利所有视频计算指数的问题,提升了训练速度,并使用重要性加权的方式校正这个采样。对每个样本,对真实标签和采样得到的负类,最小化其交叉熵损失函数。

youtube召回模型采用了word embedding的技巧来计算每一个视频的embedding,然后将视频的embedding,用户搜索视频的embedding分别计算average,再加入用户的属性、视频质量等特征,采用两个完全相连的ReLU层和softmax函数来预测用户下一个看的视频是什么。

使用DNN的原因之一,在DNN中连续性变量和类别型变量都很容易输入到模型中,包括一些人口统计特征(Demographic features),对最终的效果起着十分重要的作用。用户的地域,设备等都可以作为embedding向量输入到DNN中去。简单的二值化特征(如性别)和数值型特征(如年龄)可以直接输入到DNN中,数值型需要经过归一化到[0,1]再输入到模型中。

MLP层使用常见的塔状设计,底层最宽,往上每层的神经元数目减半,直到 Softmax 输入层是 256 维(1024ReLU->512ReLU->256ReLU)。

在线服务阶段,通过最近邻查询的方法,找到每个用户向量最相似的topk个视频向量,做为召回结果。

4.核心代码

5.工程实践经验:

(1)把推荐问题转化为了多分类问题,会面临softmax计算低效的问题,youtubeNet通过负采样的方式,并用importance weighting的方法对采样进行校准。同时,还有做hierarchical softmax的方法来解决这一问题。

(2)候选集线上服务时,采用了最近邻搜索的方法,避免了对全候选集的逐一计算,满足了线上实时性的要求。只需要将item embedding和user embedding存到redis中即可。

(3)user embedding和vid embedding是如何生成的:

user embedding是通过user观影历史的多个item embedding,拼接其特征embedding,然后将前n个embedding融合(通常是pooling的效果最好),然后经过三层的DNN网络得到;

vid embedding有两种实现方式,一种是取了之前user embedding中用的item embedding拼接特征embedding,另一种是单独生成一个vid embedding matrix,与user embedding同时训练。目前博主用的是第一种方法实现。

本质上softmax就是在做广义矩阵分解,分出user embedding和item embedding。

(4)针对用户更偏好新视频的问题,youtube通过引入”example age”(即模型训练时间与消费行为发生时间之间的差)这个特征来解决。

(5)在youtubeNet的原始论文中,在对训练集预处理时没有采用原始的用户日志,二是针对每个用户提取了等数量的训练样本,这是为了减少高度活跃用户对于loss的过度影响。

在博主的实际实现中,是限制了采样时间范围,并没有做等数量截取,因为数据集中用户行为的疏密性差异较大。

(6)youtube没有采用类似RNN的有序模型,而是完全放弃了观影历史的时序特征,这是为了避免推荐结果过多地手最近观看地视频影响,影响推荐结果的多样性和长远性。

(7)在处理测试集的时候,youtube没有采用随机留一法(random holdout),而是把用户最近一次观看行为作为测试集,这是为了避免引入future information,产生于事实不符的数据穿越。

(8)在确定优化目标时,youtube没有用经典的ctr或播放率,而是采用了每次曝光预期播放时间作为优化目标,是因为观看时间更能真实的反映用户兴趣,且与广告收益的正相关性更强,更符合平台的长期利益和用户粘性。

(9)在进行video embedding时,youtube直接将大量长尾的video直接用0向量代替,这是为了节省online serving中的内存资源,且低频的video的embedding准确率也更低。

博主在实际的工程实现中,将这一步挪到了数据预处理中,在生成数据时,就过滤掉点击率过低的视频,使得模型训练也更快更准。结论:出现次数少的vid,在序列化模型中难以学到好的embedding。

(10)针对部分特征(如previous impressions?),进行开方和平方处理后作为三个特征输入模型,这是wield引入特征的非线性。

(11)排序模型没有用逻辑回归作为输出,而是采用weighted logistic regression,是因为LR无法引入正样本观看时长的信息,而weighted LR可以直接将观看时长作为正样本的权重,线上服务时使用e(Wx+b)做预测可以直接得到expected watch time的近似。

6.线上效果及优化

(1)多召回

(2)vid embedding和user embedding解耦(vid向量随机初始化)

(3)按类别分组,各组分别召回

(4)和attention机制结合

(5)层次聚类

(6)k-means聚类

(7)特征优化:加入观看时长、视频新鲜度(倾向于推新视频)、添加地域特征

(8)负样本的优化

(9)用户特征的增删:是否利用用户的固有特征(年龄、性别、雅俗、地域等)

(10)youtube数据覆盖量:11天的用户行为数据

(11)用于标签兴趣探索:label改为标签

(12)用于新视频冷启动

(13)用于userCF:通过user embedding相似度,找到相似用户,实现u2u2i召回

(14)与图模型结合:user embedding先经过图卷积,然后再经过dnn网络;

参考:

【1】深入理解Youtube推荐系统算法

【2】YouTube深度学习推荐系统的十大工程问题 - 知乎

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值