R&S | 论文阅读:用于YouTube推荐的深度神经网络

2019-04-22  本文已影响0人  机智的叉烧

来自于YouTube的经典论文《Deep Neural Networks for YouTube Recommendation》的有关笔记,绝对不如看论文本身,这里提炼出比本人认为非常重要的点,架构,特征选择,模型以及一些小tricks。

纯翻译或者流水账肯定没啥意思,都是些个人理解和思考吧,希望大家喜欢,如有错误欢迎指出。

懒人目录

引言

从Youtube的现实场景来看,目前视频的推荐主要面临规模、新鲜度以及噪音三大问题,主要的讨论如下:

这应该是Intro中最重要的内容,有关相关工作,本人计划在小结之前集中谈一下有关参考文献中可以进一步挖掘的彩蛋。

系统概述

这节虽然没有一个公式,但是却成了后续推荐系统基本架构形成的重要里程碑,将推荐系统的基本逻辑切成两个关键部分,召回+排序,论文中的说法是候选集生成+排序。

整体架构图是这样的,相信很多人都已经看过。

image

对一个用户,直接那百万级的数据进行计算排序肯定是不合理的,于是通过特定逻辑进行候选集的生成将会是一个很高效的手法,这里一般是采用用户历史行为、历史查询等行为进行分析计算的,逻辑相对简单,可以是类似协同过滤之类的方法,这里重点保证一个比较粗略的个性化,保证的是用户大概率“不会不喜欢”。(当然,即使是协同过滤,其实都可能花很长时间,甚至有人说协同过滤逻辑在有些场景甚至是周度更新的)

通过召回可以有效缩小范围,后续可以根据召回结果进行更为精细的推荐了,此时的任务就是排序,根据更为精细、丰富的用户、用户行为、视频等特征和信息进行打分,最终提供给用户,此时的内容将会更加精准,此时为用户提供的就是高质量的内容,从找回得到的百级别的信息,到最后推荐的只有10来个条目,真正实现了“大海捞针”,真正的“猜你喜欢”。

此时作者补充到的是,设备上可能有一些用户自己的数据,或者是其他数据源,这些也是需要放入个性化清单里面的,这个有利于进行一些特征挖掘,同时也是需要推送给用户的(甚至是广告),这些可以直接放入候选集中。

候选集生成

候选集的产生,是需要从百万级别的数据中筛选出几百个相关的视频,这块的思路来源于文献[23]的最小化秩损失(不知道这里rank翻译成这个对不对,这篇论文目前还没看),这种方法只针对用户的观看记录进行embedding,局限性比较强。

核心思想

用分类做推荐的思想在本文得以体现,这里的分类思路可以类比word2vector中的CBOW,但是不同的是,此处的逻辑转变为,对于用户U,预测看完N个视频后的最有可能看哪个视频,这就是一个分类问题,这是建模逻辑的关键。通过模型后,可以获得若干个用户可能会看的视频,并根据概率排序,排在前面的就是用户很可能喜欢的数据,通过这种逻辑能有效快速召回相关数据。

对于正样本,此处定义为看完视频的才叫做正类(还会有很多反馈机制,例如点击,手指滑动之类的,但最终选了这个),这算是一种隐式反馈,主要因为显性反馈太稀疏。

模型架构

看完结构就发现和CBOW非常像,通过分类的模式去训练一套向量,把最后一层softmax激活以后的结果作为视频vector,前面的作为用户vector训练好,然后后面就通过最近邻的方式召回响应的内容,模型结构如下:

image

当然的,里面提到了观看过的而视频序列、搜索序列、地理特征、视频生命、性别等多维特征,部分连续特征还有例如平方的操作,文章后面也会提到。

异构信号

这种深度学习的模式,可以通过深度学习的模式,能够涵盖大量的离散、连续、emb特征,搜索历史、观看历史被引入并分别进行了平均化,衡量用户近期的行为特点;demographic特征(可以理解为人群特征吧,有的地方形容是人口特征不太好)可以有效应对新用户的冷启动问题;另外用户地理区域和设备具有一定的特点因此也被引入(例如美国人可能不太会care英国的一些很小的事情),还有就是用户性别、登录状态等信息,对连续的有进行归一化处理。

文章重点提到了“样本年龄”特征,这里可以理解为视频已经上传的时长,视频的上传量很大,但是实际生效、产生热度的时间非常短暂,存在一定的“新鲜性”,这种“新鲜性”是非常不稳定的,新鲜期一过热度会非常快速的下降(文中给出了下面的图),然而对于候选集生成这个步骤是需要反映一定长时间下用户的观看情况,因此加入这个“样本年龄”的特征,有利于处理这个“新鲜度”的陡变问题。图4展示了使用了这个特征的结果,绿色线是实际的分布情况,在添加了“样本年龄”这个特征后能够更好地拟合出这种“新鲜”状态下的波动。

正负样本和上下文的选择

训练样本角度,考虑的是所有视频的观看记录,但是新视频一直是一个非常难处理的问题,因此专门为其设置了协同过滤的管道进行召回并且在后续进行传播,另外,对每个用户,应该只选择固定数量的样本,这样能避免过度活跃的用户主导损失函数值。

这里谈到了有关上下文的选择和构建的思路,主要有下面几个关键点。

排序

排序阶段要求的是高度精准、高度个性化,这里需要涵盖的特征也因此会增多,但是要哪些不要那些,怎么处理和转化就是个很重要的问题。

特征工程

众所周知特征工程是最终结果好坏的关键。只实验表明原始数据并不会有好的结果,需要花费大量时间进行转化才是关键。

其中,用户以前与Item本身以及相关Item的互动是进行用户喜好推荐的关键点,例如用户在该频道中看过多少视频,上次看过该主题的视频是何时,这种连续型特征对item间的泛化能力很强;另外是候选集生成时的打分信息在排序阶段同样适用,哪些数据源产生的这个候选item,以及这个每个数据源给这个item打多少分等。

另外是一些对“流失”有关的特征也非常有用,例如近期给他推了类似的item但他没看或者没有交互,此时就要降低推荐概率。

离散特征embedding

离散特征,尤其是ID类的特征,都是通过embedding的方式抽取的,但是值得注意的是,文章中只选择频率TOPN个ID的embedding,其余都用0做default表示,对于多值离散型特征,通过平均来处理。

另外,所有ID类特征均共享同一套embedding方案,这对于泛化能力、训练速度、内存占用都有好处。

连续特征归一化

神经网络对输入的分布和范围等非常敏感,这点不同于树类模型。会通过特定方式映射到[0,1)上,同时还会添加诸如平方、开方作为特征映射,同时也被证明能提升离线精度。

观看时长建模

观看时长建模被用作是最终的排序依据,此处使用的是加权逻辑回归。

image

此处的特色是用观看时长对正样本加权。

总结

文章的主要特点感觉还是在于将整体流程的切分,这种切分结合个人理解主要有如下优势:

当然还有很多有用的技巧可供参考。

首先是召回阶段。

排序阶段在这里。

作者的重要参考文献

另外,参考文献似乎有一些比较有意思的观点和议题,可以拿来看看,这里放2篇吧。

[22] H. Wang, N. Wang, and D.-Y. Yeung. Collaborative deep learning for recommender systems. In Proceedings of the 21th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, KDD ’15, pages 1235-1244, New York, NY, USA, 2015. ACM. (深度学习做协同过滤)
[21] A. van den Oord, S. Dieleman, and B. Schrauwen. Deep content-based music recommendation. In C. J. C. Burges, L. Bottou, M. Welling, Z. Ghahramani, and K. Q. Weinberger, editors, Advances in Neural Information Processing Systems 26, pages 2643-2651. Curran Associates, Inc., 2013. (单纯想看看音乐推荐)

我的参考文献

[1] Deep Neural Networks for YouTube Recommendation(论文原文)
[2] http://13zone.com/2018/09/02/8/(别人的翻译,准确性还行,建议还是看论文)

上一篇下一篇

猜你喜欢

热点阅读