当前位置:   article > 正文

youtube深度推荐算法youtubeDNN_dnn中score的划分

dnn中score的划分

前言

youtube在2016推出的视频推荐算法还是比较经典,既可以做排序也可以做召回,今天讲讲它是如何进行召回的

首先还是回顾一下:召回的目的是什么
召回的目的是从海量的item中,为每一个目标用户召回少量的item数据,为排序阶段提供数据。
那继续问:如何判断在海量的数据中召回哪几个item呢?

无论是召回还是排序,要给用户返回目标item,其实都是要针对具体的某一个user,给item打分,然后返回topK。

那如何得到这个分数呢

  1. 将user信息和item信息送进模型或者送进一个网络,得到一个打分score,然后根据分数进行排序。
    针对第一种方法呢,如果模型比较简单,自然可以用于召回,如果是模型比较复杂,那就不能用于召回,因为违背了召回侧的原则(快速简单)

  2. 事先学习好user和item的向量,直接求user和item向量的相似度(也是一个分数),通常向量的相似度用余弦角度或者皮尔逊相关系数,根据余弦角度进行排序,选取topK

在youtube的召回中,本质就是用到了第二种方法(但又有些不同,因为还需要将数据过一下网络)。训练得到item的向量和user的向量,召回的时候,根据user的向量找到item中最相似的k个
item进行召回。

关键点注解

下面看看官方的原图,然后做一个标记。

在这里插入图片描述

标注2

这里先讲解标注2吧,注解2表示的就是一个样本,也就是一个user的特征,其中包括了:

  1. 用户近期看过的视频(watch vector)
  2. 用户近期搜索过的视频 (search vector)
  3. 用户的地理位置 (geographic embedding)
  4. 用户的基本特征(年纪age,性别gender,以及一些扩增的特征(年纪的平方等))

这就是一条送进模型的完整的样本,也就是一条用户的所哟信息。

标注1

  1. 标注1是一条样本其中的一个部分,其表示的是:用户近期浏览的k(一般是10)个视频,然后求k个视频的embedding的均值。然后将其送进模型。

那为什么要求均值呢?
它最重要的目的就是要抑制活跃用户,试想,如果一个很活跃的用户,将产生很多日志,那么如果挨个送进模型,那它将对模型起到很大的作用,会导致模型的有偏,所以这么做的目的是,让活跃用户入模的次数减少。不管是活跃或者是不活跃的用户,进来让其进入模型的数据条数相近。

标注3

标注3这里,表示用户的样本进入模型后,到这里就得到了一个向量,10维的向量,这些向量就是用户的向量user_embedding。

标注4

在这里,其实就是得到了物品向量item_embedding,具体怎么得到的?
这里假设物品有100个。
在这里插入图片描述

如上图所示,针对每一个item,就得到了10个权重,这10个权重就是对应item的向量表达,这样,物品的向量item_embedding就得到了哦。

模型预测

 emsp;在预测的时候,会事先将标注4中训练得到的item_embedding是先存到一个数据库中,通常用的是faiss进行存储和检索,faiss中对检索和计算进行了很多的优化,并不需要我们取关心。
当要给一个用户做召回的时候,通常会根据用户的信息(标注2)生成用户向量,然后在faiss中计算得到topK召回。
重点
  这里为什么只能存item_embedding,为什么user_embedding不存入数据库呢?其实不是不存,是没法存。
  你想想,哪怕一个人,它上一个月看的视频和这个月看的视频都是会不一样的,所以送进模型的信息都是动态变动的,以及它的地理位置等也是动态变化的。自然是没法找到一个固定的user和embedding的关系。所以也就没法把user的embedding存下来。所以只能将信息送进网络跑一下,得到用户embedding,然后再做相似度计算。

简单记录完毕

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
  

闽ICP备14008679号