推荐系统通常分为两个阶段,即召回阶段和排序阶段。召回阶段主要是从全量的商品库中获得用户可能感兴趣的一小部分候选集,排序阶段则是将召回阶段获得的候选集进行精准排序,推荐给用户。网络
推荐系统中几种经常使用的召回策略。主要有协同过滤、向量化召回和阿里最近在Aicon中提到的深度树匹配模型。架构
协同过滤主要能够分为基于用户的协同过滤、 基于物品的协同过滤、基于模型的协同过滤(如矩阵分解)app
基本思想:当召回用户A的候选集时,能够先找到和他有类似兴趣的其余用户,而后把那些用户喜欢的、而用户A未交互的物品做为候选集。函数
基本思想:给用户推荐那些和他们以前喜欢的物品类似的物品。性能
主要分为两步:学习
(1) 计算物品之间的类似度。
(2) 根据物品的类似度和用户的历史行为给用户生成召回候选集。spa
1.3 UserCF和ItemCF的比较
.net
协同过滤方法经过在用户历史行为里面找类似的商品和用户,保证了基础的相关性。与此同时,由于只找类似的商品或类似用户的商品,因此系统屏蔽了大规模的计算,使整个召回的过程可以高效地完成。视频
弊端:在召回的时候,并不能真正的面向全量商品库来作检索,如itemCF方法,系统只能在用户历史行为看过的商品里面找到侯选的类似商品来作召回,使得整个推荐结果的多样性和发现性比较差。这样作的结果就是,用户常常抱怨:为何总给我推荐相同的东西!blog
向量化召回,主要经过模型来学习用户和物品的兴趣向量,并经过内积来计算用户和物品之间的类似性,从而获得最终的候选集。其中,比较经典的模型即是Youtube召回模型。
2.1 Youtube召回模型
论文解读:https://www.jianshu.com/p/8fa4dcbd5588
Youtube召回模型的架构以下:
从模型结构能够看出,在离线训练阶段,将其视为一个分类问题。咱们使用隐式反馈来进行学习,用户完整观看过一个视频,便视做一个正例。若是将视频库中的每个视频看成一个类别,那么在时刻t,对于用户U和上下文C,用户会观看视频i的几率为:
其中,u是用户的embedding,这个embedding,是网络最后一个Relu激活函数的输出,vi是视频i的embedding。那么问题来了,输入时,每个视频也有一个对应的
embedding,这个embedding是否是计算softmax的embedding呢?我的认为是两组不一样的embedding,输入层的embedding分别是用户空间和视频空间的向量,最终的
输出层,两者经过一系列全联接层的线性变化,转换到了同一空间,因此对于用户和视频来讲,输出层的embedding是同一空间,能够认为是兴趣空间,这样两者的内积可
以表明类似性。
使用多分类问题的一个弊端是,咱们有百万级别的classes,模型是很是难以训练的,所以在实际中,Youtube并使用负样本采样(negative sampling)的方法,将class的数量减少。对于在线服务来讲,有严格的性能要求,必须在几十毫秒内返回结果。所以,youtube没有从新跑一遍模型,而是经过保存用户兴趣embedding和视频兴趣embedding,经过最近邻搜索的方法获得top N的结果。该近似方法中的表明是局部敏感Hash方法。
LSH的基本思想:咱们首先对原始数据空间中的向量进行hash映射,获得一个hash table,咱们但愿,原始数据空间中的两个相邻向量经过相同的hash变换后,被映射到同一个桶的几率很大,而不相邻的向量被映射到同一个桶的几率很小。所以,在召回阶段,咱们即可以将全部的物品兴趣向量映射到不一样的桶内,而后将用户兴趣向量映射到桶内,此时,只须要将用户向量跟该桶内的物品向量求内积便可。这样计算量被大大减少。
关键的问题是,如何肯定hash-function?在LSH中,合适的hash-function须要知足下面两个条件:
1)若是d(x,y) ≤ d1, 则h(x) = h(y)的几率至少为p1;
2)若是d(x,y) ≥ d2, 则h(x) = h(y)的几率至多为p2;
其中d(x,y)表示x和y之间的距离, h(x)和h(y)分别表示对x和y进行hash变换。
知足以上两个条件的hash function称为(d1,d2,p1,p2)-sensitive。而经过一个或多个(d1,d2,p1,p2)-sensitive的hash function对原始数据集合进行hashing生成一个或多个hash table的过程称为Locality-sensitive Hashing。
向量化召回是目前推荐召回核心发展的一代技术,可是它对模型结构作了很大的限制,必需要求模型围绕着用户和向量的embedding展开,同时在顶层进行内积运算获得类似性。在深度学习领域其实模型结构层出不穷,百花齐放,可是这样一个特定的结构实际上对模型能力形成了很大的限制。
参考:https://blog.csdn.net/leadai/article/details/89391366