今天是大年初一,小编给大家拜年啦!
本文是小小挖掘机2020年货的第一篇,主要回顾一下2019年推荐系统遇上深度学习系列的一些原创文章。后续还会有更多的年货送给大家,希望大家持续关注呦~。
推荐系统大多分为召回、排序(有时候又细分为粗排和精排)、重排序等几个阶段,而本文也将按照此思路展开。
1、召回阶段
目前召回阶段大多数使用多路召回策略,如向量化召回、协同过滤、基于热度召回、基于兴趣标签召回等等。其中双塔模型是最为常见的一种召回模型。
双塔模型如下图所示:
在推荐系统遇上深度学习(三十四)--YouTube深度学习推荐系统和RS Meet DL(72)-[谷歌]采样修正的双塔模型两篇文章中,对双塔模型进行了较为详细的介绍,特别是后一篇详细介绍了在大规模推荐系统中使用双塔模型来做召回的一些经验,如通过batch softmax optimization来提升训练效率和通过streaming frequency estimation来修正sampling bias。
双塔模型实质上是在学习用户和物品的Embedding,并通过Embedding的内积来计算二者的相似性。用户的Embedding可以表征用户的兴趣,但是目前的大多数算法仅仅将用户的兴趣表示成单个的Embedding,这是不足以表征用户多种多样的兴趣的,同时容易造成头部效应。因此在RS Meet DL(74)-[天猫]MIND:多兴趣向量召回中,提出了MIND,同时生成多个表征用户兴趣的Embedding,来提升召回阶段的效果。
除了通过端到端的方式训练得到Embedding之外,还有一些训练得到Embedding的策略,如阿里的两篇推荐系统遇上深度学习(三十六)-Learn and Transferr IDs Repre in E-commerce和推荐系统遇上深度学习(四十六)-阿里电商推荐中亿级商品的embedding策略,借助图网络和side-information并通过Skip-Gram模型来训练得到物品的Embedding,并使用side-information来一定程度上解决物品冷启动的问题。
而在airbnb的文章推荐系统遇上深度学习(四十四)-Airbnb实时搜索排序中的Embedding技巧中,借助skip-gram模型,基于用户Session中的点击序列训练房源的embedding,同时基于用户的预定序列来学习用户类型和房源类型的Embedding。
召回阶段的目的是能够快速得到用户可能感兴趣的物品候选集,但是双塔模型这种向量化模型对模型结构做了很大的限制,必须要求模型围绕着用户和向量的embedding展开,同时在顶层进行内积运算得到相似性。这样一个特定的结构实际上对模型能力造成了很大的限制。在推荐系统遇上深度学习(三十九)-推荐系统中召回策略演进!一文中,介绍了阿里的深度树匹配召回模型,使得先进模型应用于召回阶段变为可能。而在