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来学习实体关系的语义:
- RN能够对不同长度的序列进行建模,因此特别适用于对path进行建模
- RN可以通过embedding layer对实体的语义进行建模
- 通过编码整个path,对实体关系进行建模。因此提供了一种学习实体、实体关系的统一方法。
RKGE
目标:给定user-item交互数据,利用KG中的异构信息,来帮助学习user、item两者的表示,然后将其用于推荐。(抽取得到的表示需要完全捕捉到实体、实体关系的语义信息)
RKGE的大致框架:
- 首先自动挖掘出实体对之间的语义路径
- 采用一批量的循环网络结构对不同的路径进行编码,每条路径由1个循环网络进行建模(自动学习语义表示)
- 通过池化操作确定不同路径的显著性,最终与推荐生成无缝集成
注:user集 U = [ u 1 , u 2 , . . . u m ] U=[u_1,u_2,...u_m] U=[u1,u2,...um],item集合 V = [ v 1 , v 2 , . . . v n ] V=[v_1,v_2,...v_n] V=[v1,v2,...vn]
R R R表示user-item的交互历史, r i j = 1 r_{ij}=1 rij=1 表示 u i u_i ui 倾向于 v j v_j vj
使用 e n t i t y entity entity指代所有能映射到KG中的对象(如user、item、genre、actor),表示为 G G G
- 定义1:
- 实体集 E = [ e 1 , e 2 , . . . e k ] E=[e_1,e_2,...e_k] E=[e1,e2,...ek],实体的关系集 R = [ r 1 , r 2 , . . . r g ] R=[r_1,r_2,...r_g] R=[r1,r2,...rg]
- P ( e i , e j ) = [ p 1 , p 2 , . . . p s ] P(e_i,e_j)=[p_1,p_2,...p_s] P(ei,ej)=[p1,p2,...ps]表示实体 e i e_i ei、 e j e_j ej之间的连接路径
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-16ymhPKa-1612686893001)(https://n9.pw/images/2021/02/07/2021-02-07-10.40.18.png)]
1. Semantic Path Mining
由于KG的庞大体积和复杂性,连接实体对的路径数量庞大,可能包含(不同顺序、不同长度的)不同的实体类型、关系类型。为了提高模型的效率,设计了2种策略来选择路径:
- 只考虑连接 u i u_i ui和所有她评价过的item 的路径 P ( u i , v j ) P(u_i,v_j) P(ui,vj),即{ v j ∣ r i j > 0 v_j|r_{ij}>0 vj∣rij>0}。此外,还包括相关的item-to-item、user-to-user路径,这些路径作为user-to-item路径的子序列。
- 只考虑小于某个长度的路径。因为相对短的路径能较好的对实体关系进行建模,而较长的路径会损失语义信息,进而引入噪声。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aCVIckqy-1612686893003)(https://n9.pw/images/2021/01/27/2021-01-27-10.58.17.png)]
2. Recurrent Network Batch
循环网络能够较好的对顺序模型进行建模,且可以捕捉到实体间的语义、实体对之间的整个路径的语义。设计了一种新颖的网络结构来捕捉所有可能的关系,包括一批循环网络,每个循环网络学习单个路径的语义表示。Batch中的所有循环网络共享相同的参数,以防止过拟合。
假设s条不同长度的路径连接了一个实体对 ( u i , v j ) (u_i,v_j) (ui,vj),如 P ( u i , v j ) = [ p 1 , p 2 , . . . , p s ] P(u_i,v_j)=[p_1,p_2,...,p_s] P(ui,vj)=[p1,p2,...,ps]
注意:s是动态的,因为不同的实体对可能连接了不同的路径条数
对于任意的长度为T的路径 p l p_l pl(形如 p l = e 0 ⟶ r 1 e 1 ⟶ r 2 e 2 . . . ⟶ r T e T p_l=e_0\stackrel{r_1}{\longrightarrow}e_1\stackrel{r_2}{\longrightarrow}e_2...\stackrel{r_T}{\longrightarrow}e_T pl=e0⟶r1e1⟶r2e2...⟶rTeT,其中 e 0 = u i e_0=u_i e0=ui, e T = v j e_T=v_j eT=vj)recurrent network通过学习 每个实体的语义表示、整条路径的单一表示 来对路径进行编码。RKGE通过embedding layer和attention-gated hidden layer来实现上述目标。
2.1 Embedding Layer
对于 p l p_l pl中的每个实体 e t e_t et,embedding layer学习一个分布表示 p l t p_{lt} plt,将 e t e_t et映射到低维度的向量中。向量中的每个元素表示这个实体与一个潜在主题的关联,从而捕捉到这个实体的语义。
这样,路径 p l p_l pl被表示为 p l = [ p l 0 , p l 1 , p l 2 , . . . , p l T ] p_l=[p_{l0},p_{l1},p_{l2},...,p_{lT}] pl=[pl0,pl1,pl2,...,plT],其中的每个元素表示了 p l p_l pl中相应实体的(嵌入)表示。
随后,新的表示将作为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方法,从路径的头实体 e 0 e_0 e0到尾实体 e T e_T eT来对序列进行编码:
在每个 t − 1 t-1 t−1步时,它学习一个隐藏状态 h l ( t − 1 ) h_{l(t-1)} hl(t−1),该隐藏状态对 the subsequence from e 0 e_0 e0 to e t − 1 e_{t-1} et−1 进行编码,然后和 e t e_t et的embedding( p l t p_{lt} plt)一起作为输入,来学习下一个time step的隐藏状态 h l t h_{lt} hlt。最终的状态 h l T h_{lT} hlT编码了整个路径,因此作为整个路径的表示。
为了更好的控制通过路径 p l p_l pl的信息流,采用了attention gate(比普通RNN更有效)。
将step为t时的attention gate定义为 a l t a_{lt} alt,为[0,1]之间的标量。在time为t时的隐藏状态为
式(1): h l t = ( 1 − a l t ) ⋅ h l ( t − 1 ) + a l t ⋅ h l t ′ h_{lt}=(1-a_{lt})\cdot h_{l(t-1)}+a_{lt}\cdot h_{lt}^{'} hlt=(1−alt)⋅hl(t−1)+alt⋅hlt′
Attention gate a l t a_{lt} alt平衡了the input of the previous hidden-state h l ( t − 1 ) h_{l(t-1)} hl(t−1)和当前的候选隐藏态 h l t ′ h_{lt}^{'} hlt′。 h l t ′ h_{lt}^{'} hlt′通过在当前的时间步完全合并输入得到
式(2): h l t ′ = σ ( W ⋅ h l ( t − 1 ) + H ⋅ p l t + b ) h_{lt}^{'}=\sigma(W\cdot h_{l(t-1)}+H\cdot p_{lt}+b) hlt′=σ(W⋅hl(t−1)+H⋅plt+b)
W W W是previous steps的线性变换参数; H H H是current steps的线性变换参数;
最终,使用双向RNN来推断attention gate,最大限度的探索输入序列。根据 the input observation at the current time step和the information from neighboring observation in both directions来对attention gate建模,公式如下:
式(3): a l t = σ ( M T ⋅ ( h l t ⃗ ; h l t ← ) + 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];
; ; ; 表示两个向量之间的级联操作
h l t ⃗ \vec {h_{lt}} hlt、 h l t ← \overleftarrow{h_{lt}} hlt为双向RNN的隐藏表示,作为time step t附近的上下文信息的总结
式(4): h l t → = σ ( W → ⋅ p l t → + H → ⋅ h l ( 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)
h l t ← = σ ( W ← ⋅ p l t ← + H ← ⋅ h l ( 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)
h l t → \overrightarrow{h_{lt}} hlt总结了从开始到step t的路径;
h l t ← \overleftarrow{h_{lt}} hlt总结了总结尾到step t的路径
总结:通过将 u i u_i ui、 v j v_j vj之间的每个合格路径(总数为s)同时合并到相应的attention-gated recurrent network(每个network对一个单独的路径进行编码)中,将生成一个 recurrent network batch。为防止过拟合,batch中的所有attention-gated recurrent networks共享相同的参数。最终得到了所有路径的隐藏表示,即:从 u i u_i ui到 v j v_j vj的实体关系的表示。
通过池化操作来区分这些hidden states在对实体关系建模时的不同重要性。介绍如下
3. Saliency Determination
由于从 u i u_i ui到 v j v_j vj连接了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 ( u i , v j ) P(u_i,v_j) P(ui,vj)中的s条路径来说,他们的last hidden states learnt by the recurrent network batch 是 h 1 T 1 , h 2 T 2 , . . . h s T s h_{1T_1}, h_{2T_2},...h_{sT_s} h1T1,h2T2,...hsTs,其中 T s T_s Ts是 p s p_s ps的最后一步(也是路径 p s p_s ps的长度)基于此,增加了一层max pooling layer来获取所有路径的最显著的特征。
式(5): h [ j ] = m a x h i T i [ j ] h[j] = max h_{iT_i}[j] h[j]=maxhiTi[j],( 1 ≤ i ≤ s 1 \leq i \leq s 1≤i≤s)
h[j]是向量h的第j个维度的值 [ s 条 路 径 中 第 一 维 的 m a x , 第 二 维 , . . . . . ] T [s条路径中第一维的max, 第二维, .....]^T [s条路径中第一维的max,第二维,.....]T
此外,为了避免h被某一个特定的 h i T i h_{iT_i} hiTi所影响(如 P ( u i , v j ) P(u_i,v_j) P(ui,vj)中的某一条路径),需要对所有路径的最后hidden states进行一次average pooling操作。
通过pooling操作,得到了a final hidden state of all the paths between u i u_i ui and v j v_j vj(即 u i u_i ui 和 v j v_j vj之间的关系的路径的汇总)
然后在pooling layer后采用一个fully-connected layer来继续量化 u i u_i ui和 v j v_j vj之间的关系:
式(6): r ~ i j = f ( h ) = σ ( W r ⋅ h + b r ) \tilde{r}_{ij} = f(h) = \sigma(W_r \cdot h + b_r) r~ij=f(h)=σ(Wr⋅h+br)
4. Model Optimization
训练数据的形式: u i , v j , r i j , P ( u i , v j ) 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)]