当前位置: 首页 > 科技观察

DeepLearningonDynamicGraphs-TimeGraphNetworkModeling

时间:2023-03-15 17:06:07 科技观察

ContentorganizedfromNetwork  涉及的很多交易网络和各种性质的社会联系,以及与现实世界问题相关的问题都是动态的,可以构建模块是图节点和边随时间变化的结构。在这篇文章中,我们描述了时序图网络,这是一种动态图深度学习建模的通用框架。图神经网络(GraphNeuralNetwork,GNN)相关研究逐年激增,成为今年机器学习研究的热点之一。GNN最近在生物学、化学、社会科学、物理学等问题上取得了一系列成功。到目前为止,GNN模型主要建模和处理不随时间变化的静态网络。然而,许多现实世界的图网络是动态的并且会随着时间而变化,典型的例子是社交网络、金融交易和推荐系统。在许多情况下,正是这种系统的动态行为传递了重要信息,如果只考虑静态图片,这些信息可能会丢失。一个动态的Twitter用户网络,他们通过推文联系并相互关注。所有边缘都带有时间戳。给定这样一个动态图,我们希望预测未来的连接边,例如用户会喜欢哪些推文或他们会关注谁。  动态图可以表示为有序列表或定时事件的异步“流”,例如添加或删除节点和边[1]。像Twitter这样的社交网络就是一个典型的例子:当一个人加入该平台时,就会创建一个新节点。当他们关注另一个用户时,会创建一个新的关注链接。当他们更改配置文件时,节点将被更新。  此事件流由编码器神经网络编码,该神经网络为图中的每个节点生成时间相关的嵌入。然后可以将嵌入的内容输入到为特定任务设计的解码器中。例如,可以通过尝试回答以下问题来预测未来的边缘效应:在时间t节点i和j之间存在边缘的概率是多少?回答这个问题的能力对于推荐系统来说至关重要,例如,向社交网络用户推荐什么或预测该用户喜欢关注什么。下图说明了这种情况:  一个TGN编码器的示例,它具有七个可见边的动态图(时间戳从t?到t?),目标是在时间t?(灰色边)预测节点未来2和4之间存在连接关系的概率。为此,TGN计算节点2和4在时间t1的嵌入表示。然后将这些嵌入连接起来并送入解码器(例如MLP),解码器输出连接边存在的概率。  上述场景中的关键部分是编码器,它可以与任何解码器同时训练。在上述连接边缘预测任务中,它可以以自我监督的方式进行训练:在每个时期,编码器按时间顺序处理事件,并根据先前的事件预测下一个连接边缘[2]。  时间图网络(TGN)是我们在Twitter与同事FabrizioFrasca、DavideEynard、BenChamberlain和FedericoMonti[3]共同开发的通用编码器架构。该模型可以应用于表示为事件流的动态图上的各种学习问题。简而言之,TGN编码器根据节点的连接边创建节点的压缩表示,并在每次事件发生时更新它们的表示。为此,TGN有以下主要组成部分:  记忆单元。内存存储所有节点的状态,充当节点过去连接边的压缩表示。类似于RNN的隐藏状态。然而,我们用一个独立的状态向量si(t)表示每个节点i。当一个新节点出现时,我们添加一个初始化为零的新状态向量。而且,由于每个节点的记忆只是一个状态向量(而不是一个参数),当模型吸收新的连接边时,它也可以在测试时更新。  消息功能:更新内存的主要机制。给定在时间t连接节点i和j的边,消息函数计算两条消息(一条用于i,一条用于j)以更新内存。这类似于在消息传递图神经网络[4]中计算的消息。消息是节点i和j的内存的函数,给定连接边之前的时间t?,连接边时间t和边特征[5]:内存更新组件:用于使用新消息更新内存。该模块通常作为RNN实现。鉴于节点的记忆是一个随时间更新的向量,最直接的方法是直接将其用作节点嵌入。然而,在实践中,由于过时(由于更新时间不一致导致的状态漂移)问题,这是不合适的:鉴于内存仅在节点参与连接的边时更新,节点长时间不活动会导致其内存变为陈旧。例如,考虑一个离开Twitter几个月的用户。当用户返回时,他们可能同时产生了新的兴趣,因此对他们过去活动的记忆不再重要。因此,我们需要一种更好的方法来计算嵌入。  嵌入。一种解决方案是查看其节点邻居。为了解决陈旧问题,嵌入模块通过对节点的时空邻居执行图形聚合来计算节点的时间嵌入。即使一个节点已经有一段时间不活动了,它的一些邻居也可能是活动的,并且通过聚合它们的内存,TGN可以计算这个节点的最新嵌入。在我们的示例中,即使用户没有使用Twitter,他们的朋友也会保持活跃,因此当他们返回时,朋友最近的活动可能比用户自己的历史更相关。图嵌入模块通过对其时间邻域执行聚合来计算目标节点的嵌入。另外,在上图中,在某个时间t大于计算节点1的嵌入时间节点t?、t?和t?但小于t?时,时间邻域将仅包括时间t之前发生的边。所以节点5的边不参与计算,因为以后会发生。相反,嵌入模块聚合了邻居2、3和4的特征(v)和记忆(s)以及边缘上的特征来计算节点1的表示。实验是图形注意力,它能够学习哪个邻居是最重要的是基于邻居的记忆、特征和互动时间。  下图总结了TGNonabatchtrainingdata的整体计算过程:ComputationperformedbyTGNonabatchtrainingdata。一方面,嵌入是由嵌入模块使用时间图和节点的内存(1)生成的。然后使用嵌入来预测批量交互和计算损失(2,3)。另一方面,这些相同的连接边也用于更新Memory(4,5)。  看到上图,你可能想知道如何训练内存相关模块(消息函数函数、消息聚合器和内存更新组件),因为它们似乎不直接影响损失函数,因此没有梯度更新.为了让这些模块影响损失函数,我们需要在预测批量连接边之前更新内存。然而,这将导致泄漏,因为内存已经包含了我们想要预测的信息。我们提出的解决这个问题的策略是用以前的消息更新内存批次,然后预测连接边。下图是训练Memory相关模块所??必需的TGN的操作流程:TGNoperationflowrequiredtotrainthemodulesrelatedtoMemory。引入了一个新组件,原始消息存储,它存储计算消息(我们称之为原始消息)以处理模型过去处理过的连接边所需的信息。这允许模型将连接边带来的内存更新推迟到后面的一批数据。首先,使用根据存储在前一批数据(1和2)中的原始消息计算出的消息更新内存。然后可以使用刚刚更新的内存(灰色连接边)计算嵌入(3)。这样内存相关模块的计算会直接影响到损失函数(4,5),它们会得到一个梯度。最后,此批处理连接边缘的原始消息存储在原始消息存储(6)中以供将来批处理数据使用。  在对各种动态图进行广泛的实验验证后,TGN在准确性和速度方面明显优于链接预测和动态节点分类任务的竞争方法[6]。维基百科就是这样一种动态图,其中用户和页面是节点,连接边代表用户编辑页面。编辑文本的编码用作连接边函数。在这种情况下,任务是预测用户将在给定时间编辑哪个页面。我们将TGN的不同变体与基线方法进行了比较:将维基百科数据集上TGN的各种配置和现有方法(TGAT和Jodie)与维基百科数据集上未来在预测准确性和时间方面的表现进行比较连接边缘进行预测。我们希望有更多的论文严格报告这两个重要标准。  这项拆分研究证明了不同TGN模块的重要性,并使我们能够得出一些一般性结论。首先,内存很重要:内存不足会导致性能大幅下降[7]。其次,嵌入模块的使用(与直接输出内存状态相反)很重要。基于图形注意力的嵌入似乎表现最好。第三,拥有内存使得仅使用一个图形注意力层就足够了(这大大减少了计算时间),因为1跳邻居的内存使模型能够间接访问2跳邻居信息。  最后,我们认为动态图学习是一个几乎是原始的研究领域,具有许多重要的应用场景和巨大的潜在影响。我们相信我们的TGN模型是朝着提高动态图的学习能力以巩固和扩展以前的结果迈出的重要一步。随着这一研究领域的发展,更好和更大的基准将变得至关重要。我们现在正致力于创建新的动态图形数据集和任务,作为OpenGraphBenchmark的一部分。