原文: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,t∈E, r ∈ R r \in \mathcal{R} r∈R。于是可以得到这样一个知识图谱:
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,t∈E,r∈R}
其中 E \mathcal{E} E是实体集, R \mathcal{R} R是边集。
存在用户 u ∈ U u \in \mathcal{U} u∈U, 该用户与项 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)∣u∈U,i∈I}
其中 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′=E∪U,将用户 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,t∈E′,r∈R′}
我们可以对 G P R G^{PR} GPR进行图嵌入,得到实体和关系的嵌入,即 e h , e t ∈ R d e_h, e_t \in \mathbb{R}^d eh,et∈Rd, e r ∈ R k e_r \in \mathbb{R}^k er∈Rk。注意,这里的 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(et−eh)−er∣∣22
其中 ( 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′)∈T∑−lnσ(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表示。