28 | 业界经典:YouTube深度学习推荐系统的经典架构长什么样?
28 | 业界经典:YouTube深度学习推荐系统的经典架构长什么样?
讲述:王喆
时长16:50大小15.43M
YouTube 推荐系统架构
候选集生成模型
候选集生成模型独特的线上服务方法
排序模型
小结
课后思考
赞 17
提建议
精选留言(32)
- Geek_e0d66a2020-12-20老师,请问召回模型中,输入层已经有了视频的预训练的Embedding向量,最后softmax 的参数也会作为视频的embedding向量。一开始不是都有了视频的Embedding向量了吗?最后ANN的为什么只用训练视频向量,而不用预训练的呢?
作者回复: 因为只有最后的视频embedding是跟用户embedding在一个向量空间内。预训练和embedding和最后relu层生成的user embedding没有直接关系。
共 2 条评论26 - fsc20162020-12-18思考题: 1,在召回层,对用户历史观看的序列,按照时间衰减因子,对用户观看emb序列进行加权求平均,加强最近观看视频的影响力 2,在排序层,可以加入注意力机制,类似DIN模型中,计算候选emb与用户行为序列中视频emb的权重,然后在进行加权求平均,得到用户行为序列的emb 提问:老师 ,之前讲emb近邻搜索,需要用户emb和物品emb在同一向量空间。那么在召回层relu中提取的用户emb和softmax提取的物品emb,是在同一向量空间的,为什么?难道是因为同一个模型训练出来,输入特征一致才允许这样操作嘛?展开
作者回复: 1、2都是非常好的回答。 提问也非常好,但我推荐你自己再好好想想他们为什么在一个向量空间,你要思考一下relu最后输出的用户emb和softmax中的物品emb是怎么运算的?在最近邻搜索中又是怎么运算的?
共 6 条评论18 - SecooHR2020-12-23老师能够讲下 实际 Weighted LR 具体训练过程吗,比如 videoid1 labels=1 weights=15 , 实际中是把这个样本 重复抽样weights 次,放入训练样本吗,还是更改LR 的loss?
作者回复: 这个问题非常好,其实两种方式都可以。有一些细微的差别,但我觉得无伤大雅,选一种就行。
共 2 条评论9 - Geek_790c432021-02-04关于id做输入再embedding vs. 预训练embedding的想法不知道对不对: 1. 视频id作为输入再embedding的end2end模型,受cold start影响比较大,因为每遇到新视频模型就需要重新训练。但是用pretrained的视频embedding作为输入,哪怕遇到新视频也可以仿照airbnb的做法生成一个tmp的embedding再喂给模型。 2. 假如有几亿候选视频,直接id做输入会导致embedding层的参数数量非常大,使用预训练embedding可以避免这一点。(用户塔的embedding可以通过平均观看过的视频的embedding得到)展开
作者回复: 这两点都非常好,是很工业界思路的思考,推荐其他同学参考,
8 - 骚动2021-01-18思考题:平均池化,在我的理解里,是把N个历史记录平等对待,每个user可能都会有2~4个感兴趣的标签(比如会同时关注音乐和生活的两类视频),平均池化这N个emb的方式,我觉得能更好的反映user的整体趋势,一定程度上关注了EE的问题。我看回答里采用时间加权以及注意力加权的回答,我觉得就是更加关注user最近兴趣的方式,也是非常好的方案,但是就是要考量user兴趣变化的快不快的问题,我觉得视频网站的user应该兴趣变化节奏应该并不快,采用平均池化的方式反而能挖掘用户的潜在兴趣,可能更适合youtube的业务。总体来说,我认为这两种方式孰优孰劣,并不一定,需要更多的数据分析来反映整个user群体的整体状况。 另外,我有这么几个疑问: 1. youtube 大部分都是UGC内容的情况下,怎么进行冷启动的? 2. 候选集生成模型中最近邻索引会不会存在更新速度慢的问题,还是说离线更新? 3. 候选集生成模型中为什么是用的ReLU ?实践得出来得结果吗?有没有先验理论的支撑? 4. 候选集生成模型中样本年龄这种连续型特征在这个模型中不需要归一化吗?展开
作者回复: 思考很好,非常赞。 问题有点多,建议以后还是一条一条提问,放在一起太不友好。 简单回答 1、这不是个问题,这是个话题,没有统一的方案,可以多看一些冷启动的解决方案的文章。 2、模型训练好,离线更新 3、实践 4、自己实践,不要瞎猜原因
8 - 张弛 Conor2020-12-22“YouTube模型结构仅占了30%的价值,剩下的70%价值在于其工程实现细节。”补充王喆老师对YouTube推荐系统十大工程问题的解读文章:https://zhuanlan.zhihu.com/p/52504407
作者回复: 可以参考
7 - Wiiki2020-12-22王老师,您好。作为读者,我们热切希望您能够出一个专栏针对大厂推荐系统的工程实践和理论方式面进行详细解析的课程,谢谢~ 还有一个问题想请教您:我司最近也上线了一个文章推荐系统,现实情况是文章大概有4千多篇存量,每天大概会有1到2篇的增量(文章比较少~),但是用户日志比较多,百万级别,每天的活跃用户也有几十万,针对我们的目前情况,您觉得我们是否有做文章推荐的需要?或者说在基于我们现实情况下,您觉得现阶段我们怎么做文章推荐~ 谢谢 :)展开
作者回复: 4000多篇肯定有必要做推荐,就连极客时间只有这几百部课程,我都建议他们做推荐,否则用户很难找到心意的课程。 至于怎么做推荐,我觉得这不是个问题,可以参考这么课中的任意一种方法。相似推荐和猜你喜欢是两个最经典的功能,同样适用与文章推荐。
6 - shenhuaze2021-03-04老师,召回模型里的样本年龄是指的什么意思?这里的样本是指的一条带特征和label的训练样本,还是指的一个视频?
作者回复: 你问了一个我非常不想回答的问题,哈哈。这个example age是一个非常不好理解的feature。如果不想理解我觉得影响也不大,如果你想进一步深究,可以参照我的这篇文章下面的评论。https://zhuanlan.zhihu.com/p/52504407
3 - haydenlo2020-12-23老师好,候选集生成模型中,采用softmax获得视频embedding的方法,面对youtube几千万甚至上亿的视频量,是不是要训练很久?如果换成nce加速的方式,由于是采样的,会不会有些视频miss掉
作者回复: 这是个好问题,在Youtube如此大规模数据集上训练,确实有可能训练时间的问题,但他们的实现细节,我们确实无法得知。 但第二个问题我觉得是不存在的,只要保证每个视频有正样本,就肯定会有对应的embedding生成。 negative sampling只是对负样本采样。
3 - inkachenko2021-04-06老师您好,我有两个问题想问一下 1.召回的时候是否要采用negative sampling进行训练呢?视频数量有百万级别,负采样的时候我是根据视频pv的0.75次方为weight进行采样的 2.召回的时候一个用户只生成一个训练集吗?感觉训练集有点不够用,我打算根据用户的前i次兴趣预测第i+1次,然后遍历i,这样一个用户就可以有好多个训练集。。最后预测的时候就使用最新的数据生成embedding,不知这样是否可行展开
作者回复: 1. 可以做负采样,不是必须要做 2. 一个用户的一次行为是一个样本,而不是一个用户就一个样本。
2 - AstrHan2021-01-25老师 看了之后有个问题,您之前说的模型基本以天作为更新,这个说的是排序层吧?那召回层的呢?召回层模型更新一次,要把候选集几百万的数据重跑一次 开销好大。这种问题如何解决呢?我现在是采用word2vec的与训练模型,这样模型就基本不用更新了。不知道业界这一块怎么做的
作者回复: 如果是基于embedding的召回层,也最少需要天级别更新,因为大量新的item需要加入进来。 至于如何提高更新速度,这是一个非常大的话题,需要多个工程和机器学习模块的优化。
共 2 条评论3 - Van2021-08-19老师您好 还是对于 user embedding 和 item embedding什么时候可以直接用ANN来取近似有些Confused. 想总结一下老师您讲的看看对不对:两者可以做内积的前提是他们必须要在一个向量空间。如何定义是同一向量空间就会是一个问题。我理解的两种方式然他们在一个向量空间: 1. 只要是利用用户历史的item embedding生成的用户embedding,可以说都是在一个向量空间内,这些生成方式包括但不限于average pooling,sum pooling,attention等等 2. 类似于MF的 矩阵分解。双塔模型运用的就是这个道理 我的问题是 基于此是不是说明只要有user 和 item feature有交叉的情况就不可以提取出他们做ANN了?我看到DeepFM有时也被拿来做召回 所以是因为他们只加入了user 和item feature 各自下的interaction嘛?展开
作者回复: 是的,只要user emb不是由item emb的简单计算得来的,就不在一个空间内。 如果user item是通过一些复杂点的网络做交叉的,那么肯定不能直接做ANN召回
2 - xuexiqiu2021-07-31非常赞同“要想成为一名合格的推荐工程师,要追踪前沿”这个观点。我在google上搜相关问题的时候会看到twitter或者pinterest他们有时会有一些medium post,很有启发意义。请问前辈还有没有比较好的追踪业界前沿的渠道?感谢。
作者回复: 中文互联网知乎就是最活跃的学术前沿。另外偏正式,学术一点的就是追踪arXiv的最新update。
1 - 灯灯灯2021-01-24老师请问,在召回层的模型训练中,被优化的目标函数是什么?对每个用户,模型得到的是Nx1的概率向量,真实的概率向量是在用户观看的k个视频处坐标为1/k其他坐标为0吗?
作者回复: 1、优化目标还是softmax的经典loss cross entropy。 2、是这样。
共 2 条评论1 - Geek_03b08e2021-01-17老师您好,我是在银行做数据挖掘的,银行产品种类没有电商那么多,大类也就十几种,细分到小类的话也不会超过100种,那用深度学习模型来推荐的的话会不会有点大材小用了?
作者回复: 我感觉确实意义不是特别大,事实上传统的GBDT等树模型已经证明在一些低维问题上表现不差。当然,一些神经网络模型也不会差,只不过提升没有那么明显罢了。
1 - Geek_075add2022-08-25 来自日本老师我想问以下几个问题 1)召回层中召回的候选集,在排序层里的是作为输入特征来用的吗?(想LR或者FM里这样的非深度模型也可以这么用吗?) 2)排序层的输出一般是候选集被点击或观看的概率吗(不考虑观看时间)。
- LT2022-08-19 来自上海召回层的方式,就是为了生成更范化的用户emb和物品emb,但完全也可以用前面提到的NeuralCF(或双塔系列模型)实现呀,youtube这样做的优势在哪呢?
- 南海长风九万里2022-03-01"清楚了视频 Embedding 的生成原理,用户 Embedding 的生成就非常好理解了,因为输入的特征向量全部都是用户相关的特征,一个物品和场景特征都没有,所以在使用某用户 u 的特征向量作为模型输入时,最后一层 ReLU 层的输出向量就可以当作该用户 u 的 Embedding 向量。" 关于用户向量的生成方式,我有点不理解,“样本年龄”这个特征不就是物品特征吗?能帮忙解答一下吗?展开
- Geek_04f3c12021-12-21感谢老师分享,请问老师后续会有多目标训练、多目标融合相关内容讲解吗?
- WJing2021-10-13老师,学完本节课受益匪浅,但是同时我也产生了几个疑问: 1. YouTube每天增加的视频量是巨大的,在第一层模型的SoftMax是视频数量,这总感觉不科学。。。 2. YouTube是如何做到最新更新的视频也被加入到训练中的呢?
作者回复: 1. 没什么不科学的,就是这样做的 2. 模型中无法做到随时加入,需要用其他冷启动方法
1