Deep Neural Network for YouTube Recommendation论文精读

1.架构图的左上角,为什么在online serving的时候不直接用这套网络进行预测而要使用nearest neighbor search 的方法?

这个问题的答案我想了蛮久,也看了很多大神的观点,在这里把我领悟到的做一个阐述。这个问题的答案是一个经典的工程和学术做trade-off的结果,在model serving过程中对几百万个候选集完整跑完模型最后一层softmax开销太大,因此在通过candidate generation model得到user 和 video的embedding之后,通过最近邻搜索的方法的效率高很多。甚至不用把任何model inference的过程搬上服务器,只需要把user embedding和video embedding存到redis或者内存中就好了。假若模型最后relu输出的维度是Nx1的向量(这也就是所谓的user embedding),接下来的softmax层是一个MxN的矩阵,M是候选视频集合的数量,那么这里每个行向量就是对应的vedio embedding。这个embedding是在离线模型中训练好的,线上只用softmax之前的那些网络,每次推荐都会生成一个Nx1的user embedding,然后对离线训练好的MxN的video矩阵进行一个近邻搜索,看哪个视频向量和他的相似度最高,这里可以提升的原因是因为,可以利用LSH之类的方法提升匹配效率。

2.多分类问题中,Youtube的candidate video有百万之巨,意味着有几百万个分类,这必然会影响训练效果和速度,如何改进?

采用negtive sampling,我认为这里的思路和word2vec中的差不多,采用这种负采样,降低了每次参数更新的复杂度。知道如果不负采样的话每次更新都会对所有的vedio向量进行更新,因为softmax层存在的缘故,采用负采样之后,直接利用极大似然法,最大化正样本出现的概率最小化负样本出现的概率,而不必进行softmax计算。

3.Youtube的用户对新视频有偏好,那么在模型构建的过程中如何引入这个feature?

模型引入了“Example Age”这个feature。直接把sample log距离当前的时间作为example age。比如24小时前的日志,这个example age就是24。在做模型serving的时候,不管使用那个video,会直接把这个feature设成0。引入这个特征可以更加偏向于新的视频。

4、在对训练集的预处理过程中,YouTube没有采用原始的用户日志,而是对每个用户提取等数量的训练样本,这是为什么?

这个的原因是避免活跃用户的训练样本主宰整个模型训练,减少高度活跃用户对于loss的过度影响。

5.YouTube为什么不采取类似RNN的Sequence model,而是完全摒弃了用户观看历史的时序特征,把用户最近的浏览历史等同看待,这不会损失有效信息吗?

会导致模型过度拟合上个时间段的数据,如果一个用户刚刚点开某个领域的视频,会导致模型过度推荐这个领域的视频给用户造成不好的体验感。比如如果用户刚搜索过“周杰伦”,你就把用户主页的推荐结果大部分变成周杰伦有关的视频,这其实是非常差的体验。为了综合考虑之前多次搜索和观看的信息,YouTube丢掉了时序信息,将用户近期的历史纪录等同看待。

6、在处理测试集的时候,YouTube为什么不采用经典的随机留一法(random holdout),而是一定要把用户最近的一次观看行为作为测试集?

这个也很容易想到,避免引入未来信息,带来数据穿越,产生过拟合。

7、在确定优化目标的时候,YouTube为什么不采用经典的CTR,或者播放率(Play Rate),而是采用了每次曝光预期播放时间(expected watch time per impression)作为优化目标?

最近在看《美团机器学习实战》里面到这么一句话:从机器学习的发展现状 来看,很多机器学习从业者在处理问题时直接进行特征工程和模型选择,而忽略了问题建模。问题建模是十分重要的一个环节,必不可少!评价指标有很多,应该选择一个能跟业务指标波动一致的评估指标,这样通过观察评估指标就能判断模型效果,可以大大提高模型迭代效率。显然,在youtube的场景,用户停留时长是一个最重要的指标,同样是点击视频,如果我点击了立马关掉,和我点击了完整看完,传达的是不一样的信息。

8、在进行video embedding的时候,为什么要直接把大量长尾的video直接用0向量代替?

这又是一次工程和算法的trade-off,把大量长尾的video截断掉,主要还是为了节省online serving中宝贵的内存资源。当然从模型角度,低频video的embedding的准确性不佳是另一个“截断掉也不那么可惜”的理由。

9、针对某些特征,比如#previous impressions,为什么要进行开方和平方处理后,当作三个特征输入模型?

直接引入连续数值特征的非线性,提高模型的拟合能力

10、为什么ranking model不采用经典的logistic regression当作输出层,而是采用了weighted logistic regression?

这个我暂时还没有想通,看到别的大神说我们已经知道模型采用了expected watch time per impression作为优化目标,所以如果简单使用LR就无法引入正样本的watch time信息。因此采用weighted LR,将watch time作为正样本的weight,在线上serving中使用e(Wx+b)做预测可以直接得到expected watch time的近似,完美。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值