上一课时,我们讲解了一些解决用户兴趣探索与开发问题的模型及方法,在对用户进行服务时,我们总是需要在当前收益与长远收益之间做权衡。
而若要扩大收益,我们就需要做大供给侧和需求侧。在业内平台中,用户和物品的变化是一个动态发展的过程(比如用户的激活和流失、物品的上架和下架)。这就意味着,供给侧和需求侧在整体上是不断变化的,所以互联网产品的常态是不断有新用户和新物品加入。
新用户和新物品的冷启动也会伴随整个产品生命周期。在平台上,新用户基本没有行为,新上架的物品也不会有用户浏览记录,而系统需要通过用户对物品的行为才能做个性化推荐,这时,对新用户和新物品的匹配将变得困难。
尤其把推荐的模块放在首页,并以此作为产品推广的主要抓手时,如果投入大量费用进行活动运营,将会有很多新用户涌入。此时留存率决定了运营活动的成败,而新用户和新物品的匹配就变得至关重要。
冷启动问题是推荐系统必然遇到的经典问题。接下来,我们就重点讨论一下解决冷启动的方案。
非技术方法
作为一名工程师,在遇到问题时,我们要注意不能仅仅从技术或算法角度去思考解决方法,因为技术并不是万能的,算法仅仅是解决问题的一种手段,而不能是禁锢思维的镣铐。
关于冷启动问题的解决方法有很多,这里我们列出重要的 2 种。
-
产品流程优化,例如通过弹窗让用户选择兴趣标签、让用户通过社交账号进行登录等;
-
利用第三方数据,这就需要投入资金了,实际上“花钱能办的事都不是事”。
在此基础上,我们作为技术人,同样需要考虑如何用技术手段来实现需求,最简单的就是基本策略方法。
基本策略方法
基本策略方法,分为热门和基本信息推荐、内容推荐这两种。
-
热门和基本信息推荐
关于热门和基本信息推荐的方法,我们在 05 讲中已经介绍过。在冷启动过程中,既然没有用户行为,系统无法做到个性化推荐,那就先实现非个性化推荐策略。
-
内容推荐
关于内容推荐的方法,我们在 05 讲中已经介绍过。相比协同过滤算法来说,内容推荐策略只需要更少的用户行为来使模型生效,比如点击分类信息。
基本策略方法的适用场景和收益有限,而强化学习和在线学习拥有更加广泛的适用场景和能够获得更大的收益。
强化学习与在线学习方法
1.强化学习算法
关于强化学习算法,我们在上一课时已经介绍过,一句话概括:采用损失一小部分现实收益的方法去试探用户意图,最终完成冷启动。
2.在线学习算法
“天下武功唯快不破”,事实上,我们可以利用基本策略或者强化学习探索等方式,对毫无行为的新用户进行首次推荐。只要用户产生了第一次行为,剩下的就是如何快速地捕获最新信号,从而给用户进行下一次推荐。
提升推荐系统实时性的方法有很多,也有相对应的实时算法模型进行预测,传统的离线方法为了加快对用户行为作出反应,就需要不断地利用最新的用户行为重新训练模型。而传统离线方法需要的训练样本量大,模型特征规模也大,且受到模型训练时间的限制,因此这种方式是有尽头的,也无法做到完全实时。
而在线学习能够做到实时流式的调整模型,每次训练不使用全部样本,而是把已经得到的模型作为基础,每来一个样本更新一次模型,并将新来的用户及时反馈到模型。其中,在业内应用较多的是 FTRL 框架。
FTRL(Follow the Regularized Leader)框架是一种在线学习方法,在算法世界中,算法工程师们一直心心念念考虑的都是算法模型的高精度和低稀疏度。精度高说明模型预测得更加准确,稀疏度低说明模型参数少/模型预测计算量小、速度更快。
对于在线学习来说,计算速度极大地影响了模型的实际效果。事实上,高精度和低稀疏度二者属于矛盾关系,降低稀疏度意味着模型参数更少、更简单,也就意味着精度降低。因此,在大多数情况下,算法工程师如果既想降低稀疏度,又不太降低精度,则需要进行 trade-off,而 FTRL 框架就是这种 trade-off 的结果。
事实上,FTRL 框架也是经过长期演化而成,限于篇幅原因,这里我们不再阐述推导过程。
深度学习方法
深度学习方法,指通过一些方法来改造和利用深度学习模型,做到适应甚至解决推荐系统的冷启动问题。常见方法如下。
-
多任务学习算法
关于多任务学习算法,我们已经在 12 讲中介绍过了,多任务学习通常适用于同源的多个任务之间,用于解决新任务样本数据稀疏的问题。其中一个任务如果解决完毕,则可以泛化到新的任务上。
-
预设与补充辅助信息方法
模块三中我们已经介绍了 RNN 范式可以将用户行为序列转化为隐向量表征,用户行为越多则说明隐向量表征越精确。
实际上,用户行为有时会比较稀少(比如下单等行为),此时为了提升隐向量表征的覆盖率,我们就必须加入其他的固有特征,比如用户的人口属性或者物品的内容属性等,这些信息统称为辅助信息。
事实上,我们可以将用户侧和物品侧的属性信息连接成一个拓扑结构,比如知识图谱、用户之间的社交拓扑等。而为了解决用户行为序列数据的稀疏问题,我们可以依据图信息生成更多的用户行为序列,而这些用户行为序列是深度游走模型的数据基础。
(1)深度游走(DeepWalk)模型
图信息生成的隐向量表征(Graph Embedding)对比序列信息的隐向量表征(Sequence Embedding),会生成更多的潜在序列,如下图 B-E-F、D-E-C 等,因而能够解决序列数据的稀疏问题。
关于深度游走(DeepWalk)模型的架构图如下:首先利用原始用户的行为数据(图 a)构造交互物品的有向图(图 b),然后利用随机游走(Random Walk)方法将有向图再次转化为生成序列(图 c),再由 word2vec 方法转化为隐向量表征(图 d)。
这里需要注意,由用户行为序列构造物品有向图时,首先我们需要在序列上添加时间窗口(称之为 session),然后按照窗口截取行为,这样做是为了节省计算和存储开销。
随机游走方法被用来从图中生成一条随机路径,从一个节点到它的邻居节点再到下一个,直到达到设定长度。随机游走方法会从图中随机抽取一些节点作为起点,然后再选择下一个节点。
对于有向图来说,我们可以按照随机游走转移概率公式进行选择。下面我们给出了一个非常简单的随机游走转移概率的公式,也就是到达节点 vi 后,下一步遍历 vi 的临接点 vj 的概率。
在公式中,image.png表示节点 vi 到节点 vj 的转移概率,image.png 表示 vi 的出边集合,image.png表示节点 vi 到节点 vj 边的权重,image.png表示两个节点之间不存在边的情况。
DeepWalk 模型是最基础的图表征方法,但是过度依赖用户行为生成物品关系图,如果遇到新加入的物品或者用户交互比较少的物品,将不能生成合理的隐向量表征,这时应考虑使用物品的辅助信息来进行补充,这就是 GES 模型。
(2)基于辅助信息的图表征(GES)模型
基于辅助信息的图表征(Graph Embedding with Side Information,GES)模型融合了物品的多个表征向量 ,通过在 MLP 范式中加入平均池化层,我们可以将多个表征向量平均起来,形成一个合成图的隐向量。
基于辅助信息的图表征(GES)模型的计算公式如下:
其中image.png表示融合后的图隐向量表征,image.png表示物品 v 的第 s 个辅助信息的表征向量。
GES 模型利用这种简单的方式融合了辅助信息,使得具有相似辅助信息的物品在向量空间的距离更近,丰富了隐向量表征的表达,在此基础上又演化出了 EGES 模型。
(3)增强型基于辅助信息的图表征(EGES)模型
增强型基于辅助信息的图表征(Enhance Graph Embedding With Side Information,EGES)模型在 GES 模型的基础上使用加权平均层代替了平均池化层,用于融合物品的多个表征,计算公式如下:
其中image.png表示融合后的图隐向量表征,image.png表示物品 v 的第 s 个辅助信息的表征向量,不同的是使用image.png表示物品 v 的第 s 个辅助信息的表征向量的权重,为了让权重大于 0,使用image.png代替image.png,如下图所示:
-
Sparse Features:稀疏特征
-
Dense Embedding:稠密表征
-
Hidden Representation:隐藏表征层
-
Sampled Softmax Classifier:采样Softmax分类器
-
Output Matrix:输出矩阵
如图,SI0 ~ SIn 表示多种辅助信息作为模型输入,并在隐藏表示层(Hidden Representation)处进行加权平均聚合,最后通过正负例采样进行优化。EGES 模型将取平均数改为取加权平均数的方式有其实际意义,例如在 58 同城 App 本地服务业务中,一位用户使用过美甲服务,那么她还会趋向于美睫和护发,因为它们同属于美容系列;而另一位用户使用过月嫂服务,如果满意那么还倾向于继续在同一家店找育儿嫂,因为用户对这家店给予了认同。因此实际上不同类型的辅助信息对于用户行为的贡献权重是不一样的。
-
跨域推荐方法
跨域推荐分为非对称方式和对称方式这两种。
-
非对称方式,认为目标领域的数据是稀疏的,而源领域数据是丰富的,需要把源领域获取的知识迁移到目标领域中去,起到先验知识和正则化降低过拟合的作用,而前面提到的基于迁移学习的多任务学习方法其实就是这种方式。
-
对称方式,将两个领域是平等互为补充的关系,都有独立的特征和两个领域可以共享的特征,这样需要将共享的特征提取出来并作出对应关系就能使得两个领域的知识通用,这里有代表性的是 EMCDR 模型。
跨域推荐表征与映射框架框架(EMCDR)
跨域推荐表征与映射框架(Embedding and Mapping framework for Cross-Domain Recommendation,EMCDR)利用来自多个域的反馈信息以分摊的方式来优化推荐效能。该框架如下图所示,分为以下三步。
-
第一步:求解隐含因子,即源领域用户和物品矩阵image.png、image.png,目标领域用户和物品矩阵image.png、image.png,学习每个域中实体的特定特征。
-
第二步:求解隐含空间映射,由 MLP 范式求解的非线性映射方法,捕获非线性因素并具备出色的拟合能力,效能优于线性映射方法。
-
第三步:利用源领域映射到目标领域的隐含参数进行推荐。
跨域推荐以及 EMCDR 框架在使用中有其现实意义:在某两个领域中,其中一个领域出现的用户或者物品,可以被看作是另外一个领域潜在的用户或者物品。
以 58 同城 App 本地服务为例,搬家业务和保洁业务就具备这样的特性,搬家业务的用户很可能会找保洁,保洁业务的用户也很可能会找搬家公司,二者是相互辅助和联系的。
本节小结
这一讲我们介绍了推荐系统中比较棘手的冷启动问题,解决冷启动问题对新用户和新物品的加入起着非常重要的作用,毕竟二者是平台保持增长和活力的关键。
道德经中“不言而善应,不召而自来”是对符合客观规律条件下,系统能够冷启动成功的最恰当的描述。在这一讲中,我们将技术手段作为重点进行讲述。在实际使用时,我们需要结合不同的应用场景制定方案,不应局限是产品形态变化还是推荐算法手段。
最后留一道思考题:你还能想到哪些解决推荐系统冷启动问题的方法?请在评论区与我交流。
从下一讲开始,我们将进入推荐系统的实践经验部分,敬请期待吧~