论文笔记 | RecSys2016 | Deep Neural Networks for YouTube Recommendations

youtube-dnn-title.png

论文地址:https://research.google.com/pubs/archive/45530.pdf

一 为什么读这篇

其实当年在微博做视频推荐时就这篇刚出来时就看过,只不过那时刚接触深度学习,有好多点也没get到,现在经过一些沉淀,知道dl是怎么玩的了,另外以现在这个时间点看,才知道这篇的工作是非常有影响力的,现在很多上了深度学习推荐系统的公司都参考了该文,所以重新补补课。后续将youtube有关推荐系统的文章都看了。

二 截止阅读时这篇论文的引用次数

2019.5.29 444次。比wide & deep 还多点,在推荐领域里算不少了。

三 相关背景介绍

投在16年9月的RecSys会议上,比wide & deep晚一点,看来16年真是dl和推荐系统结合的元年,出了一大堆东西。

一作Paul Covington14年加入google,之前是05–09UC伯克利的本科,斯坦福的硕士,貌似博士肄业?加入google之前在Jawbone干过,还做过CV的东西。看来牛逼的人做什么领域都行。另外,也是kaggle的master。二作的资料没找到,三作更资深一点,也是搞过CV和NLP。

四 关键词

DNN

video recommendations

五 论文的主要贡献

1 算是工业界上把DNN用在推荐系统的先驱了

2 候选生成和排序都用DNN来做

3 需要哪些特征,需要对特征做什么处理,优化目标应该是什么都有介绍

六 详细解读

0 摘要

本文从深度召回和深度排序两个阶段讲,并分享设计,迭代和维护大规模推荐系统的实践经验。

1 介绍

youtube-dnn-fig1.png

YouTube视频推荐主要有3个方面的挑战:

规模:在小数据集规模下的现存算法在YouTube这个规模下都fail了。

新鲜度:可以从E/E的角度理解将新内容与完善的视频进行平衡。

噪声:几个方面。1 由于YouTube上历史用户行为的稀疏性以及一系列不可测外部因素导致预测在本质上是很难的。2 很难得知真实的用户满意度,而只能用有噪声的隐式反馈信号替代。3 与内容相关联的元数据结构很差,没有明确的定义。

在上千亿的样本上训练了接近数10亿参数的模型。

2 系统概述

youtube-dnn-fig2.png

如图2所示,系统由负责候选生成和负责排序的两个网络组成。

3 候选生成

3.1 将推荐视为分类

本文将推荐视为极限多分类问题,基于用户和上下文,从含有上百万视频(classes)的语料库中分类在某个时刻具体观看的视频。

其中表示高维用户embedding,表示高维候选视频embedding。深度神经网络的任务是根据用户的历史和上下文来学习用户embedding ,这对于用softmax分类器区分视频是有用的。

尽管YouTube有显式反馈机制(点赞/取消赞等)存在,不过因为其稀疏性所以训练时用隐式反馈,将用户完整播放完的视频视为正样本。

有效的极限多分类

为了有效训练上百万的类别,参考《On using very large target vocabulary for neural machine translation》,采用了从背景分布(候选采样)采样负类的技术,然后通过权重重要性校正这种采样。实践中,对上千个负样本采样,相当于传统softmax的100倍以上。还有一种选择是用分级softmax。

在服务阶段为了选择提供给用户的topN需要计算最相似的N个类(视频)。在数十毫秒的严格服务延迟下对数百万视频进行评分需要在类的数量上具有次线性的近似评分方案。本文用了之前YouTube系统中《Label partitioning for sublinear ranking》的hashing技术。因为在服务阶段不需要校准softmax输出层的似然度,所以评分问题可以简化为在点积空间中进行最近邻搜索,这个用通用库就可以完成。通过A/B实验发现最近邻搜索算法的选择并不敏感。

3.2 模型架构

受word2vec启发,学习每个视频的高维embedding,并将这些embedding输入网络。一个用户的观看历史表示为稀疏视频IDs的向量表示的可变序列。网络需要固定大小的稠密输入,并且通过执行最佳策略(总和,分量最大等)之一来简单地平均embedding。重要的是,embedding通过其他模型参数联合学习。输出还有非观看视频特征,如图3所示。

youtube-dnn-fig3.png

3.3 异构信号

使用深度神经网络作为矩阵分解的推广的一个关键优势就是可以轻松地将任意连续特征和分类特征添加到模型中。搜索历史可以视为和观看历史相似的处理。统计学特征提供了重要的先验,以便推荐行为对于新用户也是合理的。用户的地理区域和设备做嵌入后拼接。简单的二元特征和连续特征(如用户性别,登录状态,年龄)归一化到[0, 1]后直接输入网络。

"Example age"特征

本文观察到用户更喜欢新鲜内容,但不以牺牲相关性为代价。机器学习系统通常表现出朝过去的隐式偏见,因为它们是通过训练历史样本来预测未来行为。视频流行度的分布是非常不稳定的,但是由推荐系统生成的语料库上的多项分布反映了在用几周训练窗口中的平均观看似然度。为了校正这个问题,本文在训练期间将训练样本的age作为一个特征输入。在服务阶段,这个特征设置为0(或小的负值),以表示模型在训练窗口的最后进行预测。

youtube-dnn-fig4.png

3.4 标签和上下文选择

这一节讲了很多在面对业务问题时的trick。

非常需要强调的一点是推荐经常涉及解决"替代问题",并将结果转移到特定上下文。一个经典例子就是更精准的预测分数会产生更有效的电影推荐《Building industrial-scale real-world recommender systems》。

训练样本是从YouTube全站得到的,而不仅仅来自于推荐引擎。否则,新视频将很难浮现并使推荐偏向利用这一侧。改进实时指标的另一个关键见解是为每个用户生成固定数量的训练样本,从而在损失函数中对用户均等的加权。 这阻止了一小部分高度活跃的用户占据主要损失。

这里作者举了一个例子,一个用户刚搜索完霉霉,如果给用户的最后一个搜索页作为主页推荐肯定非常糟。通过丢弃序列信息并用无序的词条表示搜索查询,分类器将不再直接意识到标签的来源。

视频的自然消费模式通常会导致非常不对称的共同观看概率。比如电视剧通常是按顺序观看的,用户发现的明星通常先大众,再小众。本文发现预测用户的下一次观看比预测一个随机的held-out观看要好的多,如图5所示。

youtube-dnn-fig5.png

许多协同过滤系统隐式的选择了标签和上下文,通过hold-out来实现(如图5a),而这泄露了未来的信息并忽略了任意非对称消费模式。作为对比,本文用图5b的模式,即不会用到未来的信息。(这一节讲了时间序列预估问题中,在建模时很重要的特征穿越问题)

3.5 特征和深度的实验

youtube-dnn-fig6.png

本实验中,用100w的视频和100w的搜索词条,embedding维度为256,最大包括近50次观看和近50次搜索。网络结构用塔模式(不断减半)。

youtube-dnn-tower.png

4 排序

youtube-dnn-fig7.png

排序目标函数是期望观看时长,因为ctr通常会鼓励用户并未完成的欺骗性视频("clickbait"),而观看时长更能捕获参与度。

4.1 特征表示

分类特征在其基数上有很大差异,一些是二元的(如用户是否登录),一些有上百万的值(如用户上一次搜索的query)。根据特征是仅有一个值还是多个值对特征进一步划分。

特征工程

在排序模型中使用上百个特征。主要挑战在于表示用户行为的时间序列以及这些行为与曝光视频的相关性。

本文观察到的最重要的信号是描述用户之前与物品本身和其他相似物品交互的信号,这与排序广告中的经验也相匹配(FB GBDT+LR)。举个栗子,考虑用户过去使用上传视频得分的频道的历史记录,用户在此频道观看的视频数是多少?用户最后一次观看有关此主题的视频是什么时候?这些描述过去用户对相关物品的行为的连续特征非常有用,因为它们可以很好地扩展到不同的物品。本文还发现,将生成候选的信息以特征的形式传递给排序也非常重要,举个栗子,哪些源提名这个视频候选?它们分配了什么分数?

描述过去视频曝光次数的特征对于在推荐中引入"流失"也很重要(后续请求不会返回相同的列表)。如果给用户最近推荐了一个视频,但没观看,那么模型会在下一页加载时自然降低该曝光。

嵌入分类特征

分类特征的嵌入维数与唯一值的数量的对数成比例地增加。非常大基础的ID空间(如视频IDs,搜索query)通过点击曝光的频率topN排序后截断。超出词汇表的值简单的映射为0嵌入。

很重要的一点是,同一ID空间中的分类特征也共享底层的嵌入。

归一化连续特征

神经网络对其输入的扩展和分布非常敏感(BN指出),而诸如决策树集合之类的方法对于单个特征的缩放是不变的。通过使用累积分布,,将x均匀分不到[0, 1]。为了让网络有力的表达super和sub-linear,除了原始归一化特征,还有和。

4.2 对预期观看时长建模

为了预测预期观看时长,使用weighted logistic regression。

N为训练样本数,k为正样本,为第i次曝光的观看时长。

4.3 隐层实验

youtube-dnn-table1.png

七 小结

这篇文章真该早看,非常的成系统成体系,方方面面都讲到了,看完后有种自己也能做个YouTube推荐系统的幻觉。。料非常足,从体系架构,到细节的特征采集,特征变换,优化目标,非常值得深挖。

素质四连

要解决什么问题

用深度学习做大规模推荐系统

用了什么方法解决

候选生成和排序模型都用DNN+各种tricks(也许叫工程经验更合适)

效果如何

貌似没有和其他方法的对比,只是自己和自己比。。

还存在什么问题

DNN比较常规,还没上各种骚套路

八 补充

看Youtube怎么利用深度学习做推荐

下面这3篇王喆的解读非常值得一看,一些评论也很有价值

重读Youtube深度学习推荐系统论文,字字珠玑,惊为神文

YouTube深度学习推荐系统的十大工程问题

揭开YouTube深度推荐系统模型Serving之谜

你可能感兴趣的:(论文笔记 | RecSys2016 | Deep Neural Networks for YouTube Recommendations)