概述

为什么需要冷启动

通常推荐系统通过协同过滤、矩阵分解或是深度学习模型来生成推荐候选集,这些召回算法一般都依赖于用户-物品行为矩阵。在真实的推荐系统中,会有源源不断的新用户、新物品加入,这些新加入系统的用户和物品由于缺乏足够丰富的历史交互行为数据,常常不能获得准确的推荐内容,或被准确推荐给合适的用户。这就是所谓的推荐冷启动问题。冷启动对推荐系统来说是一个挑战,究其原因是因为现有的推荐算法,无论是召回、粗排还是精排模块,都对新用户、新物品不友好,它们往往过度依赖系统收集到的用户行为数据,而新用户和新物品的行为数据是很少的。这就导致新物品能够获得的展现机会是偏少的;新用户的兴趣也无法被准确建模。

对于某些业务来说,及时推荐新物品,让新物品获得足够的曝光量对于平台的生态建设和长期收益来说都是很重要的。比如,在新闻资讯行业的时效性要求很强,如不能及时获得展现机会其新闻价值就会大大降低;自媒体UGC平台如果不能让新发布的内容及时获得足够数量的展现就会影响内容创作者的积极性,从而影响平台在未来能够收纳的高质量内容的数量;相亲交友平台如果不能让新加入的用户获得足够多的关注,那么就可能不会有源源不断的新用户加入,从而让平台失去活跃性。

综上,冷启动问题在推荐系统中至关重要,那么如何解决冷启动问题呢?

如何解决冷启动问题

解决推荐系统的冷启动问题的算法(或策略)我总结为:“泛、快、迁、少” 四字口诀。

cold_start.png

:即对新物品进行泛化,在属性或主题上往更宽泛的概念上靠。比如,新上架一个商品,可以推荐给以往喜欢同品类的用户,也就是从 ”商品“ 上推至 ”品类“;新上线一个短视频,可以推荐给关注了该视频作者的用户,也就是从 ”短视频“ 上推至 ”作者“;新发布的一篇新闻资讯,可以推荐给喜欢同一主题用户,比如把介绍”歼20“的文章推荐给一个军事迷,也就是从”新闻资讯“ 上推至 ”主题“。本质上,这是一种基于内容的推荐(Content Based Recommendation)。当然,为了更好的推荐效果,我们有时候需要同时上推至多个不同的 ”上位概念“,比如新商品除了上推至 ”品类“,还可以上推至 ”品牌“、”店铺“、”款式“、”颜色“等。上推的概念有时候是新物品天然就具有的,这种情况比较简单,比如商品的各种属性一般在商品发布的时候商家就填好了;也有些概念并不是本来就有,比如文章的主题,这篇文章是属于”军事“、”体育“、”美妆“ 等哪个主题是需要另外的算法来挖掘的。

除了在标签或主题上的泛化,用某种算法得到用户和物品的embedding向量,再通过向量的距离/相似度来做用户和物品的兴趣匹配也是一种很常用的手段。矩阵分解、深度神经网络模型等算法都可以生成用户和物品的embedding向量,然而常规的模型还是需要依赖用户和物品的交互行为数据来建模,并不能很好地泛化到冷启动的用户和物品上。现在也有一些可以用来为冷启动用户和物品生成embedding向量的模型,比如《冷启动推荐模型DropoutNet深度解析与改进》。

上推或者泛化这种方法,虽然听上去很简单,也很好理解,不过,要往深了挖,也还是有很多工作可以做的。本质上,这是在利用物品的内容(属性)信息来弥补该新物品缺少历史交互行为的问题。比如,可以使用物品的多模态信息,如图片、视频等来做相关的推荐。例如,在相亲平台,可以给新用户(这里看作被推荐的物品)的照片颜值打一个分,然后推荐给具有相关颜值偏好的用户(这里指浏览推荐列表的用户)。

:天下武功,唯快不破。所谓的冷启动物品,也就是缺少历史用户交互行为的物品,那么一个很自然的思路就是更快地收集到新物品的交互行为,并在推荐系统里加以利用。常规的推荐算法模型和数据都是以天为单位来更新,基于实时处理系统可以做到分钟级、甚至秒级的数据及模型更新。这类的方法,通常是基于强化学习/contextual bandit 类的算法。这里给出参考文章,就不赘述了:《Contextual Bandit算法在推荐系统中的实现及应用》 。

:迁移学习是一种通过调用不同场景中的数据来建立模型的方法。通过迁移学习可以将知识从源域迁移到目标域。比如,新开了某个业务,只有少量样本,需要用其他场景的数据来建模。此时其他场景为源域,新业务场景为目标域。再比如,有些跨境电商平台在不同的国家有不同的站点,有些站点是新开的,只有很少的用户交互行为数据,这个时候可以用其他比较成熟的其他国家的站点的交互行为数据来训练模型,并用当前国家站点的少量样本做fine-tune,也能起到不错的冷启动效果。使用迁移学习技术要注意的是源领域与目标领域需要具体一定的相关性,比如刚说的不同国家的站点可能卖的商品有很大一部分是重叠的。

:少样本学习(few-shot learning)技术顾名思义是只使用少量监督数据训练模型的技术。其中一种典型的少样本学习方法是元学习(meta learning)。鉴于本文的目的不是介绍这些学习技术,这里不再过多介绍,有兴趣的同学可以参考一下:《基于元学习(Meta-Learning)的冷启动推荐模型》。