Youtube DNN经典论文
和老板复习了一下,发现之前真的只有一点知识。这次在记录这篇论文的新理解的同时,可能会有一些错误。
本文分两个阶段来解释这个模型:回忆和精细安排:
回忆:
先说特征:用户看过的视频的嵌入,用户搜索词的嵌入,用户地理位置和年龄的side _ infomation,需要说明的Example _ age特征。
然后是模型:三层DNN。
最后,训练的损失:softmax做分类。
上菜方式:最近邻
这里面其实有很多疑点:
1.example_age是什么?
这个点栏里说的是训练时间——得到这个样本的时间(视频点击时间),但是我觉得这并不能表达“新视频”的概念,也不知道用当前时间去减法是什么意思。标签是在点击的瞬间打出来的,并不是训练的时候;
所以我认为这个例子年龄应该是点击时间-上架时间,表明用户对新上传的视频的偏好。这个特性是用来捕捉这种偏好的,上菜的时候都可以设置为0,可以消除这种偏好。毕竟这是回忆阶段,可以回忆的东西更多。(这是为了消除用户对新视频的偏好?)
2.为什么要做多分类,而不是预测分数?如果多分类的视频很多,性能如何保证?
我真的不明白为什么要做多分类,而不是把样本的嵌入交给网络打分。
Sampled softmax用于提高海量视频的多分类性能,可参考/p/349908071。一般来说,用Q(y|x)采样一个子集,对该子集计算logit,然后原始数据集上的logit可以用计算结果F(x,y)-log(Q(y|x))来表示。
3.为什么不在3 .发球阶段做多分类,而是做最近邻?
这里首先要明白什么是服务阶段的用户嵌入和视频嵌入。user_embedding是最后一层relu后的结果,比如一个D维向量。然后要得到一个百万维的向量(用d_N表示),需要经过一个d*d_N维的矩阵,这个矩阵的每一列都是视频嵌入;经过训练;如果上菜的阶段还是和每一列相乘然后算一个softmax,既然分母一样,取指数的操作也一样,那么直接做点积就好了。
排序:
先说特征:当前排名的视频的嵌入,用户观看的视频的嵌入,用户和视频的语言的嵌入,上次观看的时间是观看同一频道视频的时间,之前的印象是视频被用户曝光的次数(这里引入了负反馈)。
然后是模型:三层DNN。
最后,培训的损失:加权逻辑。
发球方式:e (wx+b)
也有一些疑惑:
1.training中的加权logistic是什么,发球为什么用E (WX+B)?
这一点是我重读的时候最不理解的。我先试着写一下。首先,我们先明确一下什么是加权逻辑斯蒂奇。那么,我们来回顾一下LR公式的由来log(odds)= w * x;* x;Odds=p/(1-p)这里代表正样本的概率/负样本的概率;在加权LR中,这个赔率将变成W*p/(1-p),其中W是给予阳性样本的权重。至于为什么会这样,有一种解释是用正负样本比例来解释的,我觉得不是很合理/P/4359122165438;但如果我们能接受这个odd,那么log(odds) = w*x * x可以得到odds = e^(wx),这就是发球的目标;
先说W*p/(1-p)是什么,其中W权重是这段视频的时长T,那么sum(Ti*pi)就是E(T)实时的期望值,E(T)/(1-p)泰勒展开就是E(T) * (1。
非常推荐多看十大工程问题专栏,多说说,比如从每个用户抽取等量的训练样本,把大量长尾视频的嵌入设置为0。