提出背景
- 现有的KG-based的推荐系统仅仅利用了知识图谱的结构化数据,关注于图谱节点和节点关系,忽略了多模态知识图谱信息(图像,文本,视频等)。
- 多模态信息在进行推荐的时候起到至关重要的作用。例如在电影推荐中,用户通常会观看其海报或者预告片,决定是否观看此影片,因此,将多模态信息加入知识图谱中,利用知识图谱进行推荐是有必要的。
多模态知识图谱表示学习
基于特征的表示学习
基于特征的方法将模态信息视为实体的辅助特征。
基于实体的表示学习
基于实体的方法将不同类型的信息(例如文本和图像)视为结构化知识的关系三元组。
本文贡献
- 这是将多模态知识图引入推荐系统的第一项工作,由于多模态知识建模往往是不同模态的辅助信息关系,而非传统图谱中三元组所代表的语义关联关系,故传统的图谱建模方式并不能很好地对多模态知识图谱进行建模。。
- 我们开发了一种新的MKGAT模型,该模型利用多模态知识图上的信息传播来获得更好的实体嵌入以进行推荐。
共现知识图谱Collaborative Knowledge Graph
该知识图谱包括用户-项目二部图和原始的多模态知识图谱; 知识图谱中的实体既包括物品,也包括用户 。物品和用户之间的关系只有交互关系,即把共现矩阵的信息补充到知识图谱中。
模型基本架构
Multi-modal Knowledge Graph Embedding Module
以协作知识图谱作为输入,知识图谱嵌入模块利用多模式知识图(MKG)实体编码器和MKG注意层为每个实体学习新的实体表示。 新的实体表示将汇总其邻居的信息,同时保留有关其自身的信息。 然后,可以使用新的实体表示来学习知识图 嵌入,以表示知识推理关系。
Multi-modal knowledge graph entity encoder
为了将多模态实体整合到模型中,我们提出了对不同模态数据学习不同的嵌入。我们利用深度学习的最新进展为这些实体构造编码器以表示它们,从而为所有实体提供嵌入。
- 结构信息
采用翻译模型获得三元组的头实体,关系,尾实体的嵌入表示。 - 图像信息
为了表示图像的语义信息,采用经过在 Imagenet预训练的ResNet50获取嵌入表示。 - 文本信息
采用Word2Vec获得文本信息的嵌入表示然后应用平滑逆频率(SIF)模型[1]来获取句子的单词向量的加权平均值,将其用作代表文本特征的句子向量。
Multi-modal Knowledge Graph Attention Layer
传播层
给定候选实体hhh,首先通过transE模型学习知识图的结构化表示,然后把实体?的多模态邻居实体信息汇总到实体hhh(若hhh为物品实体,则相邻实体可以是购买过此物品的所有用户,或者是同属于某一类型的其他物品,这些实体信息都有助于增强hhh的语义表示;若hhh为用户实体,则相邻实体是该用户购买过的所有物品,体现了该用户的历史购买兴趣)。NhN_hNh? 表示直接连接到h的三元组的集合,集合了邻居实体信息,是每个三元组的线性组合,计算公式为
eagg=∑(h,r,t)∈Nhπ(h,r,t)e(h,r,t)\mathbf{e}_{a g g}=\sum_{(h, r, t) \in \mathcal{N}_{h}} \pi(h, r, t) \mathbf{e}(h, r, t) eagg?=(h,r,t)∈Nh?∑?π(h,r,t)e(h,r,t)
其中 e(h,r,t)e(h, r, t)e(h,r,t)是每个三元组 (h,r,t)(h, r, t)(h,r,t) 的嵌入,而 π(h,r,t)π(h, r, t)π(h,r,t) 是每个三元组e(h,r,t)e(h, r, t)e(h,r,t) 的注意力得分;e(h,r,t)e(h, r, t)e(h,r,t)是通过对头部实体,尾部实体和关系的嵌入的串联进行线性变换得到的
e(h,r,t)=W1(eh∥er∥et)\mathbf{e}(h, r, t)=\mathbf{W}_{1}\left(\mathbf{e}_{h}\left\|\mathbf{e}_{r}\right\| \mathbf{e}_{t}\right) e(h,r,t)=W1?(eh?∥er?∥et?)
在这里,选择LeakyReLU作为非线性激活函数。此后采用softmax函数对所有与将与连接的所有三元组的系数归一化
π(h,r,t)=exp?(π(h,r,t))∑(h,r′,t′)∈Nhexp?(π(h,r′,t′))\pi(h, r, t)=\frac{\exp (\pi(h, r, t))}{\sum_{\left(h, r^{\prime}, t^{\prime}\right) \in \mathcal{N}_{h}} \exp \left(\pi\left(h, r^{\prime}, t^{\prime}\right)\right)} π(h,r,t)=∑(h,r′,t′)∈Nh??exp(π(h,r′,t′))exp(π(h,r,t))?
聚集层
为了保留实体的原始信息,我们需要将eagg\bold {e_{agg}}eagg?和eh\bold{e_h}eh?进行聚集。
(1)fadd=W3eh+eaggf_{\mathrm{add}}=\mathbf{W}_{3} \mathbf{e}_{h}+\mathbf{e}_{a g g} fadd?=W3?eh?+eagg?
(2)fconcat =W4(eh∥eagg )f_{\text {concat }}=\mathbf{W}_{4}\left(\mathbf{e}_{h} \| \mathbf{e}_{\text {agg }}\right) fconcat ?=W4?(eh?∥eagg ?)
知识图谱嵌入任务
对上述经过MKGs得到的实体编码进行表示学习,这里采用的是翻译模型
score?(h,r,t)=∥eh+er?et∥22\operatorname{score}(h, r, t)=\left\|\mathbf{e}_{h}+\mathbf{e}_{r}-\mathbf{e}_{t}\right\|_{2}^{2} score(h,r,t)=∥eh?+er??et?∥22?
损失函数
LKG=∑(h,r,t,t′)∈T?ln?σ(score?(h,r,t′)?score?(h,r,t)),\mathcal{L}_{\mathrm{KG}}=\sum_{\left(h, r, t, t^{\prime}\right) \in \mathcal{T}}-\ln \sigma\left(\operatorname{score}\left(h, r, t^{\prime}\right)-\operatorname{score}(h, r, t)\right), LKG?=(h,r,t,t′)∈T∑??lnσ(score(h,r,t′)?score(h,r,t)),
Recommendation Module
推荐模块知识图实体嵌入(由知识图谱嵌入模块获得)和协作知识图作为输入,推荐模块还采用MKG实体编码器和MKG注意层来利用相应的邻居来丰富用户和物品的表示。 最后,可以根据传统推荐模型来生成用户和项目之间的得分分数。
注意,在推荐模块中,不同于嵌入模型的一点时,在MKG注意层中我们为了保留每一层的信息,进行了表示拼接
eu?=eu(0)∥?∥eu(L),ei?=ei(0)∥?∥ei(L)\mathbf{e}_{u}^{*}=\mathbf{e}_{u}^{(0)}\|\cdots\| \mathbf{e}_{u}^{(L)}, \quad \mathbf{e}_{i}^{*}=\mathbf{e}_{i}^{(0)}\|\cdots\| \mathbf{e}_{i}^{(L)} eu??=eu(0)?∥?∥eu(L)?,ei??=ei(0)?∥?∥ei(L)?
损失函数
y^(u,i)=eu??ei?\hat{y}(u, i)=\mathbf{e}_{u}^{* \top} \mathbf{e}_{i}^{*} y^?(u,i)=eu???ei??
Lrecsys =∑(u,i,j)∈O?ln?σ(y^(u,i)?y^(u,j))+λ∥Θ∥22\mathcal{L}_{\text {recsys }}=\sum_{(u, i, j) \in O}-\ln \sigma(\hat{y}(u, i)-\hat{y}(u, j))+\lambda\|\Theta\|_{2}^{2} Lrecsys ?=(u,i,j)∈O∑??lnσ(y^?(u,i)?y^?(u,j))+λ∥Θ∥22?
数据集
- MovieLens+Knowledge Graph
- Knowledge Graph来自于. Knowledge-aware graph neural networks with label smoothness regularization for recommender systems
- 视频信息来自Youtube
- 文本信息来自TMDB
- Dianping+Knowledge Graph
- 大众点评食品的知识图是从美团链收集的-美团点评集团为餐饮和娱乐构建的内部知识图。
- 图片信息来自大众点评餐厅top榜
- 文本信息来自大众点评评价区。
自问自答
本文的创新点是什么?
- 利用多模态知识图谱提高推荐的准确率
本文的主要架构?
- KGE
- 知识图谱传播方法+注意力机制
为什么在知识图谱嵌入模块和推荐模块使用了相同的模型?
参考文章
https://blog.csdn.net/TgqDT3gGaMdkHasLZv/article/details/111350563