emm…图片复制过来显示不了(因为我太懒了0.0),要看图的话可以去我的博客瞅瞅,嘿嘿嘿
对了,有些英文短句假如翻译成中文,阅读的时候就太搞脑子了,所以我干脆就不翻译了
这篇论文的模型跟我上一篇发布的KPRN很像,所以结论就懒的写了

我的博客https://hikg.net/archives/106/

Introduction

Prior KG Based Methods

1. Meta Path based

通过设计Meta path,来利用KG作为推荐的辅助信息。Meta path是预先定义了特定格式、路径长度的path,用来捕捉KG承载的不同语义。

  • Meta path的具体方法:

    • 一些方法利用meta path连接的item之间的关系,来提高推荐质量
    • 另一些则是通过meta path,对user-user或者user-item之间的关系进行建模
  • 缺陷:

    • 严重依赖手工提取的特征来表示path的语义,这进一步依赖于领域知识
    • 更重要的是,手工设计的特征,通常不能涵盖所有可能的实体关系,因此这阻碍了推荐质量的提高

2. KG Embedding based

KG embedding based方法可以自动学习KG中实体的嵌入,最新的方法是collaborative knowledge graph embedding (CKE)

CKE通过TransR从KG中捕获实体语义,来学习item的潜在表示

  • 缺陷:

    • KGE无视了通过path连接的实体的语义关系(这在meta path based中研究广泛)
    • CKE忽略了由path表示的成对实体间的语义关系,因此难以完全捕捉KG的语义用作推荐

因此,需要寻找不依赖手工特征的data- driven的方法,还需要捕捉到both entities and paths encoded in KGs的语义。

而RKGE使用了a batch of recurrent networks以全自动的方式,对实体间的所有路径的语义进行建模;同时通过一个pooling operation学习各自的path显著性

3. Graph based

Running Example

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wapSSUs4-1612686893000)(https://n9.pw/images/2021/02/06/2021-02-06-16.55.27.png)]

Different paths connecting a same entity pair often carry relations of different semantics. Typically, certain paths can better describe user preferences than the others.

为了充分挖掘KG中的path用于推荐,不仅需要捕捉不同path的语义,还需要捕捉user对item偏好的显著性。

因此,采用recurrent networks来学习实体关系的语义:

  1. RN能够对不同长度的序列进行建模,因此特别适用于对path进行建模
  2. RN可以通过embedding layer对实体的语义进行建模
  3. 通过编码整个path,对实体关系进行建模。因此提供了一种学习实体、实体关系的统一方法。

RKGE

目标:给定user-item交互数据,利用KG中的异构信息,来帮助学习user、item两者的表示,然后将其用于推荐。(抽取得到的表示需要完全捕捉到实体、实体关系的语义信息)

RKGE的大致框架:

  1. 首先自动挖掘出实体对之间的语义路径
  2. 采用一批量的循环网络结构对不同的路径进行编码,每条路径由1个循环网络进行建模(自动学习语义表示)
  3. 通过池化操作确定不同路径的显著性,最终与推荐生成无缝集成

注:user集U=[u1,u2,...um]U=[u_1,u_2,...u_m]U=[u1,u2,...um],item集合V=[v1,v2,...vn]V=[v_1,v_2,...v_n]V=[v1,v2,...vn]

RRR表示user-item的交互历史,rij=1r_{ij}=1rij=1 表示 uiu_iui 倾向于vjv_jvj

使用entityentityentity指代所有能映射到KG中的对象(如user、item、genre、actor),表示为GGG

  • 定义1:

    • 实体集E=[e1,e2,...ek]E=[e_1,e_2,...e_k]E=[e1,e2,...ek],实体的关系集R=[r1,r2,...rg]R=[r_1,r_2,...r_g]R=[r1,r2,...rg]
    • P(ei,ej)=[p1,p2,...ps]P(e_i,e_j)=[p_1,p_2,...p_s]P(ei,ej)=[p1,p2,...ps]表示实体eie_ieieje_jej之间的连接路径

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-16ymhPKa-1612686893001)(https://n9.pw/images/2021/02/07/2021-02-07-10.40.18.png)]

1. Semantic Path Mining

由于KG的庞大体积和复杂性,连接实体对的路径数量庞大,可能包含(不同顺序、不同长度的)不同的实体类型、关系类型。为了提高模型的效率,设计了2种策略来选择路径:

  1. 只考虑连接uiu_iui和所有她评价过的item 的路径P(ui,vj)P(u_i,v_j)P(ui,vj),即{vj∣rij>0v_j|r_{ij}>0vjrij>0}。此外,还包括相关的item-to-item、user-to-user路径,这些路径作为user-to-item路径的子序列。
  2. 只考虑小于某个长度的路径。因为相对短的路径能较好的对实体关系进行建模,而较长的路径会损失语义信息,进而引入噪声。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aCVIckqy-1612686893003)(https://n9.pw/images/2021/01/27/2021-01-27-10.58.17.png)]

2. Recurrent Network Batch

循环网络能够较好的对顺序模型进行建模,且可以捕捉到实体间的语义、实体对之间的整个路径的语义。设计了一种新颖的网络结构来捕捉所有可能的关系,包括一批循环网络,每个循环网络学习单个路径的语义表示。Batch中的所有循环网络共享相同的参数,以防止过拟合。

假设s条不同长度的路径连接了一个实体对(ui,vj)(u_i,v_j)(ui,vj),如P(ui,vj)=[p1,p2,...,ps]P(u_i,v_j)=[p_1,p_2,...,p_s]P(ui,vj)=[p1,p2,...,ps]

注意:s是动态的,因为不同的实体对可能连接了不同的路径条数

对于任意的长度为T的路径plp_lpl(形如pl=e0⟶r1e1⟶r2e2...⟶rTeTp_l=e_0\stackrel{r_1}{\longrightarrow}e_1\stackrel{r_2}{\longrightarrow}e_2...\stackrel{r_T}{\longrightarrow}e_Tpl=e0r1e1r2e2...rTeT,其中e0=uie_0=u_ie0=uieT=vje_T=v_jeT=vj)recurrent network通过学习 每个实体的语义表示、整条路径的单一表示 来对路径进行编码。RKGE通过embedding layer和attention-gated hidden layer来实现上述目标。

2.1 Embedding Layer

对于plp_lpl中的每个实体ete_tet,embedding layer学习一个分布表示pltp_{lt}plt,将ete_tet映射到低维度的向量中。向量中的每个元素表示这个实体与一个潜在主题的关联,从而捕捉到这个实体的语义。

这样,路径plp_lpl被表示为pl=[pl0,pl1,pl2,...,plT]p_l=[p_{l0},p_{l1},p_{l2},...,p_{lT}]pl=[pl0,pl1,pl2,...,plT],其中的每个元素表示了plp_lpl中相应实体的(嵌入)表示。

随后,新的表示将作为hidden layer的输入,去学习a single representation that encodes the entire path

2.2 Attention-Gated Hidden Layer

为了学习路径的表示,hidden layer需要考虑到the embeddings of entities in the path和这些实体的顺序。

这需要采用一种flow-based方法,从路径的头实体e0e_0e0到尾实体eTe_TeT来对序列进行编码:

在每个t−1t-1t1步时,它学习一个隐藏状态hl(t−1)h_{l(t-1)}hl(t1),该隐藏状态对 the subsequence from e0e_0e0 to et−1e_{t-1}et1 进行编码,然后和ete_tet的embedding(pltp_{lt}plt)一起作为输入,来学习下一个time step的隐藏状态hlth_{lt}hlt。最终的状态hlTh_{lT}hlT编码了整个路径,因此作为整个路径的表示。


为了更好的控制通过路径plp_lpl的信息流,采用了attention gate(比普通RNN更有效)。

将step为t时的attention gate定义为alta_{lt}alt,为[0,1]之间的标量。在time为t时的隐藏状态为

式(1)hlt=(1−alt)⋅hl(t−1)+alt⋅hlt′h_{lt}=(1-a_{lt})\cdot h_{l(t-1)}+a_{lt}\cdot h_{lt}^{'}hlt=(1alt)hl(t1)+althlt

Attention gate alta_{lt}alt平衡了the input of the previous hidden-state hl(t−1)h_{l(t-1)}hl(t1)和当前的候选隐藏态hlt′h_{lt}^{'}hlthlt′h_{lt}^{'}hlt通过在当前的时间步完全合并输入得到

式(2)hlt′=σ(W⋅hl(t−1)+H⋅plt+b)h_{lt}^{'}=\sigma(W\cdot h_{l(t-1)}+H\cdot p_{lt}+b)hlt=σ(Whl(t1)+Hplt+b)

WWW是previous steps的线性变换参数;HHH是current steps的线性变换参数;

最终,使用双向RNN来推断attention gate,最大限度的探索输入序列。根据 the input observation at the current time step和the information from neighboring observation in both directions来对attention gate建模,公式如下:

式(3)alt=σ(MT⋅(hlt⃗;hlt←)+b′)a_{lt}=\sigma(M^\mathrm{T}\cdot (\vec {h_{lt}};\overleftarrow{h_{lt}})+b^{'})alt=σ(MT(hlt

;hlt

)+b)

σ\sigmaσ为sigmoid函数,用来将attention的范围控制在[0,1];

;;; 表示两个向量之间的级联操作

hlt⃗\vec {h_{lt}}hlt

hlt←\overleftarrow{h_{lt}}hlt

为双向RNN的隐藏表示,作为time step t附近的上下文信息的总结

式(4):hlt→=σ(W→⋅plt→+H→⋅hl(t+1)→+b→)\overrightarrow{h_{lt}}=\sigma(\overrightarrow{W} \cdot \overrightarrow{p_{lt}} + \overrightarrow{H} \cdot \overrightarrow{h_{l(t+1)}} + \overrightarrow{b})hlt

=σ(W

plt

+
H

hl(t+1)

+
b

)

hlt←=σ(W←⋅plt←+H←⋅hl(t+1)←+b←)\overleftarrow{h_{lt}}=\sigma(\overleftarrow{W} \cdot \overleftarrow{p_{lt}} + \overleftarrow{H} \cdot \overleftarrow{h_{l(t+1)}} + \overleftarrow{b})hlt

=σ(W

plt

+
H

hl(t+1)

+
b

)

hlt→\overrightarrow{h_{lt}}hlt

总结了从开始到step t的路径;

hlt←\overleftarrow{h_{lt}}hlt

总结了总结尾到step t的路径

总结:通过将uiu_iuivjv_jvj之间的每个合格路径(总数为s)同时合并到相应的attention-gated recurrent network(每个network对一个单独的路径进行编码)中,将生成一个 recurrent network batch。为防止过拟合,batch中的所有attention-gated recurrent networks共享相同的参数。最终得到了所有路径的隐藏表示,即:从uiu_iuivjv_jvj的实体关系的表示。

通过池化操作来区分这些hidden states在对实体关系建模时的不同重要性。介绍如下

3. Saliency Determination

由于从uiu_iuivjv_jvj连接了s条路径,不同的路径在对他们之间的关系进行建模时的重要程度不同。

For example, previous work has shown that shorter paths may have more impacts than longer ones, as shorter paths often indicate a stronger connectivity with clearer semantics.

因此在pooling operation的基础上设计了一个data-driven的方法,来区分路径的重要性。(因为池化操作专注于不同向量的最重要的“特征”,因此更符合目的)

Attention mechanisms [40] also seem to be one possible solution to address this issue. However, it generally aims to identify the importance of each element in a single sequence, while our goal is to decide the saliency of each path (i.e., sequence) between an entity pair.

因为pooling operation专注于不同向量的最重要“特征”,所以更符合要求。

对于P(ui,vj)P(u_i,v_j)P(ui,vj)中的s条路径来说,他们的last hidden states learnt by the recurrent network batch 是h1T1,h2T2,...hsTsh_{1T_1}, h_{2T_2},...h_{sT_s}h1T1,h2T2,...hsTs,其中TsT_sTspsp_sps的最后一步(也是路径psp_sps的长度)基于此,增加了一层max pooling layer来获取所有路径的最显著的特征。

式(5)h[j]=maxhiTi[j]h[j] = max h_{iT_i}[j]h[j]=maxhiTi[j],(1≤i≤s1 \leq i \leq s1is

h[j]是向量h的第j个维度的值 [s条路径中第一维的max,第二维,.....]T[s条路径中第一维的max, 第二维, .....]^T[smax,,.....]T

此外,为了避免h被某一个特定的hiTih_{iT_i}hiTi所影响(如P(ui,vj)P(u_i,v_j)P(ui,vj)中的某一条路径),需要对所有路径的最后hidden states进行一次average pooling操作。

通过pooling操作,得到了a final hidden state of all the paths between uiu_iui and vjv_jvj(即uiu_iuivjv_jvj之间的关系的路径的汇总)

然后在pooling layer后采用一个fully-connected layer来继续量化uiu_iuivjv_jvj之间的关系:

式(6)r~ij=f(h)=σ(Wr⋅h+br)\tilde{r}_{ij} = f(h) = \sigma(W_r \cdot h + b_r)r~ij=f(h)=σ(Wrh+br)

4. Model Optimization

训练数据的形式:ui,vj,rij,P(ui,vj)u_i,v_j,r_{ij},P(u_i,v_j)ui,vj,rij,P(ui,vj),损失函数如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-beEeG01U-1612686893003)(https://n9.pw/images/2021/02/04/2021-02-04-09.52.22.png)]

BCELoss: Binary Cross Entropy between the observed and estimated ratings

因此,将推荐问题视为二分类问题。

对于每个用户,将他未评价的item进行负采样(数量和他评价过的item相同)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Z2miPMN-1612686893003)(https://n9.pw/images/2021/02/04/2021-02-04-09.56.28.png)]

Conclusion

RKGE:Recurrent Knowledge Graph Embedding for Effective Recommendation 论文相关推荐

  1. RKGE Recurrent Knowledge Graph Embedding for Effective Recommendation 论文

    Paper-RKGE [ Recurrent Knowledge Graph Embedding for Effective Recommendation ] Abstract 关于KG应用于推荐,现 ...

  2. 知识图谱论文阅读(十三)【2020 arXiv】Attentive Knowledge Graph Embedding for Personalized Recommendation

    题目: Attentive Knowledge Graph Embedding for Personalized Recommendation 论文链接: 代码链接: 知识图谱特征学习在推荐系统中的应 ...

  3. SSP: Semantic Space Projection for Knowledge Graph Embedding with Text Descriptions 论文读书笔记

    SSP: Semantic Space Projection for Knowledge Graph Embedding with Text Descriptions 论文读书笔记 1. Motiva ...

  4. SMR: Medical Knowledge Graph Embedding for Safe Medicine Recommendation阅读记录

    1 Introduction 目前已经有一些药品推荐系统开发用于辅助医生去开精准的药物处方. 有一些方法是基于临床医生的经验和临床指南所设计的基于规则的工具.这些工具的开发.设计都会耗费大量的人力.物 ...

  5. 学习Knowledge Graph Embedding Based Question Answering代码笔记

    前言 最近被导师安排学习一下[Knowledge Graph Embedding Based Question Answering] 这篇paper,这篇paper的重点在于运用了Knowledge ...

  6. AutoSF- Searching Scoring Functions for Knowledge Graph Embedding

    AutoSF: Searching Scoring Functions for Knowledge Graph Embedding Abstract 衡量知识图(KG)中三元组合理性的得分函数(SFs ...

  7. 知识图谱-第三方工具:LibKGE(用于Knowledge Graph Embedding)【包含多种模型:TransE、DistMult、ComplEx、ConvE、Transformer等】

    用于Knowledge Graph Embedding的向量表示库有很多,比如: LibKGE GraphVite AmpliGraph OpenKE pykeen pykg2vec LibKGE的主 ...

  8. 《knowledge graph embedding:a survey of approaches and applications》论文阅读

    发表于TKDE 2017. knowledge graph embedding:a survey of approaches and applications abstract 1. introduc ...

  9. Knowledge Graph Embedding: A Survey of Approaches and Applications (2)

    本文是对知识图谱相关文章阅读翻译,<Knowledge Graph Embedding: A Survey of Approaches and Applications>只针对文字部分,图 ...

最新文章

  1. 2016.04.09 使用Powerdesigner进行创建数据库的概念模型并转为物理模型
  2. 演示:GLBP跟踪功能、权值、与不同的负载均衡方式
  3. bert中的sep_基于向量的深层语义相似文本召回?你需要BERT和Faiss
  4. 川崎焊接机器人编程实例_机器人现场编程-川崎机器人示教-综合命令.pptx
  5. 2019年广西大学硕士研究生入学《数据结构与程序设计(817)》考试大纲
  6. My Appointment - Belonging to me, Search by team, Search by group
  7. JAVA锁之可重入锁和递归锁及示例代码
  8. php 二维数组根据键值合并二维数组_3分钟短文 | PHP 根据值移除数组元素,哪个方法最简单?...
  9. 基于神念TGAM的脑波小车(1)
  10. ERROR: invalid byte sequence for encoding UTF8: 0xe5 0xb7 CONTEXT: COPY news_article, line 32973
  11. 设置域用户帐户的登录时间
  12. 相反数-网易校招编程题
  13. 258. Move 0s To The End I -- Laicode
  14. 非均匀采样重建 matlab,对非均匀采样信号进行重采样
  15. Win10有哪些方便快捷的操作小技巧?
  16. 第十三届蓝桥杯省赛 python B组复盘
  17. linux 终端修改字体大小,linux系统终端修改字体的方法
  18. 【基础】python-docx包之----设置段落样式(缩进/对齐/间距)
  19. .NET Core Swagger配置增强版ui
  20. k8s RoCE 部署: k8s-rdma-shared-dev-plugin + macvlan cni

热门文章

  1. 实时渲染学习(二)GPU渲染管线与可编程着色器
  2. 爆赞推荐:看美国程序员是如何在 30 岁实现财务自由的
  3. 华硕主板B560M中win安装linux双系统
  4. Winform DataGridView根据一列排序
  5. 如何删除旧网卡驱动,释放旧网卡的配置
  6. 什么是聚类以及它是如何工作的?
  7. java-php-python-ssm计算机数字逻辑在线学习系统计算机毕业设计
  8. Matlab:线条动画
  9. perl DBI使用详解
  10. 2014华为编程大赛题目:笨笨熊搬家打包篇