youtube 深度学习 推荐

youtube深度学习推荐经典论文中关键点

《Deep Neural Networks for YouTube Recommendations》精读
Posted by BY on September 11, 2019 · 阅读约 8 分钟

前两天面试了一个候选人,他们其中一个项目就是复现youtube的深度学习embedding召回方案,虽然说效果不好,以及挺多人用了说效果不及预期,但是挺多思路对现在推荐依然影响深远。

总体思路

整体思路

也是正常的分两阶段,第一阶段负责召回,在这里叫candidate generation,后一阶段负责ranking。

这里有两个先进点,这篇论文是16年9月发的,当时大家都在普及用协同过滤,文章提出了ranking,另一个是两阶段都是用深度学习。

candidate generation

召回思路

从下面往上面说吧,最下面特征包括四部分,第一部分是用用户看过的video的embedding做平均输入到网络,第二部分是用用户搜索过的词的embedding,第三部分是用户地理位置embedding,最后一部分是用户基础信息拼到一起,这里比如年龄,性别等。

至于上面的预处理embedding技术就是基础的word2vec的思路,video的embeding比如常见的行为序列embeding。

然后经过四个ReLU层,最后一层就直接是当前这个用户的embeding,如图右上角,接了一个softmax多分类器,这里的分类结果对应的是物料的数目,就是当前用户点击过的video,比如点击率10个,那么每一个是1/10,剩下的所有物料为0,整个这样训练,最后网络的连接从最后一层user embedding到item的总数目N,就会得到一个E*N的一个矩阵,这里E是表示中embedding的宽度,整个训练完之后矩阵的每一列都是一个长度为E的embeding,代表当前第k个video的embedding。

这里看着是不是很想word2vec的思路,其实基本上就是借鉴了word2vec的思路,word2vec是2013年提出来的,当时正是火热的时候,而且现在来看,word2vec的思路对推荐的影响还是很大的,不管是直接对文章之类用doc2vec直接向量化,以及item2vec中用行为序列向量化,以及现在graph embedding都有它的身影。

然后在说一下训练的过程吧,我们可以看到这个网络,输入就是前面说的四类特征,而输出就是当前用户对所有文章有没有点击。

  1. 所以第一步是先对video进行embedding化,这个有很多方法
  2. 对每一个用户的文章embedding做平均处理成网络想要的输入格式,以及输出中那些item是非0的也就是有点击的。这里的每一个用户的数据集就是一个训练样本。
  3. 用这些训练样本对网络进行训练,去拟合,调参
  4. 把最后一层网络到最后所有item的边的学习到的权重拿出来,就是前面说的每个item的embedding,然后输入到向量检索工具。至此训练结束
  5. 线上请求来了之后先经过网络到最后一层,然后最后一层的结果作为用户的embedding,去用它在向量检索工具中检索和它最相似的文章左右当前用户的召回

ranking

排序思路

还是从下往上说吧,这里特征主要有四类

其实看起来特征还是很简单的,他把所有的物品特征都表示在了embedding中,然后把用户的所有特征都表示在了用户最后点击过的视频embedding的average中。后面两个特征应该是观察业务数据之后加上去的特征,给我们提供了一个模型做特征的思路,线上最主要的,然后在根据业务分析数据去加特征,而不是一下子就都堆上去。

这里也说一下训练和预估的过程

  1. 和我们现在所有预估模型训练的思路一样,每一条行为日志都是一个训练样本,首先拿到训练样本和对应上面的特征
  2. 然后训练学习网络中的参数
  3. 用学习到的参数去上线做预估

关键点

先说三个最大的点吧

其次,其中的一些特征设计的很巧妙,我们可以借鉴

还有是一些处理细节

基本上随着对这个行业的了解越深,发现这些经典论文真的是经典论文!


  1. Deep Neural Networks for YouTube Recommendations

💬 评论(使用 Giscus,登录 GitHub 即可发言)