【推荐系统】YoutubeDNN召回(2)

一些遇到的问题和主要代码分析。

 

Q: user_emb 和 item_emb 必须在一个向量空间内才能够计算相似度。

A: youtube recall中这两个embedding也不是同一个空间啊,为什么可以直接计算。

 

 

关于 example age

Q:

A:

Q:

A:训练时这个值,姑且认为是『训练时间-Sample Log的产生时间』就是『模型训练此刻的时间-该日志产生的时间』。在线上服务阶段,该特征被赋予0值甚至是一个比较小的负数。这样的做法类似于在广告排序中消除position bias。

直觉理解:假设这样一个视频十天前发布的,许多用户在当前观看了该视频,那么在当天会产生许多Sample Log,而在后面的九天里,观看记录不多,Sample Log也很少。如果我们没有加入Example Age这个特征的话,无论何时训练模型,这个视频对应的分类概率都是差不多的,但是如果我们加入这个特征,模型就会知道,如果这条记录是十天前产生的话,该视频会有很高的分类概率,如果是最近几天产生的话,分类概率应该低一些,这样可以更加逼近实际的数据。

 

 

关于新视频(新item)

Q:youtube实时会产生很多的新video,那么这些新产生的video在训练过程中均没有出现过,也就是说无法得到他们的video embedding,那么在推荐的时候这些新的数据就不太可能出现在最终结果中,如何处理?

A:新的视频可以不走这样的召回,通过其他方式分发给用户,然后根据用户的embedding去反推。。或者用双端模型,引入物品侧的特征,像用户端一样也训练一个nn结构,新的视频只要有特征就可以过nn结构embedding了。

Q:对于candidate model,他们怎么去处理新出现的视频?每出一个新视频都需要去动态地修改输出端的输出个数么?(多分类任务预测) 每出一个新视频都需要去动态地修改输出端的输出个数么?

A:新视频只能期待在下次训练中引入。candidate model的最终目标是得到user和item emb,如果新视频找不到对应emb的话,一般会用一个默认的emb,或者针对新视频 用一些独立的召回策略。

Q:item embedding是提前预训练的,还是在召回模型中端到端训练的呢?

A:

 

关于样本

模型训练正负样本构造?

正样本是用户所有完整观看过的视频,其余可以视作负样本。

训练样本是从Youtube所有的用户观看记录里产生的,而并非只是通过推荐系统产生的。同时,针对每一个用户的观看记录,都生成了固定数量的训练样本,这样,每个用户在损失函数中的地位都是相等的,防止一小部分超级活跃用户主导损失函数。

 

 

随机留一法

 

 

 

使用多分类问题的一个弊端是,我们有百万级别的classes,模型是非常难以训练的,因此在实际中,Youtube并使用负样本采样(negative sampling)的方法,将class的数量减小。这里的负采样和word2vec中的负采样方法是不同的,这里采样之后还是一个多分类问题,而word2vec中的负采样方法是将问题转为了一个二分类问题。采样过后,需要通过权重矫正。对于每个样本而言,loss为正类与采样的负类的损失和。比如,label一共有100万个,每个样本数据只对应有一个1,从大量的负类label采样一部分(比如几千)出来计算损失。

 

 

YoutubeNet也无法保证用户向量的每个维度与商品向量的每个维度相同,为什么可以直接内积呢?

答案就在最后一层的softmax层,首先明确label即所有的视频ID。我们内积的结果作为label的概率,与真实的label计算交叉熵,这个交叉熵再用来反向更新视频的Embedding向量。这个反向传播的过程可以保证:用户向量与商品向量的内积结果使得模型能够满足一个较高的准确度即可,不是说两个向量一定在同一个空间。论文原文也是这样说的:The task of the deep neural network is to learn user embeddings u as a function of the user’s history and context that are useful for discriminating among videos with a softmax classifier.

UI召回的相似度是用内积的,而不是余弦,这是因为网络训练的时候就是内积计算。

 

这个页面留言的问题,也是我想问的。。

读Youtube DNN的一些点 - 魏晋的文章 - 知乎

跟word2vec不同的地方是,input embedding不参与训练吧。
另外我想问下 你用的softmax还是负采样。如果是负采样,这么多类别,要很大的样本规模才能有较好的表现吧。我3000w样本,重复 到6000多w样本,类别有10几万,loss保持在7左右。

input embeding 如果不预训练,也可以参加训练的,不过收敛速度会更慢,参数多了接近一倍。

 

召回来源和召回分数在排序中很重要(这个在我们的业务中也得到验证)

召回来源和召回分数对排序比较重要,召回分数作为特征融合到排序模型中,这个好理解,召回来源应该是一个离散特征,在新召回做A/B的时候,如何加入到排序模型中呢?

 

参考:

YouTube推荐中的深度神经网络 - 张大猫的文章 - 知乎 (还挺好的)

推荐系统入门实践(3)召回之youtube-dnn

https://www.deeplearn.me/3861.html(未看)

https://www.cnblogs.com/qcloud1001/p/10563994.html

看Youtube怎么利用深度学习做推荐 - 石塔西的文章 - 知乎

DNN YouTube Recommendations 召回 - 孙晴晴的文章 - 知乎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值