智能搜索和推荐系统第七章--推荐框架及原理

1.推荐系统的框架及运行

推荐系统关注的三大核心问题,分别是预测、排序和可解释性。预测主要是推断用户对物品的喜好程度。排序是对已经推断出的结果进行排序。可解释性是指对推荐的结果给出合理的解释,甚至可以通过关系图谱的方式展示。

1.1 基本框架

一个推荐系统大致可以分为4层,分别为离线层、存储层、近线层和在线层。离线层:不使用实时数据,不提供实时服务。存储层:顾名思义,就是负责存储数据和索引。近线层:使用实时数据,但是不保证实时服务。在线层:使用实时数据,保证实时服务。当然,我们可以把4层的推荐系统简化,去掉近线层从而演变成三层的推荐系统。下图所示是一个典型的Web推荐架构。

最近,比较火热的推荐系统是一种基于信息流的推荐系统。这里的信息流也叫Feed流或者兴趣Feed。顾名思义,Feed流就是将内容按照个人的兴趣组织在一起。基于信息流的推荐系统又可以分为两大类:一类是基于聚合信息流的架构,另一类是基于社交动态信息流的架构。两类基于信息流的推荐系统如下两个图所示。

基于聚合信息流架构借鉴了搜索引擎的架构,在技术上需要一定改造。图7-2所示架构可以划分成几个模块:日志收集、内容发布、机器学习、信息流服务、监控报警。日志收集是所有排序训练的数据来源,要收集的最核心数据是用户在信息流上的行为数据,用于机器学习更新排序模型;内容发布就是用推或者拉的模式把信息流内容从源头发布到受众端;机器学习是利用收集的用户行为数据训练模型,然后为每一个用户即将收到的信息流内容打分;信息流服务是为信息流的展示前端提供服务接口;监控报警是系统的运维标配,保证系统的安全和稳定等。

比较上面两图的架构发现,基于社交动态信息流和基于聚合信息流的推荐系统的不同之处在于产生内容的方式不同,数据分发时所依据的数据来源不同。

虽然基于聚合信息流的推荐系统会逐渐演化成基于社交动态信息流的推荐系统,从图中可以看出两种信息流的架构并不完全一样。我们也可以抽象出一些共有的架构部分。

1.2 组件及功能

典型的Web推荐架构主要由4部分组件组成,分别是推荐服务、存储系统、离线学习和在线学习。

  • 推荐服务:用户从Web服务器上获取推荐请求,然后获取系统推荐的物品信息。
  • 存储系统:主要作用是存储必要的数据和索引。比如存储用户特征,包括用户画像数据和用户行为数据;存储物品特征,主要包含物品的属性等;存储推荐算法模型的参数以及物品的索引。
  • 离线学习:利用用户数据进行大量学习,由于通常需要学习的数据量大而且耗时长,因此这部分组件一般在离线环境中运行。
  • 在线学习:利用用户的即时数据,不断实时更新一些模型参数,并逐步对模型进行调整。
1.2.1 推荐引擎是如何工作的

前文已经讲解了推荐系统的三大核心问题,同时我们知道推荐算法在整个推荐系统的地位和作用是相当重要的。下面学习推荐引擎是如何工作的。如图7-4所示,推荐引擎从一个大的结果集中通过协同过滤模型或者一些相关性模型或算法进行结果召回,然后把召回的结果集进行排序。排序阶段又可以细分为粗排、精排以及再排序更为细致的阶段。推荐引擎根据不同的推荐机制并利用数据源中的一部分用户数据,分析出一定的规律或者直接预测用户对其他物品或内容的喜好。这样,推荐引擎就可以给用户推荐他可能感兴趣的物品或者内容了。

对比搜索系统和推荐系统可知,搜索系统最重要的目标是降低延迟和提高相关性分析。推荐系统的目标不是帮助用户找到相关内容,而是希望用户消费内容。当然,搜索系统和推荐系统也有很多相似的地方。比如,推荐系统和搜索系统底层技术实现基本上是相同的。基于内容的推荐系统本质上就是一个小的搜索系统。

广告系统是一个特殊的存在。搜索系统和推荐系统都是为人找信息,而广告系统是为信息找人。广告系统在形式上更像推荐系统,在技术实现上又兼有推荐系统和搜索系统两者的特点。其实在技术实现上,我们可以将搜索系统和推荐系统进行完美的统一。

1.2.2 推荐系统的经典问题

推荐系统一直存在两个比较经典的问题:探索和利用(Exploration & Exploitation,EE)、冷启动问题。本节主要介绍探索和利用问题。探索指探索未知的领域;利用指根据当前信息,由训练的模型做出最佳的决策。实际上,探索是指做你以前从来没有做过的事情,以期望获得更高的回报;利用是指做你当前知道的、能产生最大回报的事情。

在推荐系统中为了可以准确估计每件物品的响应率,我们可以将每件候选物品展示给一部分用户,并及时收集物品的响应数据,以此对候选物品进行探索。然后,利用响应率估值较高的物品来优化目标。但是探索过程中存在机会成本,如果仅根据当前收集的数据估算物品响应率,那么,实际上候选物品可能并没有机会展示给用户,这是一个权衡和博弈的过程。

如果利用太多,那么模型比较容易陷入局部最优,但是探索太多,模型收敛速度太慢,这就是EE的困境。EE问题的核心是平衡推荐系统的准确性和多样性。所以,解决EE问题的关键是找到一种长期收益最高,但可能对短期奖励(Short-term Reward)有损失的策略。现实中,我们可以用求解多臂赌博机(Multi-Armed Bandit,MAB)的方法来解决EE问题。

Bandit算法来源于历史悠久的赌博学。事情是这样的:一个赌徒要去摇老虎机,走进赌场一看,一排老虎机外表一模一样,但是每个老虎机吐钱的概率不一样。他不知道每个老虎机吐钱的概率分布,那么每次该选择哪个老虎机来最大化收益呢?这就是MAB问题。Bandit算法不是指一个算法而是指一类算法。

下表介绍了几个最常用的Bandit算法。

下表为推荐系统与Bandit算法对应关系

在推荐系统中,我们常采用三类策略解决EE问题,包括贝叶斯方法、极小/极大方法以及启发式赌博方案。这里只介绍前两种方案。

1.贝叶斯方法

贝叶斯方法解决MAB问题如下表所示。MAB问题可以转化成马尔可夫决策过程(MDP)。MDP问题的最优解需要通过动态规划(DP)的方式求解,虽然存在最优解,但是求解的成本极高。MDP是一个研究序列决策问题的框架。其利用状态空间、奖励函数以及转移概率定义了一个序列问题。贝叶斯方法的目标是找到与MAB问题对应的贝叶斯最优解。

下表为使用贝叶斯方法解决MAB问题

2.极小/极大方法

EE问题也可以利用极小/极大方法来解决。极小/极大方法的核心思想是找到一种方案,使该方案的最差性能限定在合理范围内。性能可以由遗憾来衡量。假设臂中奖概率是固定的,那么中奖概率最高的臂就是最优臂。所以在T次拉臂后,遗憾就是拉最优臂T次获得的期望总奖励与根据拉臂方案获得总奖励之间的差值。

在极小/极大方法中,UCB的解决方案最为流行,其通常会不断探索以降低最差性能。

2.推荐系统的冷启动

随着越来越多的互联网平台对推荐系统的使用以及推广,用户对于通过推荐系统获取信息的方式也越来越习惯。当用户当前搜索的历史行为为空时,推荐系统面临一个比较独特的状态,即冷启动状态。冷启动问题处理不好会导致推荐的满意度降低。针对新用户,推荐系统如何生成推荐结果,尤其在当下引入新用户的成本相当高的情况下,如何快速让新用户留存下来并转化是非常重要的。所以,对于推荐系统来说,处理冷启动问题是一门学问,也是一个难点。

推荐系统冷启动主要分为三类:用户冷启动、物品冷启动、系统冷启动。冷启动问题的解决方案可以有以下几种,比如利用热门数据、利用用户注册信息、利用第三方数据、利用物品内容属性和利用专家标注数据,如下图所示。下面举例介绍这几类冷启动问题解决方案。

1.利用热门数据
热门数据是物品按照一定规则排序得到的排名靠前的数据,反映了大众的偏好。在某些场景下,我们可以先用热门数据作为冷启动问题的解决方案。

2.利用用户注册信息
用户注册时,系统会对新用户的信息进行收集。推荐系统可以利用用户基本信息,如年龄、学历等对用户分类,然后根据用户所属分类推荐同类别下其他用户喜欢的物品;利用用户在注册过程中授权的信息,如定位信息、通讯录信息等,推荐给通讯录好友喜欢的物品等;利用用户注册过程中填的兴趣标签,推荐与标签相关物品。

3.利用第三方数据
目前,很多网站或者App支持第三方账号登录。用户登录功能支持QQ、微信、邮箱或者第三方账号登录。系统可以获取第三方平台提供的相关信息,这个相关信息可能包括用户本身信息和朋友关系信息。系统通过协同过滤或者聚类等算法计算出用户的兴趣度,弥补用户冷启动所带来的推荐不足。

4.利用物品内容属性
在新闻类、咨询类网站中利用物品的内容属性推荐是十分重要的。物品的内容属性分为三大类:物品本身的属性、物品的归纳属性、物品的被动属性。物品本身的属性包括标题、产出时间等。物品的归纳属性是物品的类别属性,包括类别、品牌等。物品的被动属性表示物品的被动行为的属性,如浏览、点击、评论等。由于新物品缺少被动属性,因此在进行推荐时,我们可以根据其本身属性和归纳属性推荐给喜欢同类物品的用户。例如,周杰伦的《说好不哭》这首歌在刚推出时,我们可以根据其本身属性(歌手、发行时间、歌曲简介等)和归纳属性(类型、流派等)找到相关歌曲。

5.利用专家标注数据
有些系统在刚建立的时候,既没有用户行为数据,也没有充分的物品内容数据,因此很难进行物品相似度度量。这种情况属于系统冷启动问题,可利用专家标注解决。
以Pandora电台为例,从音频信息上解决相似度问题,技术实现难度较大,而仅仅使用专辑、歌手等信息,推荐效果又不是很好。Pandora电台为了更加精准地进行推荐,聘请一批音乐专家对几万名歌手的歌曲从400多个维度去标注,构建每首歌曲的音乐基因向量,然后通过常见的向量相似度算法计算出歌曲的相似度。

3.推荐系统的召回策略

前文中讲到大型的推荐系统一般都会有两个阶段——召回和排序阶段。为什么需要召回阶段?首先是因为物品众多,系统无法为每一个用户逐一计算每一个物品的评分,这就需要召回阶段。召回阶段的作用就是圈出一部分物品,以此降低系统计算量。根据不同的业务场景,我们可以选择不同的召回策略。召回策略有很多种,比较重要的有基于行为相似的召回和基于内容相似的召回。

3.1基于行为相似的召回

协同过滤算法(Collaborative Filtering Recommendation)是推荐系统最基础和最常用的算法。该算法通过分析用户的兴趣,在用户群中找出与当前用户相似的用户。但是,该算法有一个前提条件,即相似的人对于同一个事物所表现出的兴趣度是相同的。

协同过滤算法包括以下几个步骤:收集用户偏好、找到相似的用户、计算并推荐。

协同过滤算法也可分为两种:一种是基于用户(User-based CF),另一种是基于物品(Item-based CF)。下面具体讲解这两种算法。

1)User-based CF算法的核心思想是利用用户的行为去定义与其相似的用户,即先使用统计方法寻找与当前用户有相同喜好的近邻用户,然后根据近邻用户的行为数据产生推荐结果,如下两图所示。

2)Item-based CF算法的核心思想是根据用户对物品的评价,发现物品间的相似度,根据目标用户的历史偏好将类似的物品推荐给用户,如下两图所示。

在计算两个用户的兴趣相似度过程中,我们可以使用以下几种方法。

1.Jacard相似度
Jacard相似度计算如式(7-2)所示:

3.2基于内容相似的召回

基于内容相似的召回往往又建立在对内容理解的基础上。它的核心思想是根据推荐物品的元数据或描述内容,发现物品间的相关性,然后基于用户的喜好,推荐给用户相似的物品。

前文中提到过语言模型,这里介绍另一种语言模型Word2Vector。这个模型概念是Mikolov在2013年提出来的。Mikolov在NNLM(Neural Network Language Model)模型的基础上,提出了Word2Vector的算法。Word2Vector有两种训练模式,分别是CBOW和Skip-gram。在结构上,CBOW和原NNLM类似,去掉了隐藏层,使投影层直接映射到了Softmax输出;在原理上,CBOW和原NNLM一样,也是利用被估计词的上下文来预测该词的向量。但是,Skip-gram和CBOW在原理上正好相反,是用某个词来预测该词的上下文。为了减少计算量,Mikolov提出了两套解决方法,一种是Hierarchical Softmax,另一种是Negative Sampling。

Hierarchical Softmax是把输出层改造成基于词频设计的Huffman Tree,用叶子节点表示每个词,通过根节点到词的路径为词编码,从而计算得到每个词的词向量。词频越高,离Tree的根节点越近,则该词更加容易被搜索到。

尽管分层Softmax在计算上已经达到了实用的程度,但是Mikolov依然对计算速度不够满意,于是在简化噪声对比估计的基础上,得到Negative Sampling方法,以代替分层Softmax的Huffman Tree结构。

1.Huffman编码与Huffman tree

Huffman Tree是带权重的最优二叉树,即构造一棵二叉树,使带权重的路径长度值最小。权重越大的节点离根节点的路径距离就越短;反之,离根节点的路径距离也就越长。

Huffman Tree的构造方法如下。
1)假设存在n个权重值的序列θ={θ1,θ2,…,θn},每一个权重可以视为一棵单独的树。
2)从大到小为权重序列重新排序,找出权重相对最小的两棵树作为左右子树,构造出一棵新的二叉树。我们可以指定左右子树哪个权重更小一些(比如左边比右边小)。新的二叉树的根节点的权重是两个子节点权重的和。
3)在原权重序列中删除已经合并的树,并加入新的树。
4)重复第2步和第3步,直到序列中只有一棵树为止。
如果给出一句话“我”“爱”“北京”“天安门”,它们在整篇文章中的出现频率分别是1、2、3、4,把词出现的频率当作权重来构建一棵Huffman Tree,具体步骤如下图所示。

1)根据构建Huffman Tree的步骤,首先挑取权重相对最小的两个值(1和2)作为左右子树,然后合并构建新的二叉树(权重小的为左子树,大的为右子树),新的二叉树根节点值为3,并删去原来的1和2,用新二叉树代替。
2)在新的集合中挑选两个最小的权重为左右子树,即两个3,合并两个子树构成新的二叉树,它的根节点的权重值是6。删去旧的部分,加入新的二叉树,得到第二步。
3)在新的集合,4和根节点为6的二叉树中,4较小作为左子树,6较大作为右子树,它们新的根节点为10。删去旧的部分,只留下新的二叉树。我们发现只有新的二叉树存在。新的二叉树即所求的Huffman Tree。我们也可以使用Huffman编码的方式来表示Huffman Tree。下面再来看看Huffman编码的构造方法。这里举一个例子。

Huffman Tree在构造的过程中统一给出左右子树大小的约定,在本节中左子树比右子树的权重值小。如果采用二进制编码的方式,左节点标识为0,右节点标识为1。根据这个规则我们尝试为“我”“爱”“北京”“天安门”4个词找出它们的Huffman编码,如下图所示。

“我”对应的编码为110,“爱”对应的编码为111,“北京”对应的编码为10,“天安门”对应的编码为0;很显然字符出现频率小编码就长,出现频率高编码就短,这样保证了此树的带权路径长度,效果上就是传送报文的最短长度。

2.CBOW-Hierarchical Softmax

CBOW(Continuous Bag-Of-Words Model)模型只包括了输入层、投影层和输出层。如果已知当前词是wt,上下文词是wt–2、wt–1、wt+1、wt+2。模型CBOW可以看作是利用上下文wt–2、wt–1、wt+1、wt+2来预测当前词wt的模型,如下图所示。

根据之前的介绍可以知道,计算每个词的词向量只和这个词与其对应的上下文有关系,即与(Context(w),w)有关。一般,我们可以给定一个范围来限制这个词的上下文Context(w)。目标函数可以用对数似然函数来描述,公式如(7-9)所示:

CBOW-Hierarchical Softmax模型框架如下图所示。


如果词典中词的个数为N,那么叶子的节点数也是N,非叶子节点的数目为N–1个。

3.Skip-Gram-Hierarchical Softmax

如下图所示,Continuous Skip-Gram模型和CBOW一样,也包括输入层、投影层和输出层。如果已知当前词是wt,则上下文词是wt–2、wt–1、wt+1、wt+2。Skip-Gram可以看作是利用当前词wt来预测上下文wt–2、wt–1、wt+1、wt+2的模型,和CBOW的输入和预测正好相反。

对于Hierarchical Softmax的Skip-Gram模型来讲,其需要优化的目标似然函数是:

4.推荐系统排序

4.1特征选择的方法

排序之前,我们需要考虑影响排序的特征。特征选取的优劣最终会影响到用户体验。工业界的认识是:数据和特征决定了机器学习的上限,而模型和算法只是用于无限地逼近这个上限。先来给特征工程下一个定义:特征工程的本质是一项工程活动,目的是从原始数据中提取供算法和模型使用的有效数据。下面给出一张特征工程示意图。

特征工程中特征处理是最核心的部分。特征处理可以分为数据预处理、特征清洗。而我们所说的特征通常可以分为基础特征和组合特征。

基础特征包括但不限于用户的基础信息,比如用户的性别、年龄、身高、生日和注册时间等;用户的输入内容,比如一些平台建议用户填写的兴趣标签、用户自身的描述信息和用户的评论信息等;用户的行为信息,比如用户的登录信息、登录时间段、使用时长、对物品的评价、物品页面的停留信息和物品页面的点击信息等。这些特征又可以根据不同的标签、类别、时间属性和位置信息等再次分割成更细微的特征。我们将这些特征归类为基础特征主要是因为它们通常是在产品日志中直接产生的,其中不少直接对推荐结果产生不可忽略的影响,但是有些不能直接使用,这就需要组合特征的存在。

组合特征主要是通过对基础特征乃至组合特征本身不断再组合的方式产生的特征。组合方法主要包括分箱、分解类别特征再组合、加减乘除、平方、开平方等。在不同的推荐模型下,对特征的选取以及再加工过程也不同。比如业界常用的线性模型LR,在使用的时候其实要求所有选用的特征都与预测的目标线性相关,所以在进行特征工程的时候,对组合特征的使用更为频繁及复杂。而在深度交叉模型中如Deep FM,对高阶组合特征的生成更依赖模型本身。但是,这并不代表深度交叉模型中,特征的选取与特征工程就不再重要,还是需要根据生产场景,选择不同的侧重点进行挖掘。

在生成了特征之后,特征验证也是一个比较重要的工作。由于生产场景的不同,生成的特征中往往存在不用或者暂时不可用的情况,这需要我们在一开始就将这类特征排除,以减少后面的工作,进而优化特征生产的流程等。

1.特征预处理

经过特征提取,我们可以得到未经处理的特征,这些特征数据可能有一些问题,不能直接使用。存在的问题总结如下。
1)不属于同一量纲。特征的规格不一致,不能放到一起。
2)信息冗余。对于某些定量特征,其包含的信息没有按区间划分。如征婚对象的高度,如果只关心合适、不合适可以转换为1和0表示。
3)定性特征不能直接使用。某些机器学习算法只能接受定量特征的输入,那么需要将定性特征转换为定量特征。最简单的方式是为每一种定性值指定一个定量值。通常使用哑编码的方式将定性特征转换为定量特征:假设有N种定性值,则将这一个特征扩展为N种特征,当原始特征值为第i种定性值时,第i个扩展特征值为1,其他扩展特征值为0。哑编码的方式相比直接指定的方式,不用增加调参的工作。对于线性模型来说,其使用哑编码后的特征可达到非线性的效果。
4)特征存在缺失值。缺失值需要补充。
5)信息利用率低。不同的机器学习算法对数据中信息的利用是不同的,之前提到在线性模型中,使用对定性特征哑编码可以达到非线性的效果。类似地,对定量变量多项式化,或者进行其他的转换,都能达到非线性的效果。
因为有上面这些问题的存在,我们有一些特别的方法进行特征处理。

(1)无量纲化特征处理

对于无量纲化数据的处理可以采用标准化和区间缩放法进行处理。标准化处理的前提是特征服从正态分布,标准化后的特征服从标准正态分布。区间缩放法是利用边界值信息,将特征值缩放到某个范围。

from sklearn.preprocessing import StandardScaler  
StandardScaler().fit_transform(input_data)

from sklearn.preprocessing import StandardScaler
MinMaxScaler().fit_transform(input_data)

2.特征选择

常用的特征选取方法主要包括过滤法、封装法、嵌入法。

过滤法:即按照相关性对各个特征进行评分,设定阈值或者待选阈值的个数,选择特征。例如方差选择法:先计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征;相关系数法:将P值作为评分标准,选择K个特征值;卡方检验和互信息法等。

方差选择法实现代码如下:

from sklearn.feature_selection import VarianceThreshold
#方差选择法,返回值为特征选择后的数据
#参数threshold为方差的阈值
VarianceThreshold(threshold=3).fit_transform(input_data)

用sklearn中feature_selection库的SelectKBest类结合相关系数选择特征的代码如下:

from sklearn.feature_selection import SelectKBest
from scipy.stats import pearsonr
#选择K个最好的特征,返回选择特征后的数据
#第一个参数为评估特征是否好的函数,该函数输入特征矩阵和目标向量
#输出二元组(评分,P值)的数组,数组第i项为第i个特征的评分和P值,在此定义为计算相关系数
#参数k为选择的特征个数
SelectKBest(lambda X, Y: array(map(lambda x:pearsonr(x, Y), X.T)).T, k=2).fit_
transform(input_data, input.target)

卡方检验实现代码如下:

from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
#选择k个最好的特征,返回选择特征后的数据
SelectKBest(chi2, k=2).fit_transform(input_data, input_target)

互信息方法也是评价两个变量之间相关性的方法,计算公式如下:

封装法:对于备选特征,每次在模型中选择或者删除部分特征,基于现有的评价标准,利用模型或者评分标准去评价变动特征对结果的影响,反向选择特征。

嵌入法:先使用某些机器学习算法进行训练,得到各个特征的权重,再根据权重从小到大选择特征。

4.2推荐系统的排序过程

在拥有了备选数据集和大量确定的特征之后,我们进入推荐系统的排序阶段。推荐排序问题和搜索排序问题完全一致。之前已经介绍过排序学习(L2R)的一些基本理论知识。排序学习可以分为单文档方法、文档对方法和文档列表方法。在实际的应用过程中,我们会把排序模型分为线性模型、树模型、深度学习模型,以及它们之间的组合模型等。业界普遍认为的模型迭代是从早期的线性模型LR,到引入自动二阶交叉特征的FM和FFM,再到非线性树模型GBDT和GBDT+LR,然后到深度学习模型,如下图所示。

这里主要是比较一下传统机器学习模型的优缺点。

1)LR模型的优点是可解释性强。通常,排序模型良好的可解释性是业界比较在意的指标。但是,LR需要依赖大量人工挖掘特征,而且有限的特征组合无法提供较强的表达能力。

2)FM在LR的基础之上做了改进,引入了交叉项作为特征,可以减少人工特征挖掘的过程,捕捉更多的信息。但是,FM模型只能捕捉两两特征间的关系,无法获得更高阶的交叉特征。

3)GBDT是一个提升模型,它通过组合多个弱模型拟合残差得到一个更强的模型。GBDT属于树模型,能够很好地挖掘组合高阶特征,具有一定可解释性。但是,它对高维度稀疏特征、时间序列特征处理得不是很好。

随着业务场景的扩展,在传统模型上优化和收益将会受限。与此同时,海量数据、知识图谱等多维度特征的引入,使传统的排序学习继续向深度学习模型发展。前文中也提到了几个深度学习模型实例,这里具体讲讲深度学习模型优势。

1)强大的模型拟合能力。深度学习模型包含多个隐藏层和隐藏结点,配合非线性激活函数可以模仿神经细胞工作方式去拟合任何函数。

2)强大的特征表征和泛化能力。深度学习模型可以处理很多传统模型无法处理的特征。例如深度学习模型可以直接从海量训练样本中学习到高维稀疏特征的隐含信息,并通过嵌入的方式表征;对于文本、序列特征以及图像特征,深度学习模型均可处理。

3)自动组合和发现特征的能力。华为提出的Deep FM以及Google提出的Deep Cross网络模型可以自动组合特征,代替大量人工组合特征。

当然,深度学习模型也存在一些现实问题。比如深度学习的黑盒属性会带来巨大的解释成本,也会带来一些业务问题。比如,对于负例的快速响应、模型是否能充分学习无从得知。但是,我们相信深度学习一定是推荐系统发展的方向。

5.基于知识图谱的推荐系统

知识图谱是认知智能的重要一环,知识赋能的智能推荐将成为未来推荐系统的主流。智能推荐可以表现在多个方面,包括场景化推荐、任务型推荐、冷启动场景下推荐、跨领域推荐、知识型推荐等。

1)场景化推荐。比如在淘宝上搜“沙滩裤”“沙滩鞋”,通过这些搜索词,系统可以推测用户近期去海边度假,可以按照这个场景推荐防晒霜、草帽、遮阳帽等。

2)任务型推荐。用户购买了羊肉卷、火锅底料等,系统可以根据完成涮火锅任务所需物品进行推荐,比如推荐火锅、电磁炉等。

3)冷启动场景下的推荐。这是推荐领域比较棘手的问题。我们可以通过知识图谱解决推荐系统数据稀疏及冷启动问题。

4)跨领域的推荐。现在流量入口成为吸金入口,各大网站纷纷寻找新的模型进行流量变现。做好垂类的知识图谱以及打通多个知识图谱具有一定的经济效益。比如,如果一个短视频用户经常晒风景照片或视频,那么平台可以考虑为该用户推荐一些淘宝的登山装备。再比如百科知识图谱告诉我们九寨沟是个风景名胜区,旅游需要登山装备,登山装备包括登山杖、登山鞋等,从而实现跨领域推荐。

我们知道推荐系统的最大瓶颈是推荐的可解释性差。现实中,图是解释万物的基础。多种关系的交织可以组成一张图。知识图谱正好以关系图将现实中的实体连接起来。所以,知识图谱必定是推荐系统一个强大的技术支持。

我们可以通过三种方式将知识图谱引入推荐系统。依次学习:首先使用知识图谱得到实体向量和关系向量,然后将这些低维向量引入推荐系统,学习得到用户向量和物品向量,如图下图所示。

联合学习:将知识图谱的特征学习和推荐算法的目标函数结合,使用端到端的方法进行联合学习,如下图所示。

交替学习:将知识图谱和推荐算法视为两个分离但又相关的任务,使用多任务学习的框架进行交替学习,如下图所示。

Author: CinKate
Link: http://renxingkai.github.io/2021/05/20/SearchAndRec-Chapter07/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.