论文笔记-AddGraph: Anomaly Detection in Dynamic Graph Using Attention-based
- 一 摘要
动态图的异常检测在许多不同的应用场景(如推荐系统)中变得非常重要,但由于异常的高度灵活性和缺乏足够的标记数据为其研究工作带来了巨大的挑战。异常检测的最好思路是考虑所有可能相关的线索(包括图的结构、内容和时序特征)来学习异常模式,而不是对于部分特征使用启发式规则。本文提出了一个通用的端到端异常边检测框架AddGraph,该框架通过注意力模型构建了一个扩展的时序GCN,可以捕捉动态图中的长期模式和短期模式。为了解决标签数据不足的问题,本文采用选择性负采样和边损失的方法对AddGraph进行半监督训练。本文在大量真实数据集中进行了实验,结果表明,AddGraph在异常检测的性能明显优于当前已经有方法。
- 二 引言
近年来动态图的研究得到快速发展。以电商为例,每日大量用户都会执行不同的操作,比如点击商品,购买商品等,这会给用户-商品关联图增加数百万的关系。账户或是商品的信息更新也会产生大量的内容信息。因此,动态图模型就成了电商中信息查询和商品推荐的基础。
为了获取潜在利益,异常用户会通过一些异常操作来生成动态图中的虚假数据。本文把这些虚假数据称为异常数据。
由于异常的动态性和灵活性,进行有效精确的异常检测通常是非常困难的事情。通常隐式的异常操作通过模拟正常用户的操作无法进行有效区分,甚至显示模式的异常操作也会淹没在大量的数据中。为了说明这里介绍一个推荐系统中的显示异常模式。异常用户通常会控制多个账号来推广相关的商品,那么这些账号与商品之间的关系构建了一个短时间的稠密图。另外,即使是异常账号,其大部分时间的操作均是正常的,这就隐藏了其异常行为,增加了检测难度。类似的异常模式也存在于IP-IP网的攻击中,这就要求检测算法尽可能集成所有的线索,如结构特征、时序特征和内容特征来学习异常模式。
异常检测的另一个挑战是标记数据不足。即使初始的数据均是正常的,但是随着时间推移,异常数据最终会与正常数据混合。如果依靠人工检测,显然是不可行的。即使是可以标记一些异常数据,但是面对海量的数据,这种严重的数据不均衡会导致异常结果非常不理想。
现在的大规模动态图异常检测方法大多依赖于启发式规则。在深入研究了异常特征的基础上,本文提出一种有效的异常特征提取方法。GCN是一种将图的结构特征与内容特征相结合的代表模型。与传统的图论相比,GCN可以自动的传播邻居节点携带的信息,从而可以基于此传播节点的异常概率。GCN不能直接用于异常检测的主要问题在于GCN没有考虑动态图中的节点的时序因素。当前已经有些工作如CAD与Netwalk将图嵌入方法应用到动态图中,但是它们不能捕捉到节点的长期与短期模式,而这是动态图异常检测所需要的。
为了解决现有工作的不足,本提在原有的GCN模型基础上,采用基于上下文注意力模型GRU来捕捉其时间信息,并在异常边检测模型的训练中引入选择性负采样和边际损失。具体来说,本文的主机工作如下:
1 提出了一个半监督的异常边检测框架AddGraph,利用一个基于注意力的GRU扩展了时序GCN,可以将长期行为模式的隐藏状态和包含节点短期模式的的窗口信息结合。
2 受知识图谱嵌入表示技术的启发,在AddGraph的训练中引入了一种选择性的负采样策略和边际损失。这些策略用来处理异常数据标记不充分的情况。
3 在两个真实数据集中进行了实验,证明了AddGraph在不同类型图中检测异常的有效性。
- 三 本文方法
本节,首先形式化动态图异常检测的问题,接着讨论其训练策略。
3.1 问题定义
T表示最大时间戳。图流 的表示为
,其中
表示时间t的整个快照,
与
分别表示顶点集与边集。边
表示动态图中i个节点与第j个节点在时间t有关联,其中关系的权重为w。在无权图中关系的权重均为1。对于加权图,邻接矩阵表示为
。
本文的目标是为了检测边集 中的异常边,对于每条边
,都会生成一个相应的异常概率f(e)。在训练阶段不需要标记异常数据,而是假设集合中初始时间戳(训练阶段之间)的所有边均是正常的。在测试阶段,使用标记数据来测量不同方法。
3.2 AddGraph框架
AddGraph框架如图1所示。AddGraph的核心思想是在训练阶段使用快照中所有可能的特征,包括结构、内容和时序特征,建立一个框架来描述正常的边。然后,该框架可以进一步提炼并用于测量后续快照中的异常边。通常来说,AddGraph通过考虑节点的结构和内容特征,利用GCN来处理边在当前快照中的之前节点状态。然后利用上下文相关的注意力模型将短窗口的节点状态信息归纳为短信息。我们将GCN和短信息的输出输入到GRU中,得到节点在一个新的时间戳上的隐藏状态。利用节点在每个时间戳处的隐藏状态来计算一条现有边和一条负采样边的异常概率,然后反馈到边际损失中。
3.2.1 GCN处理的内容与结构特征
在时间戳t,得到图快照 与其邻接矩阵
与框架在时间t-1时刻输出的隐藏状态矩阵
。首先,利用GCN传播就怪状态矩阵。
其中 表示集成了当前输入和长期隐藏状态的节点的当前状态。GCNL表示L层的GCN。GCNL细节如下图:
表示正则化的邻接矩阵,其推导可以参考GCN的相关推导得出。
3.2.2 基于注意力模型的GRU捕捉长短期状态
为了捕捉短期行为模式,应用上下文注意力模型。本文使用如下公式构建局部窗口的短期状态。
其中, 表示第i个顶点的的隐藏状态,w是捕捉短期模式的窗口大小。
与r是优化上下文注意力模型的参数。,把上面几个公式简化为一个函数:
对于所有的节点,可以写成:
现在得到了 与
,
表示集成了长期行为模式隐藏状态的输入的节点的当前状态。
表示捕捉感兴趣节点短期模式的窗口信息。为了能使AddGraph能编码时序特征,使用GRU来处理
与
:
GRU是LSTM的变种。它相比LSTM来说更简单更有效。GRU可以记录长期特征信息,同时能避免梯度消失和梯度爆炸。正向传播公式如下:
其中 是控制输出的更新门,
是平衡输入与记忆的重置门。现在使用
来训练图的结构、内容和时序特征。
3.2.3 边的异常得分的计算
当前得到了节点在时间t时刻的隐藏状态 。对于任意边
,在
中查找第i个节点与第j个节点之间的嵌入表示。可以根据如下公式计算异常得分:
其中 和
分别表示第i个节点和第j个节点的隐藏状态。
是sigmoid函数。a与b是优化输出层优化的j 参数。
与
是得分函数的超参数。
3.3 可选择的负采样与损失
为了处理异常数据不足的问题,本文试图建立一个模型来描述正常数据模式。假设在训练阶段的数据均是正常的。对于每一个边,生成一个负采样作为异常边。利用伯努利分布来进行采样。
整体的缺失函数如下:
其中, 是超参数,
是L2正则损失来避免过拟合。
本文的算法总结如下图:
-
四 实验分析
4.1 数据集
实验主要在两个公开数据集中进行。数据集的相关信息如表2所示。
4.2 对比方法
AddGraph主机与以下三种方法进行了对比,分别是GOutlier,CM-Sketch和NetWalk。。
4.3 实验结果
详细实验结果大家可以参考原文。