Youtube DNN经典论文

如题所述

最近在看王喆的知乎专栏,第三、四、十三篇都是Youtube的经典论文DNN:https://zhuanlan.zhihu.com/p/52169807  https://zhuanlan.zhihu.com/p/52504407  https://zhuanlan.zhihu.com/p/61827629

跟着大佬又回顾了一下,发现之前真的只能算是一知半解,趁着这次把对这篇论文的新的理解记录一下,可能还会有一些错误。

论文讲解了在召回和精排两个阶段的模型:

召回:

先从特征说起:用户观看过的video的embedding,用户搜索词的embedding,用户的地理位置、年龄等side_infomation,还有exampl_age这个需要解释的特征

然后是模型:三层DNN

最后是training的loss:softmax做分类

serving的方式:nearest neighbor

里面其实有很多疑点:

1.example_age是什么

这个点专栏里说是训练时间 - 得到这条样本的时间(视频点击时间),但是我觉得这样表达不出“新视频”这个概念,也不知道用当前时间去减是啥意思,label是点击那一刻打上去的,又不是训练的时候;

所以我觉得这个example age应该是点击时间-上架时间,表示用户对新上架视频的偏好,用这个特征去捕获这个偏好了,在serve的时候全都置为0就可以消除这个偏好,毕竟这是召回阶段,可以多召回些东西。(这样就是消除用户对新视频的偏好了?)

2.为什么要做多分类,而不是预测分,多分类的话有海量视频,性能怎么保证

为什么要做多分类,而不是把样本的embedding也给到网络里做打分,这一点我是真的没弄明白;

海量视频的多分类性能的提升是用到了sampled softmax,可以参考http://www.4k8k.xyz/article/Kaiyuan_sjtu/119881236  https://zhuanlan.zhihu.com/p/349908071 总的来说就是通过Q(y|x)采样出一个子集,对子集计算logits,然后用计算结果F(x,y)-log(Q(y|x))可以表示原数据集上的logits

3.serving阶段为什么不做多分类了,而是做nearest neighbor

这里首先要弄明白serving阶段的user embedding和video embedding是什么,user_embedding是最后一层relu之后的结果,比如是一个d维的向量;然后要得到一个几百万维(用d_N表示)的向量,需要过一个d*d_N维的矩阵,这个矩阵的每一列训练完之后就是video embedding;如果是serving的阶段依然是和每一列相乘,再算一个softmax,既然分母是一样的,取指数的操作也是一样的,那么就直接做点积就好了。

排序:

先从特征说起:当前排序的video的embedding,用户观看过的video的embedding,用户和video的语言embedding,time since last watch是自上次观看同channel视频的时间,previous impressions是该视频已经被曝光给该用户的次数(这里已经引入了负反馈的思路)

然后是模型:三层DNN

最后是training的loss:weighted logistic

serving的方式:e^(Wx+b)

这里面也有一些疑点:

1.training时候的weighted logistic是什么,为什么serving的时候用的是e^(Wx+b)

这个点是我重读的时候最没理解的地方,先尝试写一下,这里首先要搞清楚weighted logitstic是什么,那先回顾一下LR的公式的由来是log(odds) = w*x;这里的odds=p/(1-p)表示正样本发生的概率/负样本发生的概率;在weighted LR里面这个odds要变成W*p/(1-p)这里的W就是给正样本加的权重,至于为什么是这样有一种解释是用正负样本比去解释的,我觉得不是很合理 https://zhuanlan.zhihu.com/p/435912211;但是如果能够接受这个odds的话,那么log(odds) = w*x就可以得到odds = e^(wx),后者就是serving的目标;

再说W*p/(1-p)是什么,这里W权重是这条视频的时长T,那么sum(Ti*pi)就是E(T)即时长的期望,E(T)/(1-p)泰勒展开就是E(T)*(1+p)这里的p很小的话其实就是E(T)也就是说serving的时候其实得到的就是观看时长的期望,这里如果用到电商里用price去加权,得到的应该也是对price的预估。

还是非常建议多去看一下十大工程问题那篇专栏,讲到了更多,比如对每个用户提取等数量的训练样本、把大量长尾video的embedding置0这些方法的出发点。
温馨提示:答案为网友推荐,仅供参考
相似回答