微信号:ai-front

介绍:面向AI爱好者、开发者和科学家,提供最新最全AI领域技术资讯、一线业界实践案例、搜罗整理业界技术分享干货、最新AI论文解读。每周一节技术分享公开课,助力你全面拥抱人工智能技术。

论文导读 | YouTube 2016年公布的基于深度学习的推荐算法

2017-11-26 19:35 推动技术落地
作者 | 陈宇飞
编辑 | Vincent
AI 前线导语:YouTube 在 2016 年公布的基于 deep learning 来做的推荐算法,非常地新颖,也给大家指明了一个方向怎么样做这种类型的推荐算法。本文将为各位读者解析 YouTube 发表的该篇论文中提及的两级排序算法架构。

更多干货内容请关注微信公众号“AI 前线”(ID:ai-front)

最近做了太多的系统的论文,今天我们来看一看一个 2016 的 ML 相关的论文:Deep Neural Networks for YouTube Recommendations https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/45530.pdf 。YouTube 在 2016 年公布的基于 deep learning 来做的推荐算法,非常地新颖,也给大家指明了一个方向怎么样做这种类型的推荐算法。

YouTube 的整个推荐系统可以被理解为是一个多级排序算法 (multistage ranking)。第一级排序算法在这里叫 candidate generation,是一个神经网络,主要是比较粗糙地根据用户的喜好先把用户需要的视频分类一下,然后第二级的排序算法会把推荐视频的个数砍到 10 个左右。排序算法分两级主要是为了节省每次用户访问的时候,节省排序算法所需要用的资源。

要细讲 YouTube 这两级的排序算法的架构,我们要先来先介绍一下 YouTube 是如何把推荐算法改成 classification 的。推荐算法可以被理解为一个极端的 multiclass classification;我们要做的是,在某一个时间(t),从所有的视频里面(V),对于某一个视频(i),这个用户(U)在这个 context 下(C)会不会去选择看这个视频(Wt = i)

在这里,u 是一个用户的 embedding,Vi 和 Vj 都是视频的 embedding。这里所有提到的 embedding 都是从 sparse 的特征压缩到一个 dense 的向量。在上面的定义下,这个算法它需要学习的是 user embedding(注意,这里没有提到要学习 video embedding,后面会提到 video embedding 是怎么做的)。这里 label 都是根据视频观看而不是用户给视频做的点赞啊、反对啊这些用户特地去做的行为,因为视频观看的数据量大,而且很多没有很多人观看的视频点赞和反对的数据太少了。

为了优化训练的速度,因为每一个 class 会有很多 negative,这里选择了去 sample negative 然后根据 importance weighting 去矫正。为了优化用户访问时候的速度,找视频的时候用的是 nearest neighbour。

下面我们来看一下具体在第一级,candidate generation 的时候,这个模型的架构

这里每一个用户搜索过的词条跟看过的视频都会变成 embeeding,然后取一个均值,来代表这个用户看视频跟搜索的喜好。这里还要注意到的是几个点:

  • 所有 dense feature 跟 embedding 都是直接被串联的(concatenate)

  • embedding 是跟着 model parameter 一起 learn 的,所以绝对不是 generalized embedding

  • 之后是几层 fully connected ReLU

  • 所有的 feature 都 normalize 到了 [0, 1] 的区间内。

整体的 deep learning + embedding 模型可以理解为 generalized matrix factorization,但是这个比 matrix factorization 好的一点就是各种各样的 dense feature 可以直接被加到模型里面。因为 embedding 是 joint trained,新加入的 feature 会改变这个 embedding。论文里提到一个很好的例子就是 Example Age;ML 系统一般都会 bias 到老的视频上面,因为它们的特征更多。但是有很多的视频是有时效性的,今天爆火的视频明天就不火了。为了修正推荐系统的时效性,example age 被作为一个特征加了进去,这样模型就可以掌握所对应的时效性的分布。

在数据源上面,YouTube 也做了不少思考。推荐算法的 label 是从所有视频播放来的,而不只是被推荐的视频播放来的,以确保如果用户有其他途径导致某一个视频火了,推荐算法能够很快地获得这个信息。还有,推荐算法是不知道这个视频是从哪里搜索来到,否则的话主页推荐会跟用户刚刚结束的搜索关系过度紧密。最后,YouTube 每次计算的概率是未来会观看的概率,而不是 hold-out 的视频被观看的概率。这个问题在视频推荐里面差别非常大,因为视频推荐数据里面本来就有很多的视频观看是有非常高的 co-watch 概率,比如电视剧和 MV。(其实最后一点我不大理解为什么花费这么多地篇幅去解释。。。。)

具体在模型架构的尝试上面,在这个论文里面的模型是 3 层深度,但是论文是试过 0-4 层深度,以及不同的特征对精度的贡献

这个图里面可以看出来在加了特征以后模型的精度是有提升的,说明模型考虑了这些 dense feature 跟 embedding 的互动。

接下来我们来看第二级,ranking 的模型架构

对于第二级的模型跟第一级的模型来说,本质上没有区别,但是因为第二级需要考虑的视频少了很多,所以可以考虑的特征多了很多。这里 sparse 特征还要分两个:

  • univalent,只能有一个值的 sparse 特征。比如这个视频的 video ID

  • multivalent,能有有很多值得 sparse 特征,比如这个用户之前看的视频 ID

对于这个模型的 feature engineering 最大的挑战是如何表述用户的历史行为,跟如何把这些历史行为跟现在这个视频联系起来。从实验结果来看,最重要地特征是用户跟这个视频还有跟其它视频的互动。文章还特地提到这类特征跟 ads 里面重要地特征很像。还有一些特征需要表达 churn,以确保用户在一个视频被推荐而没有点击之后,算法不会推荐同样的视频。因为用的是 NN,还有一个特殊地地方就是输入必须要 normalize 到 [0,1] 之间。normalization 是用 quantile 去做的。

这里对于视频 embedding 还有的细节是:

  • embedding 的 dimensionality 是 log(ID 的个数)

  • 特别大的 ID space (比如 video ID 跟 search ID)会根据频率来 truncate,低频率的 ID 会直接对应到 0

  • multivalent 的 IDs 会先去一个均值

  • 每一个 video ID 对应的 embedding 在一个 network 里面都是一样的,就算它们想要表达的意义不同。假设这个模型的输入有‘用户之前看过的视频’跟‘给这个用户之前推荐过的视频’有同样的视频,那么这个视频对应的 embedding 是一样的。后面的 ReLU 会通过学习来用不同的方式去使用这些 embedding

因为 YouTube 需要优化的是视频观看时间,而现在这个模型的输出是点击与否,跟观看时间有落差。文章里面用了 weighted logistic regression

  • 每一个有点击的视频(positive example)的 weight 是观看时间

  • 每一个没有点击的视频(negative example)的 weight 是 1(unit weight)

  • 模型在数据有这样的 weighting 情况下学到每一个视频点击的概率是 (SUM(Ti) for all i in N) / N - k,N 是 training sample 的总量,k 是点击视频的量,Ti 是第 i 个视频的观看时间

  • 如果观看的视频远少于没有观看的视频,那么模型学到的概率是 ET,P 是点击概率,E[T] 是观看时间的预期

  • 点击率 P 是非常小的(绝大部分视频没有被观看),那么模型预测的值大概是 E[T],就是对观看时间的预期

  • serving 的时候用 exp(Wx+b) 把概率装换成观测时间的预测

对于 hidden layer 的尝试,第二级模型跟第一级模型的结论类似,层数多了之后是 diminishing return

总的来说,这个 paper 我觉得讲的非常的清楚,再次推荐大家去看一下原文:

https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/45530.pdf  

原文地址

https://zhuanlan.zhihu.com/p/30976777?group_id=913749825247223808


 
AI前线 更多文章 商汤IPO指日可待,管理140位博士的工程VP谈AI落地 基于Flink流处理的动态实时超大规模用户行为分析 陆奇的策略:小米+百度,但雷军和李彦宏两巨头能亲密合作吗? 送书|十年大数据,十年区块链,两技术如何共生演进? 又来抢大数据饭碗?AWS发布SageMaker:省略数据清洗、建模、调参等步骤
猜您喜欢 【第2章第303回】前端学习笔记之HTML DOM操作 FEX 技术周刊 - 2017\/02\/13 资源丨北美求职白皮书:像硅谷领航者一样思考和行动 职业连连看模型,助你找到理想职业 .NET\/C#程序员技能表