论文Reinforcement Knowledge Graph Reasoning for Explainable Recommendation笔记;可解释的推荐系统

Reinforcement Knowledge Graph Reasoning for Explainable Recommendation

  • abstract

与大多数现有的方法不同,这篇文章致力于实现明确的可解释推荐,在知识图谱中得到明确的理由从而进行推荐。

提出了一个 Policy-Guided Path Reasoning(PGPR)方法

提出了四个主要贡献,在introduction又详细写了下

  • introduction

介绍了下当前方法存在的哪些问题:

1.利用知识图谱嵌入做推荐

1.1存在的问题:纯知识图谱嵌入,缺少发现多跳关系路径的能力 多跳关系路径是个啥??

​ 1.2利用知识图谱嵌入增强协同过滤

​ 存在的问题:是在相应的推荐项被选择后,再进行解释 具体怎么进行相应的解释不太清楚??

2.Another line of research investigates path-based recommendation

​ 2.1 对知识图谱使用元路径进行推理(proposed the notion of meta-paths to reason over KGs.)

​ 存在的问题:无法探索未连接的实体之间的关系

​ 2.2 基于知识图谱路径嵌入的方法进行推荐,需要枚举user-item对之间的所有可能路径(developed a path embedding approach for recommendation over KGs that enumerates all the qualified paths between every user–item pair,and then trained a sequential RNN model from the extracted paths to predict the ranking score for the pairs.)

​ 存在的问题:对于大的知识图谱,没有办法全部探索。

文章对此提出了他们的方法,不只是得到推荐项目的候选集,还有得到每个项目推荐的原因,可解释的证据。把推荐过程看成确定性马尔可夫决策过程。

agent从一个给定的user出发,学习找到用户潜在的感兴趣的项(item)。并且这个path history当作为什莫推荐给用户的解释。

如下图:

在这里插入图片描述

给定用户A,算法找到的item B 和F,推导路径(reasoning path)为{UserA → ItemA → BrandA → Item B} and {UserA → Feature B → Item F}.

实现上边的方法面临的挑战及解决方法:

​ 1.如何正确的衡量推荐给用户的item,需要认真考虑终止情况(terminal conditions)和奖励(reward)

解决方案:搞了一个基于软奖励(soft reward strategy)的多跳评分函数,使用知识图谱中丰富的异构信息。

​ 2.==这个没太看懂是个啥意思,关于这个action可能需要在后边的模型和实验再看下????==action的空间依赖于图的出度,某些点可能会非常大

解决方案:提出了一个user-conditional action pruning strategy来减少action空间

​ 3.对于推荐,需要保证item和path的多样性,避免agent被限制在item的某一个区域

解决方案:design a policy-guided search algorithm to sample reasoning paths for recommendation in the inference phase具体咋做的还不太清楚???

这篇文章的贡献:

​ 1.他们说明了把知识图谱里边丰富的异构信息放到推荐问题,用以解释推理过程的重要意义

​ 2.提出了基于强化学习的方法,通过使用软奖励机制(soft reward strategy),user-conditional action pruning,and the multi-hop scoring strategy

​ 3.设计了基于beam-search的算法来高效的取样推理路径和候选item用于推荐

​ 4.在几个Amazon 电子商务领域上进行测试,得到了好的结果和可解释的推理路径

  • 2. Related work

    2.1 Collaborative Filtering

    2.2 Recommendation with Knowledge Graphs

    2.3 Reinforcement Learning


​ 2.1 Collaborative Filtering

​ 早期的协同过滤使用user-item评分矩阵,使用基于用户或基于物品的协同过滤方法。随着降维方法的发展,潜在因子(latent factor)模型比如矩阵分解被用于推荐。随着深度学习和神经网络的发展,拓展了协同过滤方法,主要分为两种子类:the similarity learning approach , the representation learning approach。但上边的这些方法都很解释推荐结果。

​ 2.2 Recommendation with Knowledge Graphs

​ 之前的工作将知识图谱嵌入以帮助推荐。一个研究方向是将知识图谱嵌入作为丰富的内容信息(rich content information)增强推荐的性能;另一个研究方向尝试使用知识图谱中实体(entity)和路径信息作可解释的决定,但是之前工作存在的问题就是上边introduction提到的:先选择项再形成推荐或无法在大的知识图谱上使用

​ 2.3 Reinforcement Learning

​ 提了一些RL在推荐系统的使用,但没有知识图谱;一些使用了知识图谱,但是在QA工作上。最后说当前的工作没有在较大知识图谱的基础上使用强化学习实现推荐系统的工作。

  • 3. Methodology

    3.1 Problem Formulation

    3.2 Formulation as Markov Decision Process

    3.3 Multi-Hop Scoring Function

    3.4 Policy-Guided Path Reasoning


​ 3.1 Problem Formulation

​ 给出了一个新的知识图谱的定义 G R G_R GR,包含一个子集合’USER’ entities U U U和一个子集合’Item’ entities I I I,满足集合 U , I U,I U,I都属于实体集,并且 U ∩ I = ∅ U\cap I=\varnothing UI=.两种实体之间的连接关系使用 r u i r_{ui} rui

表示。

​ 定义一个K跳路径: p k ( e 0 , e k ) = e 0 ↔ r 1 e 1 ↔ r 2 . . . ↔ r k e k p_k(e_0,e_k)={e_0\stackrel{r_1}{\leftrightarrow}e_1 \stackrel{r_2}{\leftrightarrow}...\stackrel{r_k}{\leftrightarrow}e_k} pk(e0,ek)=e0r1e1r2...rkek,其中 e i − 1 ↔ r i e i e_{i-1}\stackrel{r_i}{\leftrightarrow}e_i ei1riei表示 ( e i − 1 , r i , e i ) ∈ G R (e_{i-1},r_i,e_i)\in G_R (ei1,ri,ei)GR或者 ( e i , r i , e i − 1 ) ∈ G R (e_{i},r_i,e_{i-1})\in G_R (ei,ri,ei1)GR

​ 定义一个KGRE-Rec问题:给定一个知识图谱 G R G_R GR,有 u ∈ U u\in U uU,整数 K K K。目的是找到一个推荐的项目集 { i n } n ∈ [ N ] ⫅ I \{i_n\}_{n\in [N]}\subseteqq I {in}n[N]I,其中每一个( u , i n u,i_n u,in)都对应于一个推理路径 p k ( u , i n ) ( 2 ≤ k ≤ K ) p_k(u,i_n) (2\leq k \leq K) pk(u,in)(2kK)

为了同时得到推荐的item和推理路径,提出Policy-Guided Path Reasoning method(PGPR)方法。有如下流程图:

在这里插入图片描述

训练一个RL agent学习从一个user开始,在知识图谱环境中,查找‘好’的item;然后agent为每个用户抽取推荐项目的推理路径作为推荐项目的解释。

上边的图没太看懂

​ 3.2 Formulation as Markov Decision Process

​ 第一个操作是对于知识图谱 G R G_R GR添加双向边和自环

​ **State:**对于时刻t的状态 s t = ( u , e t , h t ) s_t=(u,e_t,h_t ) st=uet,ht。其中u是用户实体, e t e_t et是时刻tagent到达的实体, h t h_t htis the history prior to step t

​ **Action:**定义action空间为在状态 s t s_t st时,从实体 e t e_t et可能出发的边和到达的实体。

A t = { ( r , e ) ∣ ( e t , r , e ) ∈ G R , e ∉ { e 0 , . . . e t − 1 } } A_t=\{(r,e)|(e_t,r,e)\in G_R,e\notin \{e_0,...e_{t-1}\}\} At={(r,e)(et,r,e)GR,e/{e0,...et1}}

对于图中可能会有的节点出度过大,所以需要去掉一些,以使得action空间不至于过大,采用一个scoring function f ( ( r , e ) ∣ u ) f((r,e)|u) f((r,e)u)来计算用户u和边(r,e)的分数,得到一个新的action空间:

A − t ( u ) = { ( r , e ) ∣ r a n k ( f ( ( r , e ) ∣ u ) ) ≤ α , ( r , e ) ∈ A t } \overset{-}A_t(u)=\{(r,e)|rank(f((r,e)|u))\leq \alpha,(r,e)\in A_t\} At(u)={(r,e)rank(f((r,e)u))α,(r,e)At}

其中 α \alpha α是预先定义的整数

​ **Reward:**用户事先并不知道target item,所以reward不可以是binary的,agent被鼓励找到尽可能多‘’好‘’的路径。‘好’的路径定义为用户有较大的概率会去与其指向的item进行交互。

既然事先并不知道target,那终止状态的定义是个啥????还是说每一步的奖励都是这么定义呀??

对于终止状态 s T = ( u , e T , h T ) s_T=(u,e_T,h_T) sT=(u,eT,hT),基于另一个scoring function f ( u , i ) f(u,i) f(u,i),定义终止奖励 R T R_T RT如下:

在这里插入图片描述

​ **Transition:**对于给定的状态和action,其转换到下一个状态的概率是固定的,为1

​ 只有在初始状态 s 0 = ( u , u , ∅ ) s_0=(u,u,\varnothing) s0=(u,u,)时,为了简单,假定其是均匀分布。

Optimization:

​ 强化学习的目标是学习到一个策略 π \pi π,使得期望奖励最大:

在这里插入图片描述

​ 设计了一个policy network和一个value network。

​ The policy network π(·|s, A − u \overset{-}A_u Au)takes as input the state vector s and binarized vector A − u \overset{-}A_u Au of pruned action space A − ( u ) \overset{-}A(u) A(u) and emits the probability of each action,with zero probability for the action out of A − ( u ) \overset{-}A(u) A(u). The value network V − ( s ) \overset{-}V(s) V(s)maps the state vector s to a real value

在这里插入图片描述

令所有网络的参数 Θ = { W 1 , W 2 , W p , W v } \Theta=\{W_1,W_2,W_p,W_v\} Θ={W1,W2,Wp,Wv}

梯度表示为:
在这里插入图片描述

G为从状态s到终止状态的累计reward,使用discount factor γ \gamma γ

这个公式的求导还不太清楚???

​ 3.3 Multi-Hop Scoring Function

定义了一个k-hop pattern:

在这里插入图片描述

之前定义使得图中存在双向边和自环,所以根据边在路径中的方向不同,分别有forward和backward。增加了一个新的定义1-reverse k-hop pattern:

在这里插入图片描述

定义一个general multi-hop scoring function f ( e 0 , e k ∣ r − k , j ) f(e_0,e_k|\overset{-}r_{k,j}) f(e0,ekrk,j):

在这里插入图片描述

是一个点积运算,e,r是entity e和relation r的d维向量表示, b e k b_{ek} bek是entity e的偏置

Scoring Function for Action Pruning:

​		[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0hZVd333-1586169379542)(C:\Users\17806\AppData\Roaming\Typora\typora-user-images\image-20200406113539058.png)]

​ 感觉是对于一个路径,当碰到其中出现的第一个不属于用户的entity e,将其索引 k e k_e ke作为最小的k,然后使用上式的方法进行计算。

Scoring Function for Reward:

​ 对于 ( u , r u i , i ) ∈ G R (u,r_{ui},i)\in G_R (u,rui,i)GR,scoring function for reward定义为: f ( u , i ) = f ( u , i ∣ r − 1 , 1 ) f(u,i)=f(u,i|\overset{-}r_{1,1}) f(u,i)=f(u,ir1,1)

Learning Scoring Function

这部分没太看懂,看的很迷???????????

3.4 Policy-Guided Path Reasoning

基于知识图谱,通过训练好的policy network解决推荐问题

直接根据policy得到n条路径无法保证多样性。所以采用algorithm 1

如果一个路径是以item结束的,则就将其保存下来.

对于相同的item,可能会有多条路径,采用生成的概率Q_T进行排序,得到每个item的唯一路径。

通过reward在不同的item中排序选择出候选集

  • 4. EXPERIMENTS

    介绍这篇文章实验的benchmark,介绍实验相关的实验设置;以及消融实验(ablation studies)s

    4.1 Data Description

    4.2 Experimental Setup

    4.3 Quantitative Analysis

    4.4 Influence of Action Pruning Strategy

    4.5 Multi-Hop Scoring Function

    4.6 Sampling Size in Path Reasoning

    4.7 History Representation


​ 4.1 Data Description

​ 数据集共分为四个领域:CDs and Vinyl, Clothing, Cell Phones and Beauty

​ 其中每个领域或者说category是由一个包含五种类别的实体(entity)和7种关系(relation)的知识图谱。具体情况见下表:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7flI5DNL-1586169379545)(C:\Users\17806\AppData\Roaming\Typora\typora-user-images\image-20200406163140883.png)]

​ 可以看到MentionDescribed_by的关系个数比较多,文章中说和feature有关,可能会含有较多的没有实际含义的词,然后使用TF-IDF进行消除,最终每个数据集有少于5000个feature word和TF-IDF score$>$0.1

​ 4.2 Experimental Setup

​ 实验baseline和评估方式,以及具体参数的设置:

​ baseline:BPR , BPR-HFT , VBPR , TransRec , DeepCoNN , CKE , JRL

​ 评估方法:**Normalized Discounted Cumulative Gain(NDCG), Recall, HitRatio(HR) and Precision (Prec.). **

​ 其中比较重要的有最大路径长度设置为3,==关于history vector h t h_t ht的具体定义为: e t − 1 , r t e_{t-1},r_t et1,rt向量的组合,所以状态向量 s t = ( u , e t , e t − 1 , r t ) s_t=(u,e_t,e_{t-1},r_t) st=(u,et,et1,rt)

​ 4.3 Quantitative Analysis

​ 运行结果如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mWtQz8MV-1586169379547)(C:\Users\17806\AppData\Roaming\Typora\typora-user-images\image-20200406170638907.png)]

​ 考虑他们的方法发现有效路径的效率:

​ 其中有效路径的定义如下:有效路径的定义:在三跳以内,从user出发,以item结束。一个路径中最多四个实体。

​ 具体的测试结果如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a62yfzvs-1586169379548)(C:\Users\17806\AppData\Roaming\Typora\typora-user-images\image-20200406172717232.png)]

​ 4.4 Influence of Action Pruning Strategy

​ 评估模型在不同大小的action空间下的表现

​ 随着action空间的变大,整体的效果是由一个向下的趋势

​ 具体情况如下:

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ABraUURn-1586169379552)(C:\Users\17806\AppData\Roaming\Typora\typora-user-images\image-20200406173657387.png)]

​ 4.5 Multi-Hop Scoring Function

​ 探索多跳评分函数是否能够促进模型的表现,使用2-hop进行entity和item的训练。

​ 具体的结果表示在上4.4节中的图,有1-hop和2-hop的对比,可以看出提升显著。文章中分析是多跳评分函数在长距离中捕捉到了实体之间的联系。

​ 原文:This improvement mainly stems from the effectiveness of the multi-hop scoring function, which captures interactions between entities with longer distance. For example, if a user purchases an item and the item belongs to a category, the 2-hop scoring function enhances the relevance between User entity and Category entity through the 2-hop pattern {Purchase,Belong_to}.

​ 4.6 Sampling Size in Path Reasoning

​ 探讨在sampling size的大小对于推荐效果的影响(we study how the sampling size for path reasoning influences the recommendation performance of our method. )

​ 因为之前定义最大路径为3,所以对于sampling size有一个定义 ( K 1 , K 2 , K 3 ) (K_1,K_2,K_3) (K1,K2,K3)

​ 具体的含义为sample 最高(具体是概率还是啥不太清楚?????好像是概率????)的 K t K_t Kt个action,在步数t

​ 运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CaInDeDC-1586169379555)(C:\Users\17806\AppData\Roaming\Typora\typora-user-images\image-20200406180813155.png)]

其实对于这个结果我看的很迷,感觉发现不了啥东西

​ 文章中的分析意思大概是说最初的两个action的选择主要是确定一个大的方向:类似于抵达哪种类型的item,在经过两层之后,方向已经确定,policy network趋于收敛,选择一个最优的action得到好的item

​ 4.7 History Representation

​ 评估不同的history计算对模型的影响。

​ no history (0-step)

​ last entity e t − 1 e_{t-1} et1 with relation r t r_t rt (1-step)

​ last two entities e t − 2 , e t − 1 e_{t-2},e_{t-1} et2,et1 , with relations r t − 1 , r t r_{t-1},r_t rt1,rt (2-step)

​ 具体的运行结果如下:

在这里插入图片描述

对于0-step结果差的原因为:没有充足的历史信息提供给agent来学习得到一个好的策略

对于2-step结果差的原因:作者也不是很确定,只是说可能的原因是因为过多的历史信息可能是多余的,甚至可能误导agent。

  • 5. CASE STUDY ON PATH REASONING

    举例说明咋可解释推荐的

  • 6. CONCLUSIONSANDFUTUREWORK

    ​ 可能将他们的方法应用于product search , social recommendation , model time-evolving graphs so as to provide dynamic decision support (对时间演化图进行建模,以提供动态决策支持)

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是一个基于 Tkinter 的简单论文推荐系统的示例代码,可以供您参考: ```python import tkinter as tk from tkinter import scrolledtext # 定义文章列表 articles = [ "Deep learning for image recognition", "Natural language processing with neural networks", "Machine learning for anomaly detection", "Data mining techniques for pattern recognition", "Reinforcement learning in robotics", "Evolutionary algorithms for optimization", "Big data analytics with Hadoop and Spark", "Cloud computing for data storage and processing" ] # 定义推荐函数,根据输入关键词返回匹配文章 def recommend(keyword): matches = [] for article in articles: if keyword.lower() in article.lower(): matches.append(article) return matches # 定义 GUI 界面 class App: def __init__(self, master): self.master = master master.title("论文推荐系统") # 添加标签 self.label = tk.Label(master, text="请输入关键词:") self.label.pack() # 添加输入框和按钮 self.entry = tk.Entry(master) self.entry.pack() self.button = tk.Button(master, text="查找", command=self.search) self.button.pack() # 添加滚动文本框 self.text = scrolledtext.ScrolledText(master, width=50, height=10) self.text.pack() # 查找按钮的回调函数 def search(self): keyword = self.entry.get() matches = recommend(keyword) if matches: self.text.delete('1.0', tk.END) for match in matches: self.text.insert(tk.END, match + "\n") else: self.text.delete('1.0', tk.END) self.text.insert(tk.END, "没有找到匹配的文章") # 启动应用程序 root = tk.Tk() app = App(root) root.mainloop() ``` 该论文推荐系统使用了 Tkinter 的 GUI 组件,包括标签、输入框、按钮和滚动文本框。当用户输入关键词并点击“查找”按钮时,系统会返回所有匹配的文章,并在滚动文本框中显示结果。 注意,该示例代码仅为演示用途,实际情况下您可能需要使用更复杂的算法来实现更准确的推荐

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值