目录

基于多任务学习的知识图谱增强推荐系统

使用知识图谱,增强基于 Embedding 的推荐系统的效果。

知识图谱增强推荐系统

推荐系统

推荐系统本质上是一种信息过滤系统,用于预测用户(后文中统一用 user 表示)对于物品(后文中统一用 item 表示)感兴趣的程度。随着互联网中各种信息爆炸式增长,各种传统行业的数字化也进一步加深,各个服务提供商对于如何将找到用户真正感兴趣的内容有着迫切的需求。与搜索引擎不同的是,推荐系统中的 user 往往没有一个明确的目的,或者说他们对于自己具体感兴趣哪个 item 往往也是模糊的,这就需要推荐系统从所有的 item 中 user 真正感兴趣的并将其推送给用户。

问题表述

推荐系统可以建模为如下形式:

  • 输入:user 列表$U$、item 列表$I$、user 与 item 的交互矩阵$M$
    • $M_{ij}$表示第$i$个 user 与第$j$个 item 的交互情况,通常用 0/1 表示。1 表示感兴趣/有过点击行为;0 表示不感兴趣/无点击行为。
    • $M_{ij}$也可以采用实值表示,用来表达感兴趣程度,取值越大表示感兴趣程度越高。
  • 输出:对于$\forall u\in U$,都有一个对$I$中所有 item 的打分结果$score_u$
    • 得分越高表示 user 对该 item 越感兴趣
    • 同样可以根据$score_u$,得到一个该 user 感兴趣的列表(对打分结果排序并取前 N 位)

问题建模

可以看出,推荐系统本质上还是一个机器学习中的回归问题(对 user-item 对进行打分),若对最终输出的 user 感兴趣的列表是否正确进行评估,该问题同样可以看作是一个二分类问题(将每个 user-item 对分为正样本和负样本)。在这一前提下,构建一个推荐系统的主要问题就转换为了如何基于目前的已有数据构建一个合适的机器学习模型。

目前,随着深度学习的火热,在推荐系统领域比较流行的方法是使用基于表示学习的模型进行建模与打分。基于表示学习的模型通常需要先得到 user 与 item 的嵌入向量(Embedding),然后在所形成的嵌入空间中对嵌入向量进行分析并打分。表示学习在本质上就是在学习 user 和 item 的低维实值向量(指 Embedding),使得学习到的向量能够满足模型的优化目标的约束。

在通常情况下,交互矩阵$M$中的每一个元素都用 0/1 表示,此时交互矩阵可以看作是一个二分图的邻接矩阵,所形成的网络可以分成 user 和 item 两部分,且每个部分内部没有边的链接。在这种情况下,推荐系统又可以看成是一个在二分图上进行的带约束的链接预测问题。

使用知识图谱对推荐系统进行增强

知识图谱是一种由实体(节点)和多种不同类型的关系(边)组成的多关系图,其中包含着丰富的客观事实,这些客观事实对于推荐系统而言可以产生极大的辅助作用。在推荐系统中,我们仅有 user 和 item 的交互信息,若将这一信息以二分图的形式进行组织,可以发现图中的链接往往是比较稀疏的,user 和 item 的 Embedding 往往不能学习到足够多的关联知识。而知识图谱作为一种大规模的、包含丰富客观事实的数据来源,不仅包含 user 和 item,还包括了其他的相关信息,通过知识图谱,可以为 user 和 item 获取到额外的特征信息,从而提升推荐系统的性能。

例如对于一个电影推荐系统而言,引入电影知识图谱后引入了导演、主演、风格、国别等信息,可以极大丰富 item 间的关联信息,从而提升推荐系统的推荐性能。

基于多任务学习的知识图谱增强推荐系统

2019 年,Hongwei Wang 等人提出了一种基于多任务学习的使用知识图谱增强推荐系统的方法,这种方法基于多任务学习的框架,对知识图谱 Embedding 和推荐系统的 Embedding 进行联合学习。这种方法并不是简单的对知识图谱进行表示学习,并用其中 item 或者 user 所对应的 entity 的 Embedding 直接作为掉推荐系统中的 Embedding,而是将知识图谱和推荐系统作为两个独立的系统,并通过一个名为$cross\And compress$ $unit$的结构对这两部分进行链接。

MKR结构示意图

如上图所示,左边的结构为推荐系统部分,右边的部分为知识图谱部分,中间的结构为$cross\And compress$ $unit$。

$cross\And compress$ $unit$

$cross\And compress$ $unit$结构的作用在于将知识图谱和推荐系统中关联的部分结合起来并为知识图谱和推荐系统分别生成新的 Embedding,其具体结构如下图所示。

/images/paper_note/MKR/cross_and_compress.jpg

$\bm{v}_l$是 item 在第$l$层的 Embedding 向量,$\bm{e}_l$是 entity 在第$l$层的 Embedding 向量,两者叉乘后可得到矩阵$C_l$,同时对矩阵$C_l$进行转置得到$C_l^T$。将矩阵$C_l$和$C_l^T$分别与两个矩阵相乘并将结果相加后再加上一个偏置量$\bm{b}_l^v$得到 item 在第$l+1$层的 Embedding 向量;再将矩阵$C_l$和$C_l^T$分别与另外两个矩阵相乘并将结果相加后再加上一个偏置量$\bm{b}_l^E$得到 entity 在第$l+1$层的 Embedding 向量。这一运算过程记为:

$$ \bm{v}_{l+1}, \bm{e}_{l+1} = \bm{C}_l(\bm{v}_l, \bm{e}_l) $$

通过$cross\And compress$ $unit$结构,item 和 entity 交换了其 Embedding 所持有的特征,完成了知识图谱和推荐系统之间的信息交互。

在通过$cross\And compress$ $unit$结构更新推荐系统和知识图谱中的 Embedding 时,由于推荐系统的 item 和知识图谱中的 Embedding 并不是严格的一一对应,在很多时候,一个 item 可能会与多个 entity 相关,一个 entity 通常也会和多个 item 相关,则将与 item$v$相关的 entity 的集合记作$\bm{S}(v)$,将与 entity$e$相关的 item 的集合记作$\bm{S}(e)$,$v$和$e$在第$L$层的 embedding (即最终的Embedding)分别为:

$$ \bm{v}_L = \mathbb{E}_{e\in\bm{S}(v)} [\bm{C}^L(\bm{v}, \bm{e})[\bm{v}]] $$

$$ \bm{e}_L = \mathbb{E}_{v\in\bm{S}(e)} [\bm{C}^L(\bm{v}, \bm{e})[\bm{e}]] $$

其中$\mathbb{E}$表示期望,$C^L$表示$L$层$cross\And compress$ $unit$运算叠加。不过这里感觉对多个 Embedding 进行直接采样平均会不会不太好,有没有可能引入一些 RNN 或者 Transformer 之类的模块进行一些处理😂。

同时,作者在论文中表示,$cross\And compress$ $unit$结构应当只应用于神经网络的较浅的层中,因为在深度的神经网络中,item和entity的特征通常会随着层数变深而变得更加具体,而且随着层数加深,知识图谱任务和推荐系统任务的相似性的逐渐下降也会使得特征的可移植性变差,因此在神经网络的较深的层上应用 MKR 会产生负迁移的风险。同时,在较深的层中,item 和 user 的特征混合,entity 和 relation 的特征混合,混合特征不适合进行共享,因为他们没有明确的关联。

如果没有相关项怎么办?
并不是所有 item 都在知识图谱中有相关的 entity,也不是所有的 entity 都在推荐系统中有相关的 item,这在实际应用中是一定会出现的问题。是否应当另行处理,例如使用 MLP 对其进行映射。

各模块的独立更新

在上一节中,我们介绍了$cross\And compress$ $unit$如何在知识图谱和推荐系统两个模块间进行沟通和信息交换。论文中使用$cross\And compress$ $unit$结构对 item 和 entity 的 Embedding 进行了映射,而对于 user 和 relation 的 Embedding,论文使用了 MLP 进行映射,在这一过程中两个模块是独立进行更新的,相互间没有信息的交换。

优化目标和优化过程

对于这一多任务学习的方法,优化的目标可以拆解成三个部分:推荐系统部分、知识图谱部分、正则化部分:

$$ \min \mathcal{L}_{all} =\mathcal{L}_{RS}+ \lambda_1\mathcal{L}_{KG} + \lambda_2\mathcal{L}_{Reg} $$

推荐系统部分的优化目标为:

$$ \mathcal{L}_{RS} = \sum\limits_{u\in U,v\in V}\mathcal{J}(\hat{y}_{uv}, y_{uv}) $$

其中$\mathcal{J}$是交叉熵损失函数,$\hat{y}_{uv}$是根据模型$u$对$v$感兴趣的概率,而$y_{uv}$表示事实上$u$是否对$v$感兴趣。

知识图谱部分的优化目标为:

$$ \mathcal{L}_{KG} = \sum\limits_{(h,r,t)\in\mathcal{G}}score(h,r,t) - \sum\limits_{(h^\prime,r,t^\prime)\notin\mathcal{G}}score(h^\prime,r,t^\prime) $$

其中$\mathcal{G}$为知识图谱中所有关系三元组,$score()$为关系三元组的打分函数,看起来就是一个TransE和DistMult等知识图谱补全模型所采用的margin loss的一个简化版

正则化部分的优化目标则所有可训练参数的第二范数:

$$ \Vert \textbf{W}\Vert_2^2 $$

基于以上优化目标,使用 mini-batch 的梯度下降法,对知识图谱和推荐系统中的参数同时进行优化。

总结

这篇文章的亮点在于,提出了一种多任务学习的框架对知识图谱和推荐系统进行联合学习,引入知识图谱中的知识对推荐系统进行增强,同时构造了一个深度神经网络,通过只在浅层上进行信息共享与交互来减弱不同特征混合以及任务差异性对特征的可移植性的影响。

Reference