推荐系统笔记7-Deep Neural Networks for YouTube Recommendations

本文介绍Youtube的一篇Paper,Deep Neural Networks for YouTube Recommendations

摘要

根据经典的检索的two-stage:首先是通过deep candidate generation model产生TopN个候选物品集合,然后deep ranking model做综合排序;

一、介绍

Youtube为几十亿用户提供个性化推荐,推荐在Youtube存在三个方面的挑战:

  • 规模(Scale):Youtube数据规模大;
  • 新鲜度(Freshness):在Youtube上每秒都会存在视频的上传和用户行为的改变,所以需要平衡好新的内容和计算好的物品(如Video)向量,这也是一个经典的EE(exploration/exploitation)问题;
  • 噪声(Noise):如果用户-物品矩阵稀疏且加上一些不可观测的外部因素,很少能够得到用户满意度的真相,所以需要算法对这些问题足够robust;

二、所用的推荐系统

Youtube所用的推荐系统结果如图:
在这里插入图片描述
系统由两个神经网络构成:一个是candidate generation ,另一个是 ranking
其中candidate generation采用用户行为历史作为输入,从大的集合中检索出小集合(数百个),这些是和用户高度相关的物品集合,这一步骤仅提供广泛的个性化,除此之外,这一步的好处也在于它能融合其他方法产生的候选集合ranking阶段需要通过高召回率来区分候选物品的重要性,即通过一个打分函数来为不同物品排序;

三、CANDIDATE GENERATION

以前的方法是通过矩阵分解并结合rank loss来得到候选物品集合,Youtube早期的神经网络迭代是用浅层网络,通过Embedding用户观看过的Video模仿这种分解行为;
推荐看作分类:将推荐看作为一个极端多分类问题,即基于用户u和上下文C,从几百万个video集合V中选取时刻t应观看的video,用 w t w_t wt表示,如下式所示: P ( w t = i ∣ U , C ) = e u i u ∑ j ∈ V e u j u P({w_t} = i|U,C) = {{{e^{{u_i}u}}} \over {\sum\nolimits_{j \in V} {{e^{{u_j}u}}} }} P(wt=iU,C)=jVeujueuiu上式中u是用户和上下文的embedding, u j u_j uj代表候选物品的embedding,神经网络的目标就是学习u向量;除此之外,Youtube使用隐式反馈机制来训练模型(用户完整的看完一个视频代表用户喜欢),不用显示反馈机制原因是因为其矩阵过于稀疏,隐式反馈训练数据量级大;
因为上面的极端多分类甚至是几百万分类问题,所以和Word2Vec的思想一致,这里使用负采样来提高训练速度(并通过重要性权重纠正负采样);这里没有使用层级Softmax,论文中提出是因为遍历每个树节点涉及到判别大量不相关的用户-Video集合,从而使得分类问题变难;
在Serving阶段,需要计算最相似的TopN个videos,以前Youtube使用Hashing来实现,因为Softmax的输出是不需要的,所以这里的分类器也使用的是类似的方法:k-近邻(比如可以用KD树,球树)来更快的查找;
模型结构方面:为每个video学习一个embedding向量并输入到前向反馈神经网络中,一个用户的观看历史代表不同长度的句子(注意这里也可以用bigrams或unigrams),然后每个单词映射为一个embedding向量;由于网络需要固定长度的输入,所以简单的对一个句子的所有词取平均表现最好,将所有embedding和输入拼接起来送入神经网络中,然后可通过BP算法更新参数,具体的结构如图所示:
在这里插入图片描述
上图中还有一些其他的输入,比如性别、年龄等,将其归一化[0,1]后作为实值拼接embedding向量,该网络的好处就是随意拼接特征,无论离散或者连续;
注: 机器学习会偏向于历史数据,因为是通过历史数据来训练并预测未来数据的,对于推荐系统来说,也就是使得用户缺乏新鲜感;为了纠正这个现象,在训练的时候将age作为特征,在Serving的时候,将这个特征变为0(或者小的负数),这就是上图的example age(这里的age应该是观看的总时长或者用户注册时间?)。
这里存在一个上下文选择的问题,如下图所示:
在这里插入图片描述
比如Word2Vec训练模型的时候,使用的是上图左边的方式,一个词左右两边参与训练,但是这会存在一个问题,比如线上测试算法的时候,你并没有未来的数据,这会导致数据穿越,那么模型就会存在偏差,所以文中采用的是上图右边的方法,仅采用用户以前观看过的video做输入,然后该Video的下一个Video做label;
特征多少和网络深度方面:如下图所示:
在这里插入图片描述
增加特征和深度能有效改善准确度,但是同时也会增加时间成本,所以需要tradeoff时间和准确度;

四、Ranking

Rank模块的作用:1、match算法模块可以使用不同的算法来得到候选集合,它们的评分标准也可能不同,Rank来处理这些集合;2、因为物品集合只有几百个,而不是几百万个,所以可以用更多的特征来描述video和用户的关系;
4.1、Feature Engineering
粗略的分为类别特征和连续特征,主要的挑战是表示用户动作的时间序列,以及这些动作如何与被评分的视频相关联。
Embedding Categorical Features: 将类别特征做Embedding,但是这里不同的是:1、对于有大量ID的字典,需要做一个截断处理,也就是根据词频选取TopN个ID,不在词典的值简单的映射为0向量;2、对于相同ID但是在不同的语境中(比如用户impression的ID,上一次看过的ID等),他们都是共享同一个Embedding,也就是对于相同ID是全局Embedding,但是不同的是copy成几份(每个Feature一份),这样子就可以实现每个Feature的个性化,具体如下图所示;
在这里插入图片描述
Normalizing Continuous Features: NN对于输入分布和规模特别敏感,所以需要对连续特征归一化,归一化的方法很重要,这里也使用的是累积分布函数CDF来归一化,如下式所示:
在这里插入图片描述
除了上面的归一化,也会对特征做平方和开方处理,这个可以提高离线准确度;
4.2、Modeling ExpectedWatch Time
模型的目标是预测给定video的观看时间并归一化到[0,1],即正样本是(the video impression was clicked) ,负样本是 (the impression was not clicked),使用weighted logistic regression并用交叉熵损失。这里要注意的是:对于正样本来说,是由观看video的时间来计算权重(比如w=单个video时间/总时间,w是这个样本分错的权重?),而对于负样本(未点击),不存在观看时间,使用一致的权重。所以用这种方式,学习到的逻辑回归差距是 ∑ T i N − K {{\sum {{T_i}} } \over {N - K}} NKTi,其中N是总的训练样例,K是正样本个数, T i T_i Ti是第i个样本的观看时长。

注:上述图片均来自原文

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值