行业报告 AI展会 数据标注 标注供求
数据标注数据集
主页 > 机器学习 > 正文

【上】重读 Youtube 深度学习推荐系统论文,字字

这周我们一同讨论一下 Youtube 的深度引荐系统论文《Deep Neural Networks for YouTube Recommendations》,这是 2016 年的论文,依照今天的规范来看,曾经没有什么新颖的中央,我也是两年前读过这篇文章之后就放下了,但前几天重读这篇文章,竟让发现了诸多亮点,简直处处是套路,处处是经历,不由惊为神文。这篇神文给我留下的深入印象有两点:

  1. 这毫无疑问是工业界论文的模范,是我十分推崇的工程导向的,算法工程师必读的文章;
  2. 我以为毫不起眼的中央,也藏着 Youtube 工程师珍贵的工程经历,相比上周引见的阿里的深度兴味网络 DIN,最重要的价值就在于 Attention 机制,这篇文章你应该准确到句子来领会,这是我惊为神文的缘由。

废话不多说,下面就跟大家分享一下两次拜读这篇论文的不同体验和收获。

第一遍读这篇论文的时分,我想一切人都是冲着算法的架构去的,在深度学习引荐系统曾经成为各大公司“根本操作”的今天,Youtube 在算法架构上并无惊奇之处,我们来快速引见一下文章中的深度学习引荐系统的算法架构。

Youtube 的用户引荐场景自不用多说,作为全球最大的 UGC 的视频网站,需求在百万量级的视频范围下停止个性化引荐。由于候选视频汇合过大,思索 online 系统延迟问题,不宜用复杂网络直接停止引荐,所以 Youtube 采取了两层深度网络完成整个引荐过程:

  1. 第一层是Candidate Generation Model完成候选视频的快速挑选,这一步候选视频汇合由百万降低到了百的量级。
  2. 第二层是用Ranking Model完成几百个候选视频的精排

首先引见 candidate generation 模型的架构

Youtube Candidate Generation Model

我们自底而上看这个网络,最底层的输入是用户观看过的 video 的 embedding 向量,以及搜索词的 embedding 向量。至于这个 embedding 向量是怎样生成的,作者的原话是这样的

Inspired by continuous bag of words language models, we learn high dimensional embeddings for each video in a xed vocabulary and feed these embeddings into a feedforward neural network

所以作者是先用 word2vec 办法对 video 和 search token 做了 embedding 之后再作为输入的,这也是做 embedding 的“根本操作”,不用过多引见;当然,除此之外另一种大家应该也比拟熟习,就是经过加一个 embedding 层跟上面的 DNN 一同锻炼,两种办法孰优孰劣,有什么适用场所,大家能够讨论一下。

特征向量里面还包括了用户的天文位置的 embedding,年龄,性别等。然后把一切这些特征 concatenate 起来,喂给上层的 ReLU 神经网络。

三层神经网络过后,我们看到了 softmax 函数。这里 Youtube 的同窗们把这个问题看作为用户引荐 next watch 的问题,所以输出应该是一个在一切 candidate video 上的概率散布,自然是一个多分类问题。

好了,这一套深度学习的“根本操作”下来,就构成了 Youtube 的 candidate generation 网络,看似平淡无奇,其实还是躲藏着一些问题的,比方

  1. 架构图的左上角,为什么在 online serving 的时分不直接用这套网络停止预测而要运用 nearest neighbor search 的办法?
  2. 多分类问题中,Youtube 的 candidate video 有百万之巨,意味着有几百万个分类,这必然会影响锻炼效果和速度,如何改良?

这些问题在读第一遍的时分我也没有深想深看,但却是工程完成中必然会遇到的问题,我们随后再深化引见论文中的处理办法。

既然得到了几百个候选汇合,下一步就是应用 ranking 模型停止精排序,下面是 ranking 深度学习网络的架构图。

Youtube Ranking Model

乍一看上面的 ranking model 似乎与 candidate generation 模型没有什么区别,模型架构还是深度学习的“根本操作”,独一的区别就是特征工程,那么我们就讲讲特征工程。

事实上原文也明白阐明了,引入另一套 DNN 作为 ranking model 的目的就是引入更多描绘视频、用户以及二者之间关系的特征,到达对候选视频汇合精确排序的目的。

During ranking, we have access to many more features describing the video and the user’s relationship to the video because only a few hundred videos are being scored rather than the millions scored in candidate generation.

详细一点,从左至右的特征依次是

  1. impression video ID embedding: 当前要计算的 video 的 embedding
  2. watched video IDs average embedding: 用户观看过的最后 N 个视频 embedding 的 average pooling
  3. language embedding: 用户言语的 embedding 和当前视频言语的 embedding
  4. time since last watch: 自上次观看同 channel 视频的时间
  5. #previous impressions: 该视频曾经被曝光给该用户的次数

上面五个特征中,我想重点谈谈第 4 个和第 5 个。由于这两个很好的引入了对用户行为的察看。

第 4 个特征背后的思想是

We observe that the most important signals are those that describe a user’s previous interaction with the item itself and other similar items.

有一些引入 attention 的意义,这里是用了time since last watch这个特征来反响用户看同类视频的距离时间。从用户的角度想一想,假设我们刚看过“DOTA 经典回忆”这个 channel 的视频,我们很大约率是会继续看这个 channel 的视频的,那么该特征就很好的捕捉到了这一用户行为。

第 5 个特征 **#previous impressions** 则一定水平上引入了 exploration 的思想,防止同一个视频持续对同一用户停止无效曝光。尽量增加用户没看过的新视频的曝光可能性。

至此,我的第一遍论文阅读就完毕了,对 Youtube 的算法框架有了概念,但总觉得不过如此,没什么太多新颖的中央。。

但假如真这么想,还是太 naive 了,与上一篇 **阿里的深度兴味网络 DIN** 不同的是,你读懂了 DIN 的 attention 机制,你就抓住了其论文 70% 的价值,但这篇文章,假如你只读懂了 Youtube 的引荐系统架构,你只抓住了 30% 的价值。那么剩下的 70% 的价值在哪里呢?

在重读这篇文章的时分,我从一个工程师的角度,一直绷着“如何完成”这根弦,发现这篇论文的工程价值之前被我大大疏忽了。下面我列出十个文中处理的十分有价值的问题:

  1. 文中把引荐问题转换成多分类问题,在 next watch 的场景下,每一个备选 video 都会是一个分类,因而总共的分类有数百万之巨,这在运用 softmax 锻炼时无疑是低效的,这个问题 Youtube 是如何处理的?
  2. 在 candidate generation model 的 serving 过程中,Youtube 为什么不直接采用锻炼时的 model 停止预测,而是采用了一种最近邻搜索的办法?
  3. Youtube 的用户对新视频有偏好,那么在模型构建的过程中如何引入这个 feature?
  4. 在对锻炼集的预处置过程中,Youtube 没有采用原始的用户日志,而是对每个用户提取等数量的锻炼样本,这是为什么?
  5. Youtube 为什么不采取相似 RNN 的 Sequence model,而是完整摒弃了用户观看历史的时序特征,把用户最近的阅读历史同等对待,这不会损失有效信息吗?
  6. 在处置测试集的时分,Youtube 为什么不采用经典的随机留一法(random holdout),而是一定要把用户最近的一次观看行为作为测试集?
  7. 在肯定优化目的的时分,Youtube 为什么不采用经典的 CTR,或者播放率(Play Rate),而是采用了每次曝光预期播放时间(expected watch time per impression)作为优化目的?
  8. 在停止 video embedding 的时分,为什么要直接把大量长尾的 video 直接用 0 向量替代?
  9. 针对某些特征,比方 #previous impressions,为什么要停止开方战争方处置后,当作三个特征输入模型?
  10. 为什么 ranking model 不采用经典的 logistic regression 当作输出层,而是采用了 weighted logistic regression?

由于我也是在视频引荐范畴工作,所以能够很担任任的说以上的十个问题都是十分有价值的。但今天一口吻写到这里,觉得有点气力缺乏了。。大家假如感兴味的话能够点个赞,我明天再细致剖析一下以上十大问题的答案。
参考材料:

  1. Deep Neural Networks for YouTube Recommendation
  2. Recommender System Paper List
  3. 引荐系统中的留意力机制——阿里深度兴味网络(DIN)

转载自 知乎专栏 王喆的机器学习笔记

这周我们一同讨论一下 Youtube 的深度引荐系统论文《Deep Neural Networks for YouTube Recommendations》,这是 2016 年的论文,依照今天的规范来看,曾经没有什么新颖的中央,我也是两年前读过这篇文章之后就放下了,但前几天重读这篇文章,竟让发现了诸多亮点,简直处处是套路,处处是经历,不由惊为神文。这篇神文给我留下的深入印象有两点:

  1. 这毫无疑问是工业界论文的模范,是我十分推崇的工程导向的,算法工程师必读的文章;
  2. 我以为毫不起眼的中央,也藏着 Youtube 工程师珍贵的工程经历,相比上周引见的阿里的深度兴味网络 DIN,最重要的价值就在于 Attention 机制,这篇文章你应该准确到句子来领会,这是我惊为神文的缘由。

废话不多说,下面就跟大家分享一下两次拜读这篇论文的不同体验和收获。

第一遍读这篇论文的时分,我想一切人都是冲着算法的架构去的,在深度学习引荐系统曾经成为各大公司“根本操作”的今天,Youtube 在算法架构上并无惊奇之处,我们来快速引见一下文章中的深度学习引荐系统的算法架构。

Youtube 的用户引荐场景自不用多说,作为全球最大的 UGC 的视频网站,需求在百万量级的视频范围下停止个性化引荐。由于候选视频汇合过大,思索 online 系统延迟问题,不宜用复杂网络直接停止引荐,所以 Youtube 采取了两层深度网络完成整个引荐过程:

  1. 第一层是Candidate Generation Model完成候选视频的快速挑选,这一步候选视频汇合由百万降低到了百的量级。
  2. 第二层是用Ranking Model完成几百个候选视频的精排

首先引见 candidate generation 模型的架构

Youtube Candidate Generation Model

我们自底而上看这个网络,最底层的输入是用户观看过的 video 的 embedding 向量,以及搜索词的 embedding 向量。至于这个 embedding 向量是怎样生成的,作者的原话是这样的

Inspired by continuous bag of words language models, we learn high dimensional embeddings for each video in a xed vocabulary and feed these embeddings into a feedforward neural network

所以作者是先用 word2vec 办法对 video 和 search token 做了 embedding 之后再作为输入的,这也是做 embedding 的“根本操作”,不用过多引见;当然,除此之外另一种大家应该也比拟熟习,就是经过加一个 embedding 层跟上面的 DNN 一同锻炼,两种办法孰优孰劣,有什么适用场所,大家能够讨论一下。

特征向量里面还包括了用户的天文位置的 embedding,年龄,性别等。然后把一切这些特征 concatenate 起来,喂给上层的 ReLU 神经网络。

三层神经网络过后,我们看到了 softmax 函数。这里 Youtube 的同窗们把这个问题看作为用户引荐 next watch 的问题,所以输出应该是一个在一切 candidate video 上的概率散布,自然是一个多分类问题。

好了,这一套深度学习的“根本操作”下来,就构成了 Youtube 的 candidate generation 网络,看似平淡无奇,其实还是躲藏着一些问题的,比方

  1. 架构图的左上角,为什么在 online serving 的时分不直接用这套网络停止预测而要运用 nearest neighbor search 的办法?
  2. 多分类问题中,Youtube 的 candidate video 有百万之巨,意味着有几百万个分类,这必然会影响锻炼效果和速度,如何改良?

这些问题在读第一遍的时分我也没有深想深看,但却是工程完成中必然会遇到的问题,我们随后再深化引见论文中的处理办法。

既然得到了几百个候选汇合,下一步就是应用 ranking 模型停止精排序,下面是 ranking 深度学习网络的架构图。

Youtube Ranking Model

乍一看上面的 ranking model 似乎与 candidate generation 模型没有什么区别,模型架构还是深度学习的“根本操作”,独一的区别就是特征工程,那么我们就讲讲特征工程。

事实上原文也明白阐明了,引入另一套 DNN 作为 ranking model 的目的就是引入更多描绘视频、用户以及二者之间关系的特征,到达对候选视频汇合精确排序的目的。

During ranking, we have access to many more features describing the video and the user’s relationship to the video because only a few hundred videos are being scored rather than the millions scored in candidate generation.

详细一点,从左至右的特征依次是

  1. impression video ID embedding: 当前要计算的 video 的 embedding
  2. watched video IDs average embedding: 用户观看过的最后 N 个视频 embedding 的 average pooling
  3. language embedding: 用户言语的 embedding 和当前视频言语的 embedding
  4. time since last watch: 自上次观看同 channel 视频的时间
  5. #previous impressions: 该视频曾经被曝光给该用户的次数

上面五个特征中,我想重点谈谈第 4 个和第 5 个。由于这两个很好的引入了对用户行为的察看。

第 4 个特征背后的思想是

We observe that the most important signals are those that describe a user’s previous interaction with the item itself and other similar items.

有一些引入 attention 的意义,这里是用了time since last watch这个特征来反响用户看同类视频的距离时间。从用户的角度想一想,假设我们刚看过“DOTA 经典回忆”这个 channel 的视频,我们很大约率是会继续看这个 channel 的视频的,那么该特征就很好的捕捉到了这一用户行为。

第 5 个特征 **#previous impressions** 则一定水平上引入了 exploration 的思想,防止同一个视频持续对同一用户停止无效曝光。尽量增加用户没看过的新视频的曝光可能性。

至此,我的第一遍论文阅读就完毕了,对 Youtube 的算法框架有了概念,但总觉得不过如此,没什么太多新颖的中央。。

但假如真这么想,还是太 naive 了,与上一篇 **阿里的深度兴味网络 DIN** 不同的是,你读懂了 DIN 的 attention 机制,你就抓住了其论文 70% 的价值,但这篇文章,假如你只读懂了 Youtube 的引荐系统架构,你只抓住了 30% 的价值。那么剩下的 70% 的价值在哪里呢?

在重读这篇文章的时分,我从一个工程师的角度,一直绷着“如何完成”这根弦,发现这篇论文的工程价值之前被我大大疏忽了。下面我列出十个文中处理的十分有价值的问题:

  1. 文中把引荐问题转换成多分类问题,在 next watch 的场景下,每一个备选 video 都会是一个分类,因而总共的分类有数百万之巨,这在运用 softmax 锻炼时无疑是低效的,这个问题 Youtube 是如何处理的?
  2. 在 candidate generation model 的 serving 过程中,Youtube 为什么不直接采用锻炼时的 model 停止预测,而是采用了一种最近邻搜索的办法?
  3. Youtube 的用户对新视频有偏好,那么在模型构建的过程中如何引入这个 feature?
  4. 在对锻炼集的预处置过程中,Youtube 没有采用原始的用户日志,而是对每个用户提取等数量的锻炼样本,这是为什么?
  5. Youtube 为什么不采取相似 RNN 的 Sequence model,而是完整摒弃了用户观看历史的时序特征,把用户最近的阅读历史同等对待,这不会损失有效信息吗?
  6. 在处置测试集的时分,Youtube 为什么不采用经典的随机留一法(random holdout),而是一定要把用户最近的一次观看行为作为测试集?
  7. 在肯定优化目的的时分,Youtube 为什么不采用经典的 CTR,或者播放率(Play Rate),而是采用了每次曝光预期播放时间(expected watch time per impression)作为优化目的?
  8. 在停止 video embedding 的时分,为什么要直接把大量长尾的 video 直接用 0 向量替代?
  9. 针对某些特征,比方 #previous impressions,为什么要停止开方战争方处置后,当作三个特征输入模型?
  10. 为什么 ranking model 不采用经典的 logistic regression 当作输出层,而是采用了 weighted logistic regression?

由于我也是在视频引荐范畴工作,所以能够很担任任的说以上的十个问题都是十分有价值的。但今天一口吻写到这里,觉得有点气力缺乏了。。大家假如感兴味的话能够点个赞,我明天再细致剖析一下以上十大问题的答案。
参考材料:

  1. Deep Neural Networks for YouTube Recommendation
  2. Recommender System Paper List
  3. 引荐系统中的留意力机制——阿里深度兴味网络(DIN)
微信公众号

声明:本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。

网友评论:

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
SEM推广服务

Copyright©2005-2026 Sykv.com 可思数据 版权所有    京ICP备14056871号

关于我们   免责声明   广告合作   版权声明   联系我们   原创投稿   网站地图  

可思数据 数据标注行业联盟

扫码入群
扫码关注

微信公众号

返回顶部