基于知识图谱的个性化推荐

原文:KGAT: Knowledge Graph Attention Network for Recommendation
源码:knowledge_graph_attention_network

假设项与项(这里我们把它称作实体,记为 h h h t t t)之间存在某种关系 r r r,其中 h , t ∈ E h, t \in \mathcal{E} h,tE r ∈ R r \in \mathcal{R} rR。于是可以得到这样一个知识图谱:

G = { ( h , r , t ) ∣ h , t ∈ E , r ∈ R } G=\{(h, r, t) | h, t \in \mathcal{E}, r \in \mathcal{R}\} G={(h,r,t)h,tE,rR}

其中 E \mathcal{E} E是实体集, R \mathcal{R} R是边集。

存在用户 u ∈ U u \in \mathcal{U} uU, 该用户与项 i i i之间存在某种交互(即包括购买行为,点击行为等等),这种交互以及用户和项可以构成图 G ′ G^\prime G

G ′ = { ( u , y u i , i ) ∣ u ∈ U , i ∈ I } G^\prime = \{(u, y_{ui}, i) | u \in \mathcal{U}, i \in \mathcal{I}\} G={(u,yui,i)uU,iI}

其中 U \mathcal{U} U是用户集, I \mathcal{I} I是项集。 y u i = 1 y_{ui} = 1 yui=1表示用户 u u u与项 i i i之间存在交互, y u i = 0 y_{ui} = 0 yui=0表示用户 u u u和项 i i i之间不存在交互。

为了利用知识图谱来完成个性化推荐,我们可以将 G G G G ′ G^\prime G融合。即 E ′ = E ∪ U \mathcal{E}^\prime = \mathcal{E} \cup \mathcal{U} E=EU,将用户 u u u 与项 i i i的交互看作关系 i n t e r a c t interact interact, 则新的关系集为 R ′ = R ∪ { i n t e r a c t } \mathcal{R}^\prime = \mathcal{R} \cup \{interact\} R=R{interact}

我们把融合后的知识图谱叫做推荐知识图谱,记为 G P R G^{PR} GPR,于是:

G P R = { ( h , r , t ) ∣ h , t ∈ E ′ , r ∈ R ′ } G^{PR} = \{(h, r, t) | h, t \in \mathcal{E}^\prime, r \in \mathcal{R}^\prime\} GPR={(h,r,t)h,tE,rR}

我们可以对 G P R G^{PR} GPR进行图嵌入,得到实体和关系的嵌入,即 e h , e t ∈ R d e_h, e_t \in \mathbb{R}^d eh,etRd e r ∈ R k e_r \in \mathbb{R}^k erRk。注意,这里的 e e e表示嵌入(为embedding的首字母,要与实体用entity表示成 e e e相区别)。

于是,用户 u u u和项 i i i之间是否存在某一种关系 r r r,即可形式为判断 ( h , r , t ) (h, r, t) (h,r,t)是positive还是negative的。

我们定义如下函数:
g ( h , r , t ) = ∣ ∣ W r ( e t − e h ) − e r ∣ ∣ 2 2 g(h, r, t) = \left|\left| W_r(e_t - e_h) - e_r \right|\right|_2^2 g(h,r,t)=Wr(eteh)er22

其中 ( h , r , t ) ∈ G P R (h, r, t) \in G^{PR} (h,r,t)GPR,于是我们的目标是最小化 g ( h , r , t ) g(h, r, t) g(h,r,t),即:

m i n ( g , r , t ) min(g, r, t) min(g,r,t)

对于某一个真实存在关系 r r r h , t h, t h,t,我们将随机选择一个 t ′ t^\prime t替换 t t t,即:
( h , r , t ) ← ( h , r , t ′ ) (h, r, t) \leftarrow (h, r, t^\prime) (h,r,t)(h,r,t)

其中, ( h , r , t ′ ) ∉ G P R (h, r, t^\prime) \not\in G^{PR} (h,r,t)GPR
于是得到训练样本集:
G = { ( h , r , t , t ′ ) ∣ ( h , r , t ) ∈ G P R , ( h , r , t ′ ) ∉ G P R } G =\{ (h, r, t, t^\prime) | (h, r, t) \in G^{PR}, (h, r, t^\prime) \not\in G^{PR} \} G={(h,r,t,t)(h,r,t)GPR,(h,r,t)GPR}
显然是要使得 g ( h , r , t ′ ) g(h, r, t^\prime) g(h,r,t)最大。

于是目标函数即为最大化 g ( h , r , t ′ ) − g ( h , r , t ) g(h, r, t^\prime) - g(h, r, t) g(h,r,t)g(h,r,t)
进一步地:
L = ∑ ( h , r , t , t ′ ) ∈ T − ln ⁡ σ ( g ( h , r , t ′ ) − g ( h , r , t ) ) \mathcal{L} = \sum_{(h, r, t, t^\prime) \in \mathcal{T}} -\ln \sigma \left( g(h,r, t^\prime) - g(h, r, t) \right) L=(h,r,t,t)Tlnσ(g(h,r,t)g(h,r,t))

另:
N h \mathcal{N}_h Nh是一个三元组集合,即 N h = { ( h , r , t ) ∣ ( h , r , t ) ∈ G } \mathcal{N}_h = \{(h, r, t) | (h, r, t) \in G \} Nh={(h,r,t)(h,r,t)G}。我们对 t t t的嵌入进行加权平均,以得到 h h h表达每个关系的权重:

π ( h , r , t ) = ( W r e t ) T tanh ⁡ ( W r e h + e r ) \pi (h, r, t) = (W_r e_t)^T \tanh \left( W_re_h + e_r \right) π(h,r,t)=(Wret)Ttanh(Wreh+er)
归一化得到:
π ( h , r , t ) = e x p ( π ( h , r , t ) ) ∑ ( h , r ′ , t ′ ) ∈ N h exp ⁡ ( π ( h , r ′ , t ′ ) ) \pi(h, r, t) = \frac{exp\left( \pi(h, r, t) \right)}{\sum_{(h, r^\prime, t^\prime) \in \mathcal{N}_h}\exp\left( \pi(h, r^\prime, t^\prime) \right)} π(h,r,t)=(h,r,t)Nhexp(π(h,r,t))exp(π(h,r,t))

加权平均后得到:

e N h = ∑ ( h , r , t ) ∈ N h π ( h , r , t ) e t e_{\mathcal{N}_h} = \sum_{(h, r, t) \in \mathcal{N}_h} \pi(h, r, t) e_t eNh=(h,r,t)Nhπ(h,r,t)et

于是, t t t就可以由 e h e_h eh e N h e_{\mathcal{N}_h} eNh表示。

你可能感兴趣的:(基于KG的应用)