本文主要是介绍TGAT:INDUCTIVE REPRESENTATION LEARNING ON TEMPORAL GRAPHS 论文笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
INDUCTIVE REPRESENTATION LEARNING ON TEMPORAL GRAPHS
- 摘要
- 简介
- TGAT框架
- Time Encoding函数
- 时序图注意力层(TGAT layer)
- 如果边上有不同的特征
- 实验
- 实验设置
- Loss Function
摘要
在时序图上进行推断式表示学习十分重要。作者提出节点embedding应该同时包括静态节点特征以及变化的拓扑特征。作者提出的TGAT模型以自注意力机制为基础并根据谐波分析的经典Bochner定理开发了一种新颖的功能时间编码技术。通过堆叠TGAT层可以推测未观测过的或者观察过的节点embedding。
简介
面临挑战
- 为了模拟时间动态,节点嵌入不仅应该是拓扑结构和节点特征的投影,而且应该是连续时间的函数。 因此,除了通常的向量空间外,还应该在某些功能空间中进行时间表示学习。
- 由于时间的出现,造成了对节点聚合以及信息传递的限制。
TGAT框架
Time Encoding函数
Time Encoding函数的目标是给定时间戳T,我们可以通过函数 Φ \Phi Φ得到维度为 d T d_T dT的低维向量。用符号表示为 Φ : T → R d T \Phi : T \rightarrow \mathbb{R}^{d_T} Φ:T→RdT。
时序图注意力层(TGAT layer)
符号说明:
- 节点 i i i的原始节点特征表示为 x i ∈ R d 0 x_i \in \mathbb{R}^{d_0} xi∈Rd0。
- 在 l l l层中节点 i i i在 t t t时刻下的隐藏表示为 h ~ i ( l ) ( t ) \widetilde{h}^{(l)}_i(t) h i(l)(t)。
- 节点 v 0 v_0 v0在 t t t时刻的邻居节点为 N ( v 0 ; t ) = { v 1 , . . . , v N } \mathcal{N}(v_0;t)=\{v_1,...,v_N\} N(v0;t)={v1,...,vN}。
- TGAT的输入为邻居节点的信息 Z = { h ~ 1 ( l − 1 ) ( t ) , . . . , h ~ N ( l − 1 ) ( t ) } Z=\{\widetilde{h}^{(l-1)}_1(t),...,\widetilde{h}^{(l-1)}_N(t)\} Z={h 1(l−1)(t),...,h N(l−1)(t)}以及目标节点信息及其时间戳 ( h ~ 0 ( l − 1 ) ( t 1 ) , t ) (\widetilde{h}^{(l-1)}_0(t_1),t) (h 0(l−1)(t1),t);输出为时间 t t t时生成目标节点 v 0 v_0 v0的时间感知表示 h ~ 0 ( l ) ( t ) \widetilde{h}^{(l)}_0(t) h 0(l)(t)
定义实体-时间特征矩阵:
Z ( t ) = [ h ~ 0 ( l − 1 ) ( t ) ∣ ∣ Φ d T ( 0 ) , h ~ 1 ( l − 1 ) ( t 1 ) ∣ ∣ Φ d T ( t − t 1 ) , . . . , h ~ N ( l − 1 ) ( t N ) ∣ ∣ Φ d T ( t − t N ) ] T Z(t)=[\widetilde{h}^{(l-1)}_0(t)||\Phi_{d_T}(0),\widetilde{h}^{(l-1)}_1(t_1)||\Phi_{d_T}(t-t_1),...,\widetilde{h}^{(l-1)}_N(t_N)||\Phi_{d_T}(t-t_N)]^T Z(t)=[h 0(l−1)(t)∣∣ΦdT(0),h 1(l−1)(t1)∣∣ΦdT(t−t1),...,h N(l−1)(tN)∣∣ΦdT(t−tN)]T‘query’,‘key’,'value’定义如下:
q ( t ) = [ Z ( t ) ] 0 W Q , K ( t ) = [ Z ( t ) ] 1 : N W K , V ( t ) = [ Z ( t ) ] 1 : N W V q(t)=[Z(t)]_0W_Q,\ K(t)=[Z(t)]_{1:N}W_K,\ V(t)=[Z(t)]_{1:N}W_V q(t)=[Z(t)]0WQ, K(t)=[Z(t)]1:NWK, V(t)=[Z(t)]1:NWV其中 W Q , W K , W V ∈ R ( d + d T ) × d h W_Q,W_K,W_V \in \mathbb{R}^{(d+d_T) \times d_h} WQ,WK,WV∈R(d+dT)×dh是权重矩阵用于捕获时间信息和节点特征。
注意力权重定义为:
α i = e x p ( q T K i ) / ( ∑ q e x p ( q T K q ) ) \alpha_i=exp(q^TK_i)/(\sum_q exp (q^TK_q)) αi=exp(qTKi)/(q∑exp(qTKq))代表节点 i i i对节点 v 0 v_0 v0的影响权重。
通过注意力机制得到的隐藏邻居表示:
h ( t ) = A t t n ( q ( t ) , K ( t ) , V ( t ) ) ∈ R d h h(t)=Attn(q(t),K(t),V(t))\in \mathbb{R}^{d_h} h(t)=Attn(q(t),K(t),V(t))∈Rdh为了将邻居表示与目标节点特征相结合,我们采用了GraphSAGE的相同做法:
h ~ 0 ( l ) ( t ) = F F N ( h ( t ) ∣ ∣ x 0 ) ≡ R e L U ( [ h ( t ) ∣ ∣ x 0 ] W 0 ( l ) + b 0 ( l ) ) W 1 ( l ) + b 1 ( l ) \widetilde{h}^{(l)}_0(t)=FFN(h(t)||x_0) \equiv ReLU([h(t)||x_0]W_0^{(l)}+b^{(l)}_0)W^{(l)}_1+b_1^{(l)} h 0(l)(t)=FFN(h(t)∣∣x0)≡ReLU([h(t)∣∣x0]W0(l)+b0(l))W1(l)+b1(l) W 0 ( l ) ∈ R ( d h + d 0 ) × d f , W 1 ( f ) ∈ R d f × d , b 0 ( l ) ∈ R d f , b 1 ( l ) ∈ R d W^{(l)}_0 \in \mathbb{R}^{(d_h+d_0) \times d_f},\ W_1^{(f)} \in \mathbb{R}^{d_f \times d}, \ b_0^{(l)} \in \mathbb{R}^{d_f},\ b_1^{(l)} \in \mathbb{R}^d W0(l)∈R(dh+d0)×df, W1(f)∈Rdf×d, b0(l)∈Rdf, b1(l)∈Rd
其中 h ~ 0 ( l ) ( t ) ∈ R d \widetilde{h}^{(l)}_0(t) \in \mathbb{R}^d h 0(l)(t)∈Rd表示在 t t t时刻的节点embedding。
此外,考虑 k k k个不同的多头注意力机制,即 h ( i ) ≡ A t t n ( i ) ( q ( t ) , K ( t ) , V ( t ) ) , i = 1 , . . . , k h^{(i)} \equiv Attn^{(i)}(q(t),K(t),V(t)), \ i=1,...,k h(i)≡Attn(i)(q(t),K(t),V(t)), i=1,...,k。
h ~ 0 ( l ) ( t ) = F F N ( h ( 1 ) ( t ) ∣ ∣ . . . ∣ ∣ h ( k ) ( t ) ∣ ∣ x 0 ) \widetilde{h}^{(l)}_0(t)=FFN(h^{(1)}(t)||...||h^{(k)}(t)||x_0) h 0(l)(t)=FFN(h(1)(t)∣∣...∣∣h(k)(t)∣∣x0)
如果边上有不同的特征
假设两个节点 v i v_i vi以及 v j v_j vj之间的边特征为 x i , j ( t ) x_{i,j}(t) xi,j(t),则 Z ( t ) Z(t) Z(t)拓展为:
Z ( t ) = [ . . . , h ~ i ( l − 1 ) ( t i ) ∣ ∣ x 0 , i ( t i ) ∣ ∣ Φ d T ( t − t i ) , . . . ] Z(t)=[...,\widetilde{h}^{(l-1)}_i(t_i)||x_{0,i}(t_i)||\Phi_{d_T}(t-t_i),...] Z(t)=[...,h i(l−1)(ti)∣∣x0,i(ti)∣∣ΦdT(t−ti),...]
实验
实验设置
作者选择使用链接预测设置进行训练。 然后,使用获得的捕获了时间信息的节点embedding作为输入,将节点分类视为下游任务。
Transductive task
通过链接预测和节点分类任务对于可见的节点进行训练。
Inductive task
对于不可见的节点进行训练,通过预测不可见节点之间的链接,并且通过推测的embedding信息将节点分类来捕获inductive学习的好坏。
Loss Function
l = ∑ ( v i , v j , t i j ) ∈ ε − l o g ( σ ( − h ~ i l ( t i j ) T h ~ j l ( t i j ) ) ) − Q . E v q ∽ p n ( v ) l o g ( σ ( h ~ i l ( t i j ) T h ~ q l ( t i j ) ) ) l=\sum_{(v_i,v_j,t_{ij})\in \varepsilon} -log(\sigma(-\widetilde{h}^{l}_i(t_{ij})^T\widetilde{h}^{l}_j(t_{ij})))-Q .\mathbb{E}_{v_q \backsim p_n(v)}log(\sigma(\widetilde{h}^{l}_i(t_{ij})^T\widetilde{h}^{l}_q(t_{ij}))) l=(vi,vj,tij)∈ε∑−log(σ(−h il(tij)Th jl(tij)))−Q.Evq∽pn(v)log(σ(h il(tij)Th ql(tij)))其中 Q Q Q是负采样的数量,而 P n ( v ) P_n(v) Pn(v)在节点空间上的负采样分布; σ \sigma σ是sigmoid函数, ∑ ∗ \sum* ∑∗代表由节点 v i v_i vi到 v j v_j vj在时间 t i j t_{ij} tij的可见边。
这篇关于TGAT:INDUCTIVE REPRESENTATION LEARNING ON TEMPORAL GRAPHS 论文笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!