发表:CIKM 18
原文:链接
作者机构:华盛顿州立大学/NEC/PNNL
文章目录
摘要
本文提出了一个基于深度学习框架的网络TGNet,可以实现对异构时序图进行结点排序。本文的创新点在于可以动态评估时序和结构对结点重要程度的影响。
模型概况
对结点排序
-
时序图
G i = ( V i , E i ) — — 图 在 t i 时 刻 的 点 集 V i 和 边 集 E i V = ∪ i ∈ [ 1 , s ] V i — — 时 序 图 G 的 所 有 结 点 G_i=(V_i,E_i)——图在t_i时刻的点集V_i和边集E_i\\ V=∪_{i\in [1,s]}V_i——时序图G的所有结点 Gi=(Vi,Ei)——图在ti时刻的点集Vi和边集EiV=∪i∈[1,s]Vi——时序图G的所有结点 -
排序函数
定 义 训 练 数 据 G ′ = ( G , D ) , D 为 点 对 { < u , v > ∣ u ∈ V , v ∈ V } 定义训练数据G'=(G,D),D为点对\{<u,v>|u\in V,v \in V\} 定义训练数据G′=(G,D),D为点对{<u,v>∣u∈V,v∈V}
其中每一个<u,v>代表u比v排序更高 -
问题描述
给定一个训练数据G’,一个排序函数空间M,和一个测量排序损失的损失函数J。问题是找到一个最优函数g*∈M,使得排序错误J(g*,G)最小。
这个问题和我们常见的在静态图中排序不一样,这里要求模型可以结合both结构信息与时序信息来动态变化。
TGNet模型Overview
TGNet 模型
模型总体结构如下:
TGNet包含4个部分:
-
初始化层,将输入特征向量映射到隐藏空间状态
当v∈Vi,而Gi是v第一次出现的快照时,初始化层会对v的结点特征来一次特征选择:
h v ( i , 0 ) = t a n h ( W i n T ⋅ x v + b i n ) h_v^{(i,0)}=tanh(W^T_{in}·x_v+b_{in}) hv(i,0)=tanh(WinT⋅xv+bin)
其中,xv
是v
的输入特征,tanh(·)
是一个双曲正切函数,可以将输入特征向量映射为一个d_h
维的特征空间,而h
项是v
的初始隐藏状态,W
与b
是模型的参数。最开始,v的隐藏状态在时序网络中编码围绕v的上下文信息。隐藏状态会在时序和结构传输中被多个层更新。
-
结构传输层,将同一快照邻居结点的信息交换
结构邻域是上下文特征的来源,并一定程度上决定结点等级。这个层的目的就是在Gi中为每个点收集邻居信息。TGNet通过迭代执行局部信息传输(L次)来完成这一过程。对于任意
Vi
中的v
和k
,又如下公式:
h v ( i , k + 1 ) = t a n h ( ∑ u ∈ N v p u , v ( i , k ) h u ( i , k ) ) h_v^{(i,k+1)}=tanh(\sum_{u\in N_v}p^{(i,k)}_{u,v}h_u^{(i,k)}) hv(i,k+1)=tanh(u∈Nv∑pu,v(i,k)hu(i,k))
其中tanh
还是双曲正切函数,Nv
是v的邻居结点(包括v自己),p
项描述了从u到v的第k个结构传播中的影响量。在L轮迭代后,每个结点逐渐得到其邻居的上下文信息。在这个过程中,p
项操作过滤掉了一些不必要的邻居信息,然后保留了对结点排序有用的内容。 -
时序传输层,将不同快照之间的信息特征传输
上下文特征也会编码过去事件对结点的影响。直观来讲,更早发生的活动会提供更有用的信息。当v∈Vi且v∈Vi+1时,有如下公式:
h v ( i + 1 , 0 ) = λ v , t i , t i + 1 h v ( i , L ) h_v^{(i+1,0)}=\lambda_{v,t_i,t_{i+1}}h_v^{(i,L)} hv(i+1,0)=λv,ti,ti+1hv(i,L)
这里λ项表示的是点v在时间ti时有多少上下文信息应该被带到ti+1时刻, 而(i+1,0)表示的是Gi图的最初隐藏状态。在这一层,λ项可以看作一个过滤器,只保留对下一时刻有用的信息。 -
输出层,将隐藏空间的信息转化为排序得分
这层对每个独立的结点,基于上下文特征(比如隐藏状态)来生成排序评分。对于一个点v属于V’,当存在
i<s
,v∈Vi
,v不属于Vi+1
,或者v属于最后一个时刻图Vs
,则有:
y v ′ = σ ( w o u t T ⋅ h v ( i , L ) + b o u t ) y_v'=\sigma(w^T_{out}·h_v^{(i,L)}+b_{out}) yv′=σ(woutT⋅hv(i,L)+bout)
这里σ是sigmoid函数,h
项是结点v在结构传输后的隐藏结构,w
和b
是模型参数,控制从隐藏空间映射到结点排序空间。
默认来讲,TGNet会根据点v出现的最后一个快照来打分,因为这样可以获取更多的信息。如果一个点没有任何边,则会根据输入特征向量和时序传输打分。
影响建模
由于结点上下文信息是根据其邻居历史信息得到的,因此量化邻居影响是非常关键的一步。
点中心&边中心
传统方法们会采用“边中心”的影响模型,也就是参数与边相关。尽管如此,上下文不断变化,固定边的假设其实很难成立。而且对于未知的测试数据,选择具有预期泛化能力的边是很难的。
与传统不同,TGNet采用了一个InfNet
,用“点中心”的方法来建模影响。这个InfNet
基于两个理念:
- 两个结点之间的影响取决于它们的上下文
- 结点的上下文决定于它的隐藏状态
(举个栗子,一个主机v在短时间内生成了一些重要的警报(被隐藏状态编码),暗示着在未来如果一个警报和v有关系,应该被重视(获得更高的排序))
对于一个结点v和它的隐藏状态向量hv, InfNet这样定义v的影响:
i
n
f
v
=
I
n
f
N
e
t
(
H
v
,
h
v
,
c
)
inf_v=InfNet(H_v,h_v,c)
infv=InfNet(Hv,hv,c)
其中Hv包含了v的邻居结点信息,而c是编码感兴趣的边的向量。
InfNet有三个主要挑战:
- 它捕获随着结点上下文演变而飘逸的影响,因为从新的结点和边来的影响都会被自然编码
- 由于TGNet中结点上下文建模是纯自动的,所以影响建模也是全自动的,最小化用户干扰
- InfNet中的参数数量和底层图的大小无关,这表明即使图G特别大,我们的网络也不会因此而很耗时,说明我们的网络在处理大图时有优势
TGNet有两个独立的影响网络——结构传输&时序传输层,我们分别介绍一下:
结构影响 —— 我的邻居决定了我是谁
对于点v∈Vi和u∈Nv,给定Hv(包含了v的邻居的隐藏向量),我们通过下式计算v的邻居带来的影响:
p
v
(
i
,
k
)
=
I
n
f
N
e
t
(
H
v
,
h
v
(
i
,
k
)
,
θ
)
=
S
(
z
v
(
i
,
k
)
)
p_v^{(i,k)}=InfNet(H_v,h_v^{(i,k)},\theta)=S(z_v^{(i,k)})
pv(i,k)=InfNet(Hv,hv(i,k),θ)=S(zv(i,k))
其中S是Softmax函数,而z的定义如下:
z
u
,
v
(
i
,
k
)
=
w
s
i
T
⋅
[
h
u
(
i
,
k
)
,
h
v
i
,
k
]
T
+
b
s
i
z_{u,v}^{(i,k)}=w_{si}^T·[h_u^{(i,k)},h_v^{i,k}]^T+b_{si}
zu,v(i,k)=wsiT⋅[hu(i,k),hvi,k]T+bsi
个人理解就是,把v和u的隐藏信息做一个加权,再加一个参数b。由于w和b在所有边之间共享,所以TGNet能够提供具有多个参数的结构影响估计,这些参数和边数无关。
时序影响——我现在的样子影响了我以后的样子
不像结构图是两个相邻结点之间的影响,时序是同一个结点在过去影响了现在。假设Gi是一个正在变化的时序图,v∈Vi且v属于Vi+1,则有
λ
v
,
t
i
,
t
i
+
1
=
I
n
f
N
e
t
(
θ
,
h
v
(
i
,
L
)
,
Δ
t
)
=
σ
(
W
t
i
T
⋅
[
h
v
(
i
,
L
)
,
Δ
t
]
T
+
b
t
i
)
\lambda_{v,t_i,t_{i+1}}=InfNet(\theta,h_v^{(i,L)},\Delta t)\\=\sigma(W^T_{ti}·[h_v^{(i,L)},\Delta t]^T+b_{ti})
λv,ti,ti+1=InfNet(θ,hv(i,L),Δt)=σ(WtiT⋅[hv(i,L),Δt]T+bti)
其中σ是sigmoid函数,Δt是ti+1 - ti,w和b是模型参数。
小优化
为了减少时间复杂度,作者在每次迭代中从v的邻居结点N(v)中随机选一个子集D(v),然后只用D(v)的值来更新v的隐藏状态。
参数学习
给定带标签的数据,我们提出了一个端到端的训练算法,可以共同学习模型参数。
目标函数
J ( Θ , G ′ ) = ∑ < u , v > ∈ D E ( Θ , u , v ) + β 1 R 1 + β 2 R 2 ( Θ , G ) = ( M o d e l E r r o r ) + ( M o d e l C o m p l e x i t y ) + ( G r a p h S m o o t h n e s s ) J(\Theta,G')=\sum_{<u,v>\in D}E(\Theta,u,v) +\beta_1R_1 +\beta_2R_2(\Theta,G)\\=(Model\; Error)+(Model\; Complexity)+(Graph\; Smoothness) J(Θ,G′)=<u,v>∈D∑E(Θ,u,v)+β1R1+β2R2(Θ,G)=(ModelError)+(ModelComplexity)+(GraphSmoothness)
其中Θ
是TGNet中的参数,G'=(G,D)
是训练数据,G是时序图且D是带标签的数据(结点对儿)。
上述中E(·)
通过Θ
来量化损失;R1和R2是两个正则化项,会分别惩罚模型的复杂度并奖励模型的平滑度。;β1
和β2
是元参数,分别调节R1和R2的影响并生成目标值。
损失函数
在结点排序的传统中,给定<u,v>∈D (u<v)
,Θ产生的错误这样被损失函数计算:
E
(
Θ
,
u
,
v
)
=
1
−
(
y
v
′
−
y
u
′
)
E(\Theta,u,v)=1-(y_v'-y_u')
E(Θ,u,v)=1−(yv′−yu′)
其中y’是模型估计出的排序得分,能保证E>=0。
我们引入平方差损失函数来惩罚模型复杂度,R1定义如下:
R
1
(
Θ
)
=
∑
θ
∈
Θ
∣
∣
θ
∣
∣
2
2
R_1(\Theta)=\sum_{\theta\in \Theta}||\theta||^2_2
R1(Θ)=θ∈Θ∑∣∣θ∣∣22
图平滑
实际中,标签数据D可能很稀疏。为了减少标签稀疏带来的过拟合风险,TGNet引入了图平滑限制来惩罚一个结点和它邻居之间的高度差异。举个栗子,用户有兴趣的一个关键警报表明该警报附近的日志可能也会引起用户的兴趣。
基于这个道理,我们把一个快照中的平滑限制定义如下:
R
2
(
Θ
,
G
′
)
=
∑
i
=
1
s
∑
(
u
,
v
)
∈
E
i
∣
∣
h
u
(
i
,
L
)
−
h
v
(
i
,
L
)
∣
∣
2
2
R_2(\Theta,G')=\sum^s_{i=1}\sum_{(u,v)\in E_i}||h_u^{(i,L)}-h_v^{(i,L)}||^2_2
R2(Θ,G′)=i=1∑s(u,v)∈Ei∑∣∣hu(i,L)−hv(i,L)∣∣22
其中h项代表结点u在Gi图中经结构传播后的隐藏状态。也就是说,我们希望结点和它邻居的隐藏状态空间距离最好短一点。
算法
在上述算法中,首先初始化Θ,然后迭代计算现在的Θ产生的错误并更新Θ值(Θ是TGNet的参数)。上述过程一直迭代,直到目标函数收敛。
实验
数据集
我们用实际数据集和生成数据集来评估了以下三个内容:
- TGNet的准确率
- 无法从端到端训练中学到的参数和训练数据大小的影响
- TGNet的效率
真实数据集:SLD(长达30天的16个主机登录信息)、IDS(包含66k快着5.7M结点与11.5M边的入侵检测数据集)、MAG(微软引用数据集)和APC(亚马逊商品信息与支付数据集)
自己生产的数据集:从上述中提取合成一些(大概是说每个类再分别多合成一些数据)
Setup
利用Tensorflow
框架,从均值为0的分布中随机抽取一些参数作为初始化。默认地,我们令dh
(隐藏状态的维数)为5;L
(结构传输的迭代次数)为3。使用Adam算法
来制定学习率,最好的情况是β1=1
,β2=1
,ε=0.0001
。
基线方法
-
TGNet的变体
通过分别去除图平滑限制和去除影响网络+图平滑限制,得到两个变体
TGNet_IN
和TGNet_BA
。由于不用影响网络,BA用的是“边中心”参数,也就是传统方法常用的。 -
SPR
用有监督学习来在静态图里排序结点,同时使用“边中心”的影响模型。为了公平比较,我们把所有快照融合进入一个静态图作为一个输入,然后按照原文作者的指示训练。
-
SVMRank
这是一个用SVM来学习结点排序的方法,排序结果只取决于结点特征。
-
特定领域的一些方法
LRT用于发现值得关注的警报和包;BGCM是一个统计方法,通过找到所有原子探测器的加权组合来发现重要的警报或可疑的数据包。这些方法没有一个考虑到上下文特征和动态图的。
特征-Feature
对于SLD数据集,每个节点特征向量有125维,包括节点类型、警报和日志信息;对于IDS数据集,每个每个节点特征向量9维,包括协议类型/数据包长度等;MAG则有45维,包括研究主题和引用等;APC有15维,包括分类和评论的信息。合成的信息和它们对应的real类一样。
约定
我们的评估方法是NDCG@k,也就是top-k输出排名的DCG值由top-k的DCG真实值归一化的列表。k具体取多少依据数据集需求而定。
实验
实验1-模型准确率
可见,TGNet表现是所有所选网络中最佳的。而且在改变隐藏状态维度dh
和迭代次数L
后,发现这两个值越大模型表现效果越好。由于TGNet有影响网络和平滑限制,在所有对比方法中需要最少的标签来达到最高的准确率。(就是说不用太多数据就可以学得很好)
实验2-模型效率
在GPU上,TGNet分别仅需4.5/54/48/29.6分钟来训练SLD/IDS/MAG/APC,这个速度是SPR的10倍。
经测试,在增加图大小、隐藏状态维度dh
、结构传输次数L
和带标签数据D
后,其实TGNet耗时增加的并不多。说明这个网络效率很是很高的。
实验3-实际情况学习
举个例子,在警报排序中,图10展示了评分最高的警报a1和最低的a2,这是TGNet从上下文特征和时序变化中学出来的。最开始,l1和l2显示h1有潜在错误,而后来很多用户都没有和h1连接上,最后各种渠道都表明h1连接失败,说明需要值得注意,所以把a1警报排最高。这也和专家想的一样。
结论
这篇文章介绍了TGNet每一个可以对时序图进行节点排序的新型网络,还提出了影响网络和图平滑限制来提升网络性能。经过实验,发现在多个数据集上的准确率&效率表现都不错。