zoukankan      html  css  js  c++  java
  • 论文笔记-Deep Neural Networks for YouTube Recommendations

    从各方资料总结了一下大体思路,论文中很多细节还有待细读。

    1.引言

    youtube视频推荐的三大挑战:

    (1)规模大:数以亿计

    (2)新鲜度:每秒就有很多新视频上传,要考虑用户的实时行为和新视频的推荐,平衡好新视频和好视频。(exploration and exploitation)

    (3)噪音:用户历史行为很稀疏并且有各种难以观测的隐性因子。而视频本身数据也是非结构化的。推荐算法需要有很好的鲁棒性。

    2.系统概览

    和我们熟知的召回、排序流程是一样的。这里候选集的生成除了使用dnn生成的之外,还可以引入其他方式得到的候选集,后面都称为召回。

    召回和排序两个阶段分别用一个dnn来进行训练。在召回阶段,从数以亿计的视频中选出几百个候选视频,在排序阶段对几百个视频进行打分,排序后展现给用户。

    3.召回

    在李宏毅的课程中曾介绍过矩阵分解可以一个看做简单的nn,而矩阵分解在推荐上也是很早就有过应用的。这里DNN的使用可以看做是对mf的一种非线性泛化。

    对召回过程的建模,文中将其看做是一个超大规模的多分类问题。每一个视频就是一个类别。在给定用户U和上下文C的条件下,预测在时间t下观看的视频类别为 i,视频库记为V

    其中对V中的每个视频i,被embedding为一个 vj 的向量,而 user与context的pair被 embedding为向量 u。所以最后就成了多分类的softmax问题。

    在这里,embedding是说对离散的变量mapping为一个稠密的向量。

    对每个视频的embedding,是将视频的文本放入Embedding工具(例如Word2Vec,但TensorFlow自带)得到。而用户的embedding,则是通过训练而来。

    DNN的目标就是学习输入的 embedding 向量u,使得这个u在通过softmax分类器后能够对视频做出准确预测。其中u可以看做是用户的历史行为和上下文的函数。

    召回网络结构:

    主要特征处理:

    (1)用户浏览过的视频,每个做embedding后求平均

    (2)用户的搜索query,每个token做embedding后求平均

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

    (4)example age: 视频上传后的时间

    样本和上下文的选择:

    (1)不仅使用推荐场景的展示、点击日志,也使用其他非推荐场景的数据,快速捕捉用户的兴趣。

    (2)对每个用户使用固定的样本数量,这样对每个用户是公平的,防止活跃用户主导了损失函数。

    (3)反直觉的,去掉序列信息,只是对每次的token embeding,避免最后一次搜索主导了推荐内容。

    (4)不对称的共同浏览问题 asymmetric co-watch probabilities ,指出用户观看视频时,遵循的是一种非对称的共同看过模式,在初始的观看序列中,范围会比较广泛,在后期的观看中,范围会逐渐集中。而大部分协同过滤算法,在推荐时往往利用的是用户的全量观看历史。所以,作者的改进在于从用户的观看历史序列中,只截取held-out watch之前的观看序列

    在线请求时,通过上述DNN训练得到用户&上下文embedding的向量u,然后与视频库的所有vj进行内积运算,检索出内积值最大的几百个推荐候选列表。这里需要与所有视频库的视频向量做内积,时间花费太大,文中采用了一种hash的快速算法。

    4.排序

    排序的DNN框架和召回类似,输入的时候加入了更多的特征。

    对类别类特征,做embedding,比如视频Id类特征。在基数很高的情况下,可以只对点击的topN的item做embedding,其余的直接embedding为0。而对于像“过去点击的视频”这种multivalent特征,与召回阶段的处理相同,进行加权平均即可。另外一个值得注意的是,同维度不同feature采用的相同ID的embedding是共享的(比如“过去浏览的视频id” “seed视频id”),这样可以大大加速训练,但显然输入层仍要分别填充。(这句话不太懂)

    NN对scale比较敏感,对连续类特征,文中使用了一个积分的归一化方法。一般而言除了树模型外其他方法对scale都是比较敏感的。

    不同与通常的CTR预估,这里ranking任务利用用户期望观看时长来进行建模。有点击的为正样本,有PV无点击的为负样本,正样本需要根据观看时长进行加权,负样本权重则为1。训练阶段网络最后一层用的是加权的逻辑回归。训练得到回归的参数后,利用得到期望观看时长。

    参考:

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

    http://www.jianshu.com/p/19ef129fdde2

    http://blog.csdn.net/xiongjiezk/article/details/73445835

    https://www.zhihu.com/question/20829671

    http://www.jianshu.com/p/c5b8268d273b

  • 相关阅读:
    推荐系统多样性指标衡量
    deepfm代码参考
    tf多值离散embedding方法
    样本加权
    tensorflow 分布式搭建
    优化器
    协同过滤代码
    NLP
    双线性ffm
    各种总结
  • 原文地址:https://www.cnblogs.com/akanecode/p/8093707.html
Copyright © 2011-2022 走看看