转《Deep Neural Networks for YouTube Recommendations》

1、背景

Youtube推荐视频主要面临下面三个挑战:

  • (1)Scale: 规模。专业的分布式学习算法,高效的服务系统对于处理YouTube庞大的用户群和语料库是非常重要的;
  • (2)Freshness: 新鲜度。Youtube具有一个非常动态的语料库,每秒就会上传几个小时的视频。推荐系统的模型应该能及时响应新上传的内容和用户最近的行为,从探索的角度看,平衡新视频和旧视频的推荐很好理解;
  • (3)Noise: 噪音。由于数据稀疏性和很多外部因素的影响,我们只能拿到用户的隐式反馈,而无法获取用户真实的满意度,因此存在了大量的噪声。

2、系统框架

youtube推荐系统框架

Youtube的整体推荐系统框架如上图,从上图可以看出整个系统包含了2个神经网络,候选生成(召回)网络和排序网络。

召回网络:根据用户的历史行为,在百万级别的视频中挑选出几百个用户感兴趣的视频。

召回网络召回的视频满足用户泛化的兴趣,用户之间的相似度则通过粗略的特征来表示,如用户观看视频的ID,搜索query和用户画像。

排序网络:将召回的视频进行打分,该过程将使用更加丰富和精细的用户和视频特征,从而的到一个相对最好的推荐效果。

3、召回网络

Youtube把推荐问题看成一个超大规模多酚类问题。即表示在 t 时刻,用户 U 和其上下文 C 下,在视频库 V 里观看视频 wt 为第 i 个视频的概率。其数学表达式如下:


其中 u∈R表示(用户,上下文) 的高维embedding,vj∈R表示每个候选视频的embedding向量。

因此深度神经网络的目的就是在给定用户历史行为和上下文的情况下,学习出用户的embedding向量 u,从而用于 softmax 分类器来召回视频。

每次计算,softmax 的分母,都需要遍历视频库 V 中所有的视频,并且用户上下文向量与视频向量之间的点积,exp等操作造成计算量过大,因此如何高效训练成为一个问题。

高效训练模型

为了高效地训练模型,论文中借鉴了机器翻译中的sampled softmax 方法,其主要思想就是利用重要性采样采出部分视频 V',尽可能的取逼近视频库 V。下面是简单介绍,想了解细节的同学可以参考 https://link.zhihu.com/?target=http%3A//www.aclweb.org/anthology/P15-1001

  • (1)candidate sampling,在实践中通过重要性采样方法采样几千个负样本;
  • (2)经过importance weighting的方式进行修正。

除了上面的 sampled softmax 方法之外,已有的其他解决方法主要有:

  • 利用其它方法,去逼近softmax的概率,比如:基于noise-contrastive estimation(NCE)的方法,类似于word2vec中的skipgram的负采样;
  • 层次softmax。

线上预测过程

sampled softmax 算法仅仅是加快了训练速度,预测时,还是需要对分母项做全量计算。对同一个用户 U,所有候选视频计算softmax时的分母相同,所以召回时,只需要比较分子的大小,因此大大减少了计算量。召回过程最终被简化为求最近邻的问题,可以通过建立视频向量索引,来加快搜索。

召回网络的整个框架如下图:
召回框架

模型的输入是用户视频历史浏览行为、历史搜索行为、人口统计学信息和其余上下文信息拼接成的向量;输出为上下文已经讲到的线上和离线训练两个部分。

特征工程

  • 历史观看video:把历史完成观看视频的embedding向量进行平均;
  • 历史搜索query:把历史搜索的query分词后的token的embedding向量进行平均;
  • 人口统计学信息:性别、年龄、地域等;
  • 其他上下文信息:设备、登录状态等。

Example Age 特征

除了以上的主要特征之外,YouTube还将视频的Example Age作为特征加入训练,因为除了相关性之外,用户更喜欢新视频,当然是用户感兴趣的新视频。视频的Example Age = 视频最大的发布时间-该视频的上传时间。

线上召回时,将Example Age特征的值均设置成0(或是一个小的负数),有利于召回上传时间短,但是视频内容与用户兴趣更相关的新视频。

其实加入这个特征的原因是上传越早的视频,更有机会成为热门视频,与大多数用户相关,因此在训练时加入该特征,有利于该特征的权重较大,而在线上召回时,对该特征的权重进行打压,则有利于其他相关性特征,因此对上传时间较短的新视频召回有一定的帮助。

Label and Context Selection

训练样本生成

首先,不仅仅使用YouTube内推荐给用户的数据,还使用在其他嵌入页面用户观看的数据,如相关性推荐页面。如果用户在其他嵌入页面观看了视频,则可以通过协同过滤的方式推荐给别人。

其次,为每个用户生成固定数量训练样本,可以在损失函数中对用户进行加权,防止部分活跃用户对损失的主导。

抛弃序列信息

对过去观看视频/历史搜索query的embedding向量进行加权平均。

是否可以考虑将历史向量按照时间衰减,进行加权平均?在文中给出的答案是否定的。这点其实违反直觉,可能原因是模型对负反馈没有很好的建模。

不对称的共同浏览(asymmetric co-watch)问题

连续电视剧通常按顺序观看,是序列式的。用户通常都是先对流行的视频感兴趣,其次才会专注于细分的视频。

因此我们预测用户下一次浏览的视频的效果会比预测held-out的方式好。在传统的协同过滤算法或者FM等算法中,都是采用了图(a)的held-out方法,忽略了不对称的浏览方式。


4、排序网络

排序网络架构与召回网络架构基本是相似的,最大的区别在于排序网络的最后一层是weighted LR,而召回网络的最后一层是softmax,其次为排序网络使用的特征更加精细化。排序网络的模型结构如下图:


特征工程

最重要的特征是用户与视频或相似视频的交互历史的特征。

Embedding Categorical Features

神经网络更适合处理连续稠密特征,因此ID类特征都需要embedding到稠密的向量中。

重要的是,在相同ID空间下的embedding向量是可以共享的,比如,video ID的embedding可以供多个不同的特征使用(浏览video ID,上一次浏览的video ID, 作为推荐种子的video ID)。共享embedding对提高模型泛华能力,加快训练速度,减少内存占用都很有帮助。

Normalizing Continuous Features

神经网络对特征值得scaling以及输入的分布很敏感,对连续特征合适的归一化对收敛是非常重要的(除了树模型,大多数方法都需要对特征做归一化)。

预测观看时长

本部分摘自https://juejin.im/post/5bbdde27f265da0aea699a29

我们的目标是给定预训练数据后,不论是正样本还是负样本,预测其期望的观看时长,因此weighted LR作为排序网络的输出层。

文章采用watch_minutes_per_impression作为预测目标,但这个目标很难被直接预测,所以作者对模型做了一些修改:

  • 所有正样本的权重等于观看时长;
  • 所有负样本的权重等于1;
  • 采用加权逻辑回归来处理这个问题。加权逻辑回归的思想可以在weighted logistic Regression model一文查询。这是一种重采样相关的方法。
  • 标准的logistic regression中,y的值为[0,1]之间的数,其表达式为:



    而其odds表达式为:



    其中,正样本出现的概率为:
    image.png

    负样本出现的概率为:


  • 在weighted Logistic Regression中,这个式子则被替代为:



    即正样本出现的概率和/负样本出现的概率和(其中Ti表示每个正样本的观看时长,N表示样本总数,k表示正样本数量)。

  • 而per impression的观看时长的期望为:



    即:



    其中p即为CTR,由于p的值相对很小,最后的两个约等于才能成立。所以我们最终可以用odds来估计expected watch minutes。

因此在serving的时候,watch_minutes_per_impression的估计值为:


参考资料:
https://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/45530.pdf
http://www.aclweb.org/anthology/P15-1001
石塔西:看Youtube怎么利用深度学习做推荐
清凇:用深度学习(DNN)构建推荐系统 - Deep Neural Networks for YouTube Recommendations论文精读

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容