目录

概述

由于工作的原因需要学习推荐系统,找到了Deep Neural Networks for YouTube
Recommendations这篇文章,
作者来自于Google。发现很多大公司基于深度学习的推荐系统都采用了类似框架,
感觉这篇文章还是很具有代表性的。

什么是推荐系统

什么是推荐系统

一个非正式的定义,所谓推荐系统,就是根据每个用户的特征,向其推荐可能感兴趣的商品的系统。

如何衡量推荐系统好坏

如何衡量推荐系统好坏

一个公司做推荐系统的目的当然是挣更多的钱,
但是除了赚钱多少作为衡量推荐系统的指标之外,还有许多评价方法。比如用用户浏览量的提升,视频观看时长的增加,以及用户点击率和推荐顺序的相关性等等。不直接用钱来衡量的一个原因是付钱这个行为相对罕见,往往一个商品有几百上千次点击之后才会有一个用户掏钱包。所以使用其他衡量方式可以获取更多的反馈数据。

Youtube 推荐系统概述

系统结构

系统结构

为了利用深度学习, Youtube设计了两层的推荐系统结构:

系统结构

在第一层里,
Youtube从海量的视频(每秒钟有总长度几小时的视频数据源源不断的被上传到网站上)中选取较少量的(约几百个?)用户可能感兴趣的视频出来,构成候选推荐集。

在第二层里, 由于此时需要考虑的视频量大大减少了,
所以可以使用一些计算量比较大的深度学习模型以及更多的获取更多的特征,
来对视频排序, 将用户可能最感兴趣的视频排名升高。

系统设计的考量

系统设计的考量(1)

系统设计时需要考虑一下因素:

  • <1>
    可扩展性。在一些research中可以得到很好效果的算法、方案,当数据量扩大到几千几万倍于原始数据时,往往很难获得同样的效果。分布式系统是Youtube推荐系统的重要组成部分。

  • <1> 内容新鲜性。由于有源源不断的新视频上传到Youtube,
    我们也希望推送给用户的是一些比较新的视频,把时间上比较旧的视频排在后面。

系统设计的考量(1)

  • <1>
    滤除干扰信息。用户对视频的喜好只能从浏览量、浏览时长等等数据中间接地反映出来,其中很多不能被观测到的外界影响因素也让这个问题很难建模。
    对于我们的推荐,
    我们只能尽可能的从这些带有噪声的用户数据中设计算法得出真实的用户喜好。另外Youtube中也存在很多钓鱼视频,内容和标题完全不符,
    这样的视频我们希望能从推荐中滤除。

论文中的系统结构图

系统设计的考量(2)

使用这样的系统结构,好处之一是可以处理大量的用户推荐,通过两层结构,大大减少了需要处理的数据量,同时可以为每个用户提供个性化的内容推荐服务。

另外,使用两层结构,可以在第二层ranking中获取其它渠道推荐过来的候选集,
和第一层的结果融合起来,方便扩展,为用户提供更好的体验。

系统设计的考量(2)

在系统设计中需要注意的一件事是,
类似大多数实际系统,我们在深度学习系统中使用的学习目标并不是我们最终的目标:获取更多的用户点击和用户停留。即使内容相关性做的很好,推荐内容的质量很高,也未必能保证上线后的结果好。
原因之一是,用户所处的外界影响因素我们无法在系统中建模获取,比如我们无法控制页面中出现的其它广告内容,
也许我们的推荐做的很好,但只是别人的广告更吸引人。所以Youtube系统最终设计的判断指标还有一个重要组成部分:线上A/B
Test以及A/A Test的结果。

系统设计的考量(3)

考虑到可扩展性,我们需要一个分布式的机器学习系统来搭建我们的推荐系统。这对于属于Google集团的Youtube不是一个问题–他们采用了内部的TensorFlow框架来搭建整个推荐系统。而对于规模较小的公司,可能Hadoop的生态系统更加合适,比如spark以及yahoo开源的TensorFlow
on spark都可以纳入考虑范围。

候选集生成

方法

Youtube采用了类似于Matrix
Factorization的方法来进行第一个阶段的候选集生成:使用一个浅层的神经网络根据用户之前看过的视频作为训练样本来学习。据说可以看成是矩阵推荐方法的非线性近似。

线上预测

由几百万个候选视频生成几百个视频构成的候选集,可以看做一个多类预测问题。上线时需要至少在和候选视频个数呈线性关系的算法时间复杂度内完成,Youtube采用了一个基于哈希的线性预测算法。由于最终的打分数值并不重要,所以最后一层的softmax可以省去,整个问题可以转化为最近邻搜索问题解决。

模型结构

模型结构

如上图所示,第一层的模型的输入特征由视频embedding,用户query的embedding以及地理位置embedding以及个人信息等构成。

模型结构

如上图所示,第一层的模型的输入特征由视频embedding,用户query的embedding以及地理位置embedding以及个人信息等构成。特征构成一个wide
layer,输入到几层ReLu全连接层中。随着深度的变深,网络的宽度逐渐变窄。

特征提取

freshness特征提取(Example Age Feature)

每秒有几个小时的新视频被上传到Youtube中,给用户及时的推荐比较新的视频方便增加用户与视频内容的互动。为了反映这个特性,我们将训练样本相对于训练样本集所处的时间窗口的“年龄/新鲜度”作为特征加入到特征向量中。在训练时,我们把这个特征设置为0,代表我们希望预测的样本出现在时间窗口的边缘附近。

训练样本集的构成

Youtube的训练样本由所有用户的观看行为构成–包括推荐系统推荐的和用户主动观看的视频。这样的好处是更有可能为用户发现新视频,而不是逐渐收敛于推荐给用户的少量视频。

另外我们保证每个用户产生的训练样本数目是相对固定的,这样的好处是推荐结果不会由少量非常活跃的用户支配。

另外就是不要加入过多的网站结构特征进去,比如推荐系统可能学到总是推荐搜索结果排名第一的视频来推荐。(这对初创公司也许不是问题,因为要么没有这个特征,要么搜索结果根本没做好
?)

特征中的时间信息

Youtube构成视频训练特征时,对用户的历史行为进行“回滚”,
对于要预测的视频,只收集这个视频观看发生之前的用户行为信息作为特征。这样的好处是不会让未来的特征“泄露”信息给当前的预测。

Ranking

方法

在Youtube推荐系统框架的第二层中,我们需要对几百个量级的视频进行排序,这样可以更精确的为不同的用户接口提供数据源。

在这一层中,我们可以有更丰富的描述用户以及视频信息的特征,毕竟更少的数据量让我们有更充足的时间来提取特征。另外这一层的好处是可以更方便的融入其它来源的推荐视频,比如人工筛选的广告推广视频以及基于规则的一些视频推荐数据。

这层的模型结构和上一层基本一致,最终的label会用线上A/B
Test的数据来进行调整,但基本上就是用户被发了广告和对应的观看时长的一个函数。

特征

特征工程

尽管我们希望embedding可以解决用户特征和视频特征的表达问题,Youtube在实践中还是采用了特征工程的方法来分析加入ranking的特征。通过分析发现用户之前和这个项目以及类似项目交互的信息(比如对视频所在频道的观看信息)对推荐的帮助还是很大的。

Embedding超参

对于video ID以及User
ID这样的embedding,我们采用了共享embedding的方法来减少参数,加快学习速度。在输入的特征向量中,对于每个类型的特征(比如最近观看的video
ID, 当前推荐的video
ID)我们仍然输入多份embedding好让模型学习同一个embedding在不同部分的权重。

特征Normalization

结果

使用观看时间为样本加权

Youtube推荐的最终目的是增加用户的观看时间,我们用用户观看推荐视频的时长为正样本加权,负样本使用单位权重。权重的公式是\(\frac{\sum{Ti}}{N - k}\)其中Ti是用户观看第i个推荐视频的时长,N是样本总数,k是推荐某个视频的次数。

网络参数对结果的影响

通过对网络宽度以及层数的实验,我们发现增加两者对精度都有提升的作用,但是也会增加线上预测时间与CPU用量。另外使用观看时间加权对精度也有提升作用。

结语

本文是空余时间的随笔,如果有人喜欢欢迎点赞支持

附录

参考文献

  • <1>Deep Neural Networks for YouTube Recommendations
    https://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/45530.pdf
    <2>原文链接
    https://www.jianshu.com/p/f8418b9dcee8

2016 Youtube 推荐系统介绍相关推荐

  1. 强化学习大规模应用还远吗?Youtube推荐已强势上线

    来源 | 转载自深度传送门 导读:本文将介绍在深度学习的强力驱动下,给推荐系统工业界所带来的最前沿的变化.本文主要根据几大顶会2019的最新论文,总结一下深度强化学习给推荐系统以及CTR预估工业界带来 ...

  2. 重庆大学 计算机专业 研究生 李杰,重大计算机学院2016年推荐免试攻读硕士研究生工作细则.doc...

    重大计算机学院2016年推荐免试攻读硕士研究生工作细则 重庆大学计算机学院推荐免试攻读硕士研究生工作细则 根据重庆大学教务处<关于2016年推免生前期准备工作的通知>.<重庆大学推荐 ...

  3. 【王喆-推荐系统】前沿篇-(task1)YouTube推荐架构

    学习总结 YouTube推荐架构=召回层(多,快)+排序层(少,精). 候选集生成模型:用了Embedding MLP,注意最后的多分类的输出层,预测的是用户点击了"哪个"视频.线 ...

  4. 个性化电商广告推荐系统介绍

    一 个性化电商广告推荐系统介绍 1.1 数据集介绍 Ali_Display_Ad_Click是阿里巴巴提供的一个淘宝展示广告点击率预估数据集 数据集来源:天池竞赛 原始样本骨架raw_sample 淘 ...

  5. 嫌弃YouTube推荐算法,这位小哥决定自己动手写代码来推荐视频

    编译 | 陈彩娴 喜欢在YouTube上看视频的朋友也许会有一个苦恼:YouTube的算法会推荐一些"垃圾"视频,或者"标题党"链接. 这也能理解,毕竟算法推荐 ...

  6. 我如何转变了我的YouTube推荐供稿

    Two days ago‚ my Smart TV YouTube Feed looked horrible. My family watched it on single account. 两天前, ...

  7. 深度神经网络在Youtube推荐中的应用--开篇作之一--含部分实用技巧

    Deep Neural Networks for YouTube Recommendations Paul Covington, Jay Adams, Emre Sargin Google https ...

  8. 一篇关于youtube推荐算法的分享-基于用户行为的视频推荐

    本文的前提: (1)基于用户的的行为进行推荐 (2)本文只关注注册用户,只对注册用户进行推荐 (3)数据量级:Youtube每天 百万级别的视频 ,百万级别的用户,总的播放数量超过10亿 挑战: (1 ...

  9. python推介系统方法_基于AutoRec 的推荐系统介绍与python实现

    本文要介绍的模型是2015年由澳大利亚国立大学提出的AutoRec.它将自编码器(AutoEncoder) 的思想和协同过滤结合,提出了一种但隐藏层的神经网络推荐model.因为简洁的网络结构和清晰易 ...

最新文章

  1. [PHP] 深度解析Nginx下的PHP框架路由实现
  2. 对数几率回归 —— Logistic Regression
  3. js实现算法--割字符串
  4. some understanding of《Improved Use of Continuous Attributes in C4.5》
  5. topcoder SRM712 Div1 LR
  6. 《钢铁神兵》里的较量的数学题,都是什么级别的难题?
  7. 宅在家里写数据库中函数应用
  8. redis数据类型之Set
  9. c语言:简单的客户管理系统
  10. SPSS学习(四)单样本t检验
  11. Notification基本通知的两种写法
  12. 一网打尽“小黄图”!手把手教你造一只AI鉴黄神器(内附代码及数据集)
  13. Django批量修改 get_field_display foreignkey
  14. 使用HoloLens 2调用深度相机和前置摄像头
  15. js pug 代码_jquery.form.js的使用(基于pug)
  16. wps怎么画网络图_作为数学老师,如何使用WPS来绘制几何图?
  17. svn: E175003:The server at ‘https://XXX/!/#XXX/XXX‘ does not support the HTTP/DAV protocol解决方案
  18. App开发智能车载应用之概述篇
  19. 海思Hi351X相关
  20. 微信商户平台配置JSAPI支付目录,vue项目,好多坑呐

热门文章

  1. pause容器作用_kubernetes中的Pause容器如何理解?
  2. 微信支付--网页版-V3-(1)
  3. 利用C++求解一元二次方程
  4. 计算机的录像功能在哪里找,电脑录像功能在哪
  5. 【华为机试022】简单密码破解
  6. php公众号解决投票刷票,微信公众号投票活动如何防止刷票现象
  7. iTutorGroup学员获2018全国青少年创意编程大赛一等奖
  8. GKFX捷凯金融外汇官网:gkfx-cn com 投资之父的15条投资法则
  9. 数字IC秋招手撕代码(二)50%占空比的三分频
  10. 《极客时间-技术管理实战》读书笔记