深度学习推荐系统实战
王喆
Roku 推荐系统架构负责人,前 hulu 高级研究员,《深度学习推荐系统》作者
33298 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 44 讲
深度学习推荐系统实战
15
15
1.0x
00:00/00:00
登录|注册

28 | 业界经典:YouTube深度学习推荐系统的经典架构长什么样?

改进平均池化操作的方法
排序模型
候选集生成模型
课后思考
YouTube推荐系统架构

该思维导图由 AI 生成,仅供参考

你好,我是王喆。今天我们一起来开启前沿拓展篇的学习。
如果你是跟着课程安排学到这里的,我可以很自信地说,你几乎已经掌握了推荐系统的全部重点知识。从数据特征的处理,模型构建,到模型的评估和上线,再到推荐服务器的实现,你的知识广度已经覆盖了推荐系统领域的全部要点。但要想成为一名合格的推荐工程师,我们还需要做两件事情,一件是追踪前沿,另一件是融会贯通。
因此,在这一篇中,我会通过详细讲解几个一线大厂的推荐系统解决方案,来帮你追踪行业的热点、创新点。它们既包括一些推荐模型的业界实现,如 YouTube 和 Pinterest 的推荐模型,也包括推荐系统的工程落地方案,如 Flink 的经典应用和美团对于强化学习的落地方案。最后,我还会对算法工程师的所需能力做一个全面的总结。
今天,我们今天先来学习 YouTube 的经典深度学习推荐系统架构。YouTube 这套深度学习解决方案,已经经典到可以成为一个业界标杆式的方案了,也是我在国内外和同学、同事们交流、讨论的时候经常会提到的方案。
话不多说,我们正式开始今天的学习吧!

YouTube 推荐系统架构

提起 YouTube,我想你肯定不会陌生,作为全球最大的视频分享网站,YouTube 平台中几乎所有的视频都来自 UGC(User Generated Content,用户原创内容),这样的内容产生模式有两个特点:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

YouTube的深度学习推荐系统架构采用了召回层+排序层的经典推荐系统,旨在快速、准确地对海量视频进行排序。候选集生成模型利用了Embedding预训练特征的深度推荐模型,通过用户观看序列和搜索序列生成输入特征,包括用户历史观看视频的Embedding向量、搜索词的Embedding向量、用户的地理位置Embedding、年龄、性别等特征。这些特征经过连接和ReLU神经网络训练后,使用softmax函数作为输出层,预测用户会点击哪个视频,而不是预测用户是否会点击视频。候选集生成模型采用了视频ID作为预测目标,结合最近邻搜索的方法,通过Embedding最近邻搜索的方法,提高了模型服务的效率。在模型训练完成后,YouTube可以得到所有用户的Embedding向量,之后将它们预存到线上的特征数据库中。通过候选集生成模型得到了候选视频的集合后,YouTube利用排序模型进行精排序。排序模型的输入层引入了更多特征进行精排,包括当前候选视频的Embedding、用户观看过的最后N个视频Embedding的平均值、用户语言的Embedding和当前候选视频语言的Embedding、用户观看同频道视频距今的时间以及该视频已经曝光给用户的次数。排序模型采用weighted logistic regression作为输出层,以更精确地预测用户的观看时长,从而实现YouTube的商业目标。YouTube的深度学习推荐系统架构是业界标杆式的方案,适合深度学习推荐系统的特点,为读者提供了深入了解推荐系统的机会。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深度学习推荐系统实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(32)

  • 最新
  • 精选
  • Geek_e0d66a
    老师,请问召回模型中,输入层已经有了视频的预训练的Embedding向量,最后softmax 的参数也会作为视频的embedding向量。一开始不是都有了视频的Embedding向量了吗?最后ANN的为什么只用训练视频向量,而不用预训练的呢?

    作者回复: 因为只有最后的视频embedding是跟用户embedding在一个向量空间内。预训练和embedding和最后relu层生成的user embedding没有直接关系。

    2020-12-20
    2
    27
  • fsc2016
    思考题: 1,在召回层,对用户历史观看的序列,按照时间衰减因子,对用户观看emb序列进行加权求平均,加强最近观看视频的影响力 2,在排序层,可以加入注意力机制,类似DIN模型中,计算候选emb与用户行为序列中视频emb的权重,然后在进行加权求平均,得到用户行为序列的emb 提问:老师 ,之前讲emb近邻搜索,需要用户emb和物品emb在同一向量空间。那么在召回层relu中提取的用户emb和softmax提取的物品emb,是在同一向量空间的,为什么?难道是因为同一个模型训练出来,输入特征一致才允许这样操作嘛?

    作者回复: 1、2都是非常好的回答。 提问也非常好,但我推荐你自己再好好想想他们为什么在一个向量空间,你要思考一下relu最后输出的用户emb和softmax中的物品emb是怎么运算的?在最近邻搜索中又是怎么运算的?

    2020-12-18
    6
    20
  • Geek_790c43
    关于id做输入再embedding vs. 预训练embedding的想法不知道对不对: 1. 视频id作为输入再embedding的end2end模型,受cold start影响比较大,因为每遇到新视频模型就需要重新训练。但是用pretrained的视频embedding作为输入,哪怕遇到新视频也可以仿照airbnb的做法生成一个tmp的embedding再喂给模型。 2. 假如有几亿候选视频,直接id做输入会导致embedding层的参数数量非常大,使用预训练embedding可以避免这一点。(用户塔的embedding可以通过平均观看过的视频的embedding得到)

    作者回复: 这两点都非常好,是很工业界思路的思考,推荐其他同学参考,

    2021-02-04
    9
  • SecooHR
    老师能够讲下 实际 Weighted LR 具体训练过程吗,比如 videoid1 labels=1 weights=15 , 实际中是把这个样本 重复抽样weights 次,放入训练样本吗,还是更改LR 的loss?

    作者回复: 这个问题非常好,其实两种方式都可以。有一些细微的差别,但我觉得无伤大雅,选一种就行。

    2020-12-23
    2
    9
  • 骚动
    思考题:平均池化,在我的理解里,是把N个历史记录平等对待,每个user可能都会有2~4个感兴趣的标签(比如会同时关注音乐和生活的两类视频),平均池化这N个emb的方式,我觉得能更好的反映user的整体趋势,一定程度上关注了EE的问题。我看回答里采用时间加权以及注意力加权的回答,我觉得就是更加关注user最近兴趣的方式,也是非常好的方案,但是就是要考量user兴趣变化的快不快的问题,我觉得视频网站的user应该兴趣变化节奏应该并不快,采用平均池化的方式反而能挖掘用户的潜在兴趣,可能更适合youtube的业务。总体来说,我认为这两种方式孰优孰劣,并不一定,需要更多的数据分析来反映整个user群体的整体状况。 另外,我有这么几个疑问: 1. youtube 大部分都是UGC内容的情况下,怎么进行冷启动的? 2. 候选集生成模型中最近邻索引会不会存在更新速度慢的问题,还是说离线更新? 3. 候选集生成模型中为什么是用的ReLU ?实践得出来得结果吗?有没有先验理论的支撑? 4. 候选集生成模型中样本年龄这种连续型特征在这个模型中不需要归一化吗?

    作者回复: 思考很好,非常赞。 问题有点多,建议以后还是一条一条提问,放在一起太不友好。 简单回答 1、这不是个问题,这是个话题,没有统一的方案,可以多看一些冷启动的解决方案的文章。 2、模型训练好,离线更新 3、实践 4、自己实践,不要瞎猜原因

    2021-01-18
    8
  • 张弛 Conor
    “YouTube模型结构仅占了30%的价值,剩下的70%价值在于其工程实现细节。”补充王喆老师对YouTube推荐系统十大工程问题的解读文章:https://zhuanlan.zhihu.com/p/52504407

    作者回复: 可以参考

    2020-12-22
    7
  • Wiiki
    王老师,您好。作为读者,我们热切希望您能够出一个专栏针对大厂推荐系统的工程实践和理论方式面进行详细解析的课程,谢谢~ 还有一个问题想请教您:我司最近也上线了一个文章推荐系统,现实情况是文章大概有4千多篇存量,每天大概会有1到2篇的增量(文章比较少~),但是用户日志比较多,百万级别,每天的活跃用户也有几十万,针对我们的目前情况,您觉得我们是否有做文章推荐的需要?或者说在基于我们现实情况下,您觉得现阶段我们怎么做文章推荐~ 谢谢 :)

    作者回复: 4000多篇肯定有必要做推荐,就连极客时间只有这几百部课程,我都建议他们做推荐,否则用户很难找到心意的课程。 至于怎么做推荐,我觉得这不是个问题,可以参考这么课中的任意一种方法。相似推荐和猜你喜欢是两个最经典的功能,同样适用与文章推荐。

    2020-12-22
    6
  • shenhuaze
    老师,召回模型里的样本年龄是指的什么意思?这里的样本是指的一条带特征和label的训练样本,还是指的一个视频?

    作者回复: 你问了一个我非常不想回答的问题,哈哈。这个example age是一个非常不好理解的feature。如果不想理解我觉得影响也不大,如果你想进一步深究,可以参照我的这篇文章下面的评论。https://zhuanlan.zhihu.com/p/52504407

    2021-03-04
    3
  • AstrHan
    老师 看了之后有个问题,您之前说的模型基本以天作为更新,这个说的是排序层吧?那召回层的呢?召回层模型更新一次,要把候选集几百万的数据重跑一次 开销好大。这种问题如何解决呢?我现在是采用word2vec的与训练模型,这样模型就基本不用更新了。不知道业界这一块怎么做的

    作者回复: 如果是基于embedding的召回层,也最少需要天级别更新,因为大量新的item需要加入进来。 至于如何提高更新速度,这是一个非常大的话题,需要多个工程和机器学习模块的优化。

    2021-01-25
    2
    3
  • haydenlo
    老师好,候选集生成模型中,采用softmax获得视频embedding的方法,面对youtube几千万甚至上亿的视频量,是不是要训练很久?如果换成nce加速的方式,由于是采样的,会不会有些视频miss掉

    作者回复: 这是个好问题,在Youtube如此大规模数据集上训练,确实有可能训练时间的问题,但他们的实现细节,我们确实无法得知。 但第二个问题我觉得是不存在的,只要保证每个视频有正样本,就肯定会有对应的embedding生成。 negative sampling只是对负样本采样。

    2020-12-23
    3
收起评论
显示
设置
留言
32
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部