Youtube推荐双塔模型——SBCNMYoutube推荐双塔模型——SBCNMSamplingBiasCorrected Neural Modeling for Large Corpus Item Recommendations是youtube推荐在2019年的一篇论文,可以把他看作2016年那篇经典论文(Deep ......
SamplingBiasCorrected Neural Modeling for Large Corpus Item Recommendations是youtube推荐在2019年的一篇论文,可以把他看作2016年那篇经典论文(Deep Neural Networks for YouTube Recommendations)里,召回模型的升级版本。
同样,先简单介绍一下论文,再谈谈自己的理解和相关实践。
论文速读
这篇理论文是Deep Neural Networks for YouTube Recommendations中召回模型的升级版本。使用了经典的双塔结构,从而可以加入item侧的各种特征,提升泛化和新资源的预估能力。论文的主要贡献包括四点:
Streaming Frequency Estimation:流式词频预估,or流式展现次数预估。主要为了解决batch内负采样时,词频有偏的问题。
Modeling Framework:双塔召回模型,使用batch softmax交叉熵,同时使用batch内负采样。
YouTube Recommendation:大规模数据场景应用,不多赘述。
Ofline and Live Experiments:离线测试和在线效果,不多赘述。
Modeling Framework
模型训练大的方面都比较常规,双塔结构+负采样(这套DNN召回方式,在这篇论文之前我们就已经在用了)。
网络结构上是一个典型的双塔,分别产出用户和item的向量表达,方便召回时从全量候选集中快速选取top。
样本方面,采用百万级label上的softmax多分类(每个item视作一个分类,和16年的论文一样)。负样本采用batch内负采样,来消除item频次对召回准确性的bias。
论文里提到,batch内softmax,所以分布上和全局softmax肯定存在bias:高频item因为在batch内出现的概率高,会被过度惩罚。因此,论文提到一种做法,在sotmax前的输出上加一个和频次(or随机batch内出现的概率)相关的惩罚项。大致效果是item在batch内出现的概率越高,softmax的输入会在原来的基础上越小,从而降低高频item的预估概率,消除bias。
下面贴几个公式,公式细节我就不解释了,细节可以看原文,功能和思想参考我上面的解释。
在sotmax前的输出上加一个和频次相关的惩罚项:
是item在batch内出现的概率越高,softmax的输入会在原来的基础上越小,从而降低高频item的预估概率:
ok,以上这个处理是这篇论文的核心之一
以上,引入了另外一个核心问题,如何知道item在随机batch内出现的概率从而有了论文的另外一个核心:Streaming Frequency Estimation。
(论文里还提到一个标准化和热度的东西,预估的时候用一个热度超参来调节score,这里不是很理解论文的思路和具体做法,就先不谈了,有清楚的朋友可以评论和我讨论下)
Streaming Frequency Estimation
这里我同样先说思想,再贴论文的算法和简述。
论文采用两个矩阵来记录和更新item出现的step和频率。
以下,贴一段论文的描述:
这里矩阵A记录的是item y上一次出现的step,所以tA[y]就是y最近一次的出现间隔。从而不断更新B,得到的就是y出现间隔的期望(这里我也是大致意会了一下,详细的推导和说明建议看原文)。也可以理解为,每次出现的间隔是一个样本,通过SGD和学习率不断学习得到了平均间隔的预估B。附一段原论文,个人感觉理解这一段就可以了。
ok,上面得到了item y的出现间隔预估B,那么frequency estimate就等于1/B[y]。
到这里,整篇论文的精华就解释完了。
之后,论文提到了一个streaming frequency estimate的改进方法,主要解决算法2中hash碰撞的问题。也很简单,就是用多个hash,记录多个B,最后用max(Bi)。
个人感觉hash算法用的好,外加item的更新淘汰,小概率的碰撞其实没啥影响。
最后,再贴一个网络结构图,其他的应用和评估细节就先不赘述了,
其他tips:
1.论文使用了观看进度做为loss weight,短点击权重为0,完播权重1,其他是否有平滑处理不确定。这里做一点衍生,其实用观看进度做为权重会有时长bias,倾向于较短的视频,用观看时长的话有会倾向于较长的视频,这里可以做不少结合业务的微处理。
2.用户和item侧会共享部分id特征
个人理解
结合我自己的业务经验,谈谈理解吧
1.首先说一个自己特别疑惑的地方,一直没搞明白具体区别和效果。youtube的做法是softmax,把每个item当作一个分类,从而预估用户在整个items集合上的偏好分布。我自己的业务场景里,是用的sigmoid二分类(点击和负采样),更像是预估一个item被展现且点击的概率。这里不确定两种方式效果的具体差异,也没对比过,有清楚的大佬可以教我一下。个人猜测,二分类的方式泛化会更强,softmax的方式准确会更高
2.这个模型还有一个点,是我很想尝试一下的,就是用户侧的行为和item侧共享id这一类的emb表达。可能会对session序列的刻画更好,以及上文和当前item的关系预估更准确。
3.效果:从我个人的业务线和周围其他的业务线情况看,类似这种端到端的召回效果和整体占比都不算太高;我甚至试过用粗排模型做召回,效果更弱。这也是我一直思考,却没有明确答案的:为什么这种端到端的DNN召回很难占据绝对优势呢
4.DNN召回目前没有特别好的演进方向。我个人理解几个点比较合适:a.摆脱顶层cross的结构,引入更多交叉特征和负责结构,使得整体学习更加充分。b.摆脱单目标建模优化的方式,毕竟单目标没法刻画用户的满意或者令用户喜悦的感受,更多的考虑多目标的融合,比如,展现率,点击率,观看进度,是否点赞评论关注等等。
5.疑问,论文里描述模型是天级更新,感觉有点落后。。。对新视频不够友好,而且反馈能力也会偏弱吧
特别声明:以上文章内容仅代表作者本人观点,不代表ESG跨境电商观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与ESG跨境电商联系。
二维码加载中...
使用微信扫一扫登录
使用账号密码登录
平台顾问
微信扫一扫
马上联系在线顾问
小程序
ESG跨境小程序
手机入驻更便捷
返回顶部