SIGIR2018 《HTNE Embedding Temporal Network via Neighborhood Formation》 Reading Notes

论文地址:HTNE Introduction 本文出发点在于捕获动态网络中节点和边的变化来在embedding中保持网络结构,举个简单的例子来说,如Fig. 1所示,是一个共同作者网络图。数字标注的节点是author,方框内是co-authored paper. 可以看到图中每个节点每条边加入网络中的时间是不同的。根据图中的信息,可以分析出例如前期1和2,3合作较紧密,后期转为了6,7。 并且(b)中所示,同一条边可能多次出现,这就比传统的单条边拥有更多语义信息。 另外,最近也有方法对动态网络的embedding做了研究,比如[29][30]的方法。但是他们的目的是将时间线分段为固定时间窗来对动态建模,但是这些方法依然没有考虑动态过程也就是网络随时序动态变化的信息。 因此,本文提出了基于霍克斯过程(Hawkes process)的时序网络表示学习方法,该方法是由序列事件驱动的(也就是序列的变化) 如Fig .1(b)所示 (b)图为节点1的邻域生成序列。霍克斯过程的思路是说历史上发生的事情对未来的概率密度函数有影响,只是随着时间流逝这种影响会逐渐减弱(Decay)。本文提出用霍克斯过程来捕获时间序列(也就是邻域生成序列)的激励效应。 尤其是历史事件对当前事件的影响。 通过把成对的向量映射到基本速率和历史影响,从而把低维向量被输入Hawkes过程。 另外历史邻居当前邻居的影响,不同节点是不同的,所以本文使用attention model来学习历史邻居对当前邻居影响的量化表示。 值得注意的是,本文目标是优化邻域生成序列的极大似然估计即条件强度函数(conditional intensity function)来邻域生成序列的到达率,而不是条件概率函数 Model Definition 本文通过跟踪节点邻域的形成来捕获网络的形成过程。 Definition 1 : 时序网络 $G=(V,E,A)$, $A$ 是事件集, 边$(x,y) \in E$ 被表示为按时间顺序的时间序列,例如, $\mathbf{a}_{x,y}={a_1\to{a_2}\to{…}}\subset\mathcal{A}$, $a_i$ 表示时间$t_i$时刻的一个事件。 因此,网络中节点的相邻邻居可以根据与邻居的交互事件的时序被组织为序列,表示邻域形成过程。 Definition 2 : 对于给定节点$x$,邻域表示为$N(x)={y_i|i=1,2…}$.$x$的目标邻居到达事件可以表示为${x:(y_1,t_1)\to(y_2,t_2)\to…\to(y_n,t_n)}$,即邻域形成序列。每个元组表示在时间戳$t_i$时,$x$与$y_i$建立边。 Hawkes Process 点过程(Point Process)通过假设t时刻前的历史事件可以影响当前事件的发生,来对离散序列事件建模。 对于一个给定的节点$x \in V$, 在$x$的邻域生成序列中,到达目标邻居$y$的条件强度函数(或者可以说是$x$与$y$有边的可能性强度)可以表示为: $$ \tilde{\lambda}_{y|x}(t)=\mu_{x,y}+\sum_{t_h<t}{\alpha_{h,y}\kappa(t-t_{h})}$$ 其中,$\mu_{x,y}$表示构建一条连接节点$x$和$y$的基本率(base rate),$h$是t时刻前的历史目标节点,$\alpha_{h,y}$表示一个$t_h$时刻的历史目标节点$h$(该节点是$x$的邻居)对当前邻居$y$的影响强度。$\sum_{t_h<t}$表示遍历t时刻前$x$的所有邻居。$\kappa(t-t_{h})$表示随时间的衰减,可以表示成指数函数: $$\kappa(t-t_h)=\exp(-\delta_s(t-t_h))$$ 其中,减少率 $\delta$是一个源依赖参数,对于每一个源节点(每个序列的根),历史邻居对当前邻居形成的影响强度是不同的。具体来说,如果$\kappa$越大,说明$t_h$时刻的邻居对当前邻居的影响越大,即 $-\delta_s(t-t_h)$越大, $\delta_s(t-t_h)$越小,因为$t$是当前时刻的邻居,所以当$t_h$越接近当前邻居时刻时,$\kappa$越大,这就说明了里当前时刻之前越近的邻居,对当前时刻邻居的影响越大。 综上所述,$\kappa$的具体意义是随时间衰减的影响,其中$\delta_s$参数表示对于不同的源节点,影响是不同的。 如果$\tilde{\lambda}_{y|x}(t)$ 越大,说明x和y有边的可能性也越大。 直观的来看,基本率(base rate)$\mu_{x,y}$揭示了节点x和节点y之间的连接可能性。为了简洁,本文使用了**负平方欧式距离(negative squared Euclidean)**来反映表示向量间的相似度: $\mu_{x,y}=f(\mathbf{e}_x,\mathbf{e}_y)=-||\mathbf{e}_x-\mathbf{e}_y||^2$。同样的,在计算历史邻居$h$对当前邻居$y$的影响时,也采用这个方法,即: $\alpha_{h,y}=f(\mathbf{e}_h,\mathbf{e}_y)=-||\mathbf{e}_h-\mathbf{e}_y||^2$。 因为条件强度函数必须为正,所以使用如下公式: $\lambda_{y|x}(t)=\exp(\tilde\lambda_{y|x}(t))$。$exp()$对原函数进行了归一化,所以问题就转化为了given $x$, maximize likelihood: $p(y|x)$. 这就与传统的NE方法差不多了。。。 ...

February 17, 2019 · 1 min · JhuoW

CIKM2018 《Enhanced Network Embeddings via Exploiting Edge Labels》 Reading Notes

论文地址: Enhanced Network Embeddings via Exploiting Edge Labels Introduction 这是DeepWalk团队的一篇论文,目的是捕获网络中的边信息。传统的NE方法通常把节点简单关系当做(0,1)二值,然而边中所包含的丰富的语义信息。本文尝试做Network Embedding的同时保留网络结构和节点关系信息。举个例子来说,真实社交网络中,一个用户可能和他的同事,家人有关系,但是已有的NE方法不能同事捕获好友关系(有边连接),以及边的类型。 具体来说,本分的方法分为无监督部分和监督部分。其中无监督部分预测节点邻域, 监督部分预测边标签。所以本文模型是个半监督NE模型。 Problem Definition 假定Network Graph $G=(V,E)$是无向图。$L=(l_1,l_2,…,l_{|V|})$是边的类型集。一个含有边类型的Graph可以被重新定义为$G=(V,E_L,E_U,Y_L)$,其中$E_L$是由label的边集,$E_U$是没有label的边集,$E_L \cup E_U =E$。$Y_L$表示$E_L$中边的关系类型集合。论文中假定一条边可以有多重关系,所以对于边$E_i$的label集$Y_L(i) \in Y_L$, $Y_L(i)$可能包含很多类型 所以$Y_L(i) \subseteq L$。目的还是一样,学习一个映射函数$\Phi \to \mathbb{R}^{|V| \times d}$, 其中$d \ll |V|$。 Method 首先定义损失函数: $$\mathcal{L}=(1-\lambda)\mathcal{L}_s+\lambda\mathcal{L}_r$$ 其中$\mathcal{L}_s$表示预测节点邻域的损失。$\mathcal{L}_r$表示预测边label的损失。$\lambda$是两种损失的权重。 Structural Loss 第一部分是最小化无监督网络结构损失,对于一个给定的节点$v$, 要最大化这个节点和它邻域可能性。其中,节点的邻域不一定要一定和该节点有边相连。文章先给出了结构损失的目标函数: $$\mathcal{L}_s=-\sum_{u \in C(v)} \log Pr(u|v)$$ 这个函数其实就是给定$v$,最大化$v$的邻域的极大似然。其中$Pr(u|v)$是一个softmax函数: $$Pr(u|v)=\frac{\exp(\Phi(u) \cdot \Phi’(v))}{\sum_{u’ \in V} \exp(\Phi(u’) \cdot \Phi’(v))}$$ 这其实和DeepWalk一样,一个节点$v$有两个表示向量,$\Phi(v)$和$\Phi’(v)$分别表示该节点作为中心节点和上下文节点的表示。由于计算复杂度较高,所以采用负采样的策略。 剩下的问题就是如何构建节点$v$的邻域$C(v)$。一种直接的方式就是从邻接矩阵中选取他的邻居。然后由于现实网络的稀疏性,一个节点只有很少的邻居。为了缓解网络稀疏性的问题, 本文采取了类似于DeepWalk的randomwalk策略。 最终可以得到节点$v$的邻域: $$C(v)={v_{i-w},…,v_{i-1}} \cup {v_{i+1},…,v_{i+w}}$$ Relational Loss 由于label是为了预测边的,所以需要把每条边表示出来,所以对于边$e=(u,v) \in E$,可以用一下方法来表示这条边: $$\Phi(e)=g(\Phi(u),\Phi(v))$$ 其中,$g$是一个映射函数用来把两个节点的表示向量转化为他们之间边的表示向量,本文使用了简单的连接操作,即把两个向量直接拼接: $$\Phi(e)=\Phi(u) \oplus \Phi(v)$$ 这样我们就获得了edge embedding。直接将它输入前馈神经网络,前馈神经网络第$k$层的定义为: $$h^{(k)}=f(W^{(k)}h^{(k-1)}+b^{(k)})$$ 其中 $h^{(0)}=\Phi(e)$,$f$是除最后一层外采用relu激活函数,最后一层采用sigmoid函数激活,最后一层输出为$\hat{y_i}$。最后最小化二元交叉熵损失函数: ...

January 22, 2019 · 1 min · JhuoW

ICLR2018 《Graph Attention Networks》 Reading Notes

论文地址:GAT Introduction 本文介绍了一种新型的神经网络架构用来处理图结构。即__Graph Attention Networks__(GATs)。该方法利用masked self-attentional layer,即通过网络层的堆叠,可以获取网络中每个节点的领域特征,同时为领域中的不同节点指定不同的权重。这样做的好处是可以不需要各种高成本的矩阵运算也不依赖于的图结构信息。通过这种方式,GAT可以解决基于谱的图神经网络存在的问题,同时,GAT可以使用用归纳(inductive)和直推(transductive)问题。 归纳学习:先从训练样本中学习到一定的模式,然后利用其对测试样本进行预测(即首先从特殊到一般,然后再从一般到特殊),这类模型如常见的贝叶斯模型。 直推学习:先观察特定的训练样本,然后对特定的测试样本做出预测(从特殊到特殊),这类模型如k近邻、SVM等。 Architecture 图$G$中有$N$个节点,他们的特征向量为:$\textbf{h}={\vec{h_1},\vec{h_2},…,\vec{h_N}}$,其中,$\vec{h_i} \in \mathbb{R}^F$,$F$是每个节点特征数。我们的目的是输出一个新的节点特征向量集$\textbf{h’}={\vec{h_1’},\vec{h_2’},…,\vec{h_N’}}$,其中$\vec{h_i’} \in \mathbb{R}^{F’}$。 本质就是修改特征向量的维度(Network embedding) 为了获得足够的表达能力以将输入特征变换为更高级别的特征,需要至少一个可学习的线性变换。因此,以任意节点$i$和$j$为例,分别对节点$i$和节点$j$的特征向量做线性变换$W \in \mathbb{R}^{F \times F’}$,这样 就将$\vec{h_i}$和$\vec{h_j}$从$F$维的向量转化为$F’$维的向量: $$ e_{ij} = a(W\vec{h_i},W\vec{h_j}) $$ 上式中,分别对$\vec{h_i}$和$\vec{h_j}$做线性变换,然后使用self-attention为图中的每一个节点分配注意力(权重)。上式中,注意力机制$a$是一个$\mathbb{R}^{F’} \times \mathbb{R}^{F’} \to \mathbb{R}$的映射。最终得到的$e_{ij}$是节点$j$对节点$i$的影响力系数(一个实数)。 但是,上面的方法考虑其他节点对$i$的影响时,将图中的所有节点都纳入了考虑范围,这样就丢失了图的结构信息。因此,本文引入masked attention机制,即计算影响力系数$e_{ij}$时, 仅考虑节点$i$的一部分邻居节点 $j \in \mathcal{N}_i$($i$也属于$\mathcal{N}_i$)。使用softmax将节点$i$部分邻居的注意力系数分配到(0,1)上: $$ \alpha_{ij} = \mathrm{softmax}_j(e_{ij}) = \frac{\exp(e_{ij})}{\sum_{k \in \mathcal{N}_i}\exp(e_{ik})} $$ 在本文中,$a$是一个单层前馈神经网络,参数是一个权重向量$\vec{\text{a}} \in \mathbb{R}^{2F’}$,然后使用负半轴斜率为0.2的LeakyReLU作为非线性激活函数: $$ \alpha_{ij} = \frac{\exp(\mathrm{LeakyReLU}(\vec{\text{a}}^T[W\vec{h_i}||W\vec{h_j}]))}{\sum_{k\in \mathcal{N}_i} \exp(\mathrm{LeakyReLU}(\vec{\text{a}}^T[W\vec{h_i}||W\vec{h_k}]))} $$ 其中$||$表示向量的连接操作。上述过程可以用下图表示: 这样,我们就可以获得节点$j$对节点$i$的注意力系数$\alpha_{ij}$,那么,节点$i$最终的输出特征$\vec{h_i’}$就是对$\mathcal{N}_i$中所有节点的加权(加注意力)求和: $$ \vec{h_i’} = \sigma (\sum_{j \in \mathcal{N}_i}\alpha_{ij} W\vec{h_j}) $$ ...

September 14, 2018 · 1 min · JhuoW