论文笔记|Deep Neural Networks for YouTube Recommendations

这篇论文是YouTube团队发表于16年RecSys上关于推荐系统在DNN上的尝试。虽然在这过去的两年内,DNN相关的推荐系统模型层出不穷,但这篇文章依旧具有极强的尤其是在工程上的学习意义。

系统概况

文章首先介绍了在YouTube视频推荐场景的三个挑战:数据量极大,适用于小场景的模型不一定有效;更新速率快,每秒有小时级别的视频更新量,需要实现新视频的及时推荐;用户历史数据稀疏,没有标准的用户满意度的ground truth,视频数据本身非结构化,因此噪声高,需要系统具有较强鲁棒性。

整个系统结构如图所示,总体上分为用于“召回”的candidate generation模块与用于“排序”的ranking模块。首先,根据用户历史行为(包括观看记录、搜索记录、用户注册信息等),从视频库中选取数百个较为相关的视频,之后再结合视频具体信息、用户信息等更加详细的信息,对召回的数百个视频进行精确排序后作为推荐结果。

召回

召回部分需要从数百万视频中选取数百相关视频,因此对单个视频计算开销要求较高,通常选用各种协同过滤方法如i2i、u2u等。本文中将该问题建模为一个超大规模的多分类问题,使用softmax分类器,表达式为
P ( w t = i ∣ U , C ) = e v i u ∑ j ∈ V e v j u P(w_t=i|U,C)=\frac{e^{v_iu}}{\sum_{j\in V}e^{v_j u}} P(wt=iU,C)=jVevjueviu
模型输出用户embedding vector u u u,计算与各视频embedding vector v j v_j vj的余弦相似度,通过softmax分类器转化为各类别的概率后用cross-entropy代价函数进行优化。实际使用中面临的问题是,视频类别极高,达百万级,softmax运算复杂,因此在本文中使用了类似于前文中所讲的word2vec中的negative sample的方式简化了运算。具体来讲,就是计算softmax值时,不计算所有样本,而是根据一定选取方式从视频库中随机抽样 N N N个作为负样本,仅通过这 N + 1 N+1 N+1个输出值计算损失、进行优化。采样方式上,word2vec中采用的各样本采样概率为
P ( w i ) = f ( w i ) 3 / 4 ∑ j = 0 n ( f ( w j ) 3 / 4 ) P(w_i)=\frac{f(w_i)^{3/4}}{\sum^n_{j=0}(f(w_j)^{3/4})} P(wi)=j=0n(f(wj)3/4)f(wi)3/4
其中 w w w代表各视频在训练样本中的出现概率。
模型整体架构如图所示

输入包括用户历史观看视频的embedding vector的平均值、用户搜索记录的embedding vector的平均值、人口统计学信息和上下文信息concat成的向量,通过三层relu输出用户的embedding vector。其实用户与视频的求内积部分也可看做embedding层,假设用户与视频的embedding vector维度为 [ 1 , M ] [1,M] [1,M],embedding层为 [ M , N ] [M,N] [M,N] N N N为视频总量,则内积部分相当于选取embedding层相应的列进行矩阵线性运算。离线训练阶段,通过负采样的方式更新参数;而线上阶段,则直接利用得到的user vector,使用类似局部敏感哈希(Locality Sensitive Hashing,LSH)的方式进行快速检索。关于LSH的资料,一直放在收藏里还没来得及学习,之后再进行详细的讲述。
特征工程部分,用户的观看记录是变长的视频序列,这里通过加权平均(根据重要性、时间等)处理后得到一维vector。对比DNN模型与以往的矩阵分解模型,虽然同样可以获得user vector与item vector,但是使用DNN可以很方便的将想加入的其他连续或离散信息嵌入,如性别、年龄、地域等人口统计学信息和设备、登录状态等上下文信息等。
机器学习系统是通过过去的行为估计未来的行为,因此对过去行为有个隐式的bias,因此在这里将样本的“age”也就是视频上传时间作为一个特征加入。
其他方面,加入了“搜索记录”这一特征;为每个用户生成固定数量的训练样本从而避免active用户的影响;抛弃序列信息,采用加权平均(不是很理解,用户感兴趣的两个完全不同方面的vector加权平均出来的vector代表的视频一定是用户感兴趣的吗)。再就是对网络深度、宽度等超参数的调整实验了。

排序

不同于召回环节的仅需找出相似的数百个视频,ranking阶段需要对这数百个视频进行精确排序。

如图,模型结构与召回模型相似,将各类特征concat后作为输入向量,讲过三层relu后得到输出。需要注意的是模型的输出层。training阶段以weighted logistic作为优化目标,而线上使用时则以 e W x + b e^{Wx+b} eWx+b作为激励函数。
特征方面,排序部分使用了更加细致的特征。推荐、搜索领域特征工程中最难的就是如何建模用户时序行为,比如浏览过该频道多少次的数量特征和最近一次浏览该频道的时间特征。NN、树模型更加适合处理连续特征,LR更适合高维稀疏特征。因此,需要将id特征进行embedding,这里采取按照点击排序选取topN后进行embedding,其余置零。对于连续型特征,由于NN对输入特征的尺度与分布十分敏感,因此需要进行归一化,如常用CDF。除此之外,还会将归一化后的连续特征的开方和平方作为网络的输入,增加非线性构造。
对于优化目标,该模型是预测期望观看时间,因此在training阶段采用 weighted logistic regression。设正样本观看时长为 T i T_i Ti,负样本权重为1,则LR学到的odds为
∑ T i N − k \frac{\sum T_i}{N-k} NkTi
其中 N N N为总样本数, k k k为正样本数, P P P为点击率,因为点击率一般较小,所以可以将odds近似为
E [ T ] 1 + P \frac{E[T]}{1+P} 1+PE[T]
因此到线上serving时,采用 e x e^x ex作为激励函数从而近似估计期望的观看时长。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值