社交网络|时态图网络:即使很久不发朋友圈,也能知道你的新兴趣( 二 )


嵌入。一个解决方案是查找临近的节点。为了解决过期问题,嵌入模块通过在与目标节点时空邻近的节点上执行图聚合来计算目标节点的时间嵌入。
即使一个节点在一段时间内处于非活动状态,但与它临近的一些节点却很可能处于活动状态,因此通过聚合临近节点的内存,TGN可以计算出目标节点的最新嵌入。
在我们所举的例子中,即使用户一段时间不登录Twitter,但他的朋友仍然在Twitter上保持活跃,所以当用户重新登录Twitter时,相比用户自己的历史记录,用户的朋友的最近活动可能与其当前兴趣更相关。
图嵌入模块通过在与目标节点时间临近的节点上执行聚合来计算目标节点的嵌入。在上图中,当在某个时刻t(t大于t?、 t? 和 t?, 但小于 t?)计算节点1的嵌入时,时间临近的节点将只包括在时刻t之前出现的边。因此,节点5的边不参与计算,因为它是在时刻t之后才出现。然而,嵌入模块是通过聚合临近点2、3和4的特征(v)和内存(s)以及边缘上的特征来计算节点1的表征。在我们的实验中,表现最好的图形嵌入模块是图注意力(graph attention),它能够根据临近节点的内存、特征和交互时间来得出哪些是最重要的临近节点。
如下图所示是TGN对一批训练数据进行的总体计算:
图示为TGN对一批训练数据进行的计算。一方面,嵌入模块使用时间图和节点内存(1)生成嵌入,然后使用嵌入来预测批处理交互作用并计算损失(2,3)。另一方面,这些预测出的交互被用来更新内存(4,5)。
看了上面的图 ,你可能很好奇内存相关模块(消息函数、消息聚合器和内存更新器)是如何训练的,因为它们似乎不会直接影响损失值,因此也不会接收到梯度。
为了让这些模块能够影响损失值,我们需要在预测批处理交互之前更新内存。但是,由于内存中已经包含了我们试图预测的信息,因此这会导致内存泄漏。
为了解决这个问题,我们提出的方法是用来自前一个批处理的信息来更新内存,然后再预测交互。下图显示了训练内存相关模块所必需的TGN的操作流程:
图示为训练内存相关模块所需的TGN操作流程。我们引入了一个叫做“原始消息存储”(raw message store)的新组件,用于存储模型已经处理过的交互。raw message store存储了计算消息(我们称之为raw messages)所必须的信息。这样模型就可以将交互时进行的内存更新推迟到后续的批处理。首先,用存储在前一个批处理(1和2)中的原始消息来计算信息,并用此信息来更新内存。然后可以用这一更新过的内存(即图中灰色连线)(3)来计算嵌入。这样就使得内存相关模块的计算能够直接影响损失值(4和5),并且它们会接收到一个梯度。最后,此批处理交互的原始消息被存储在raw message store(6)中,以供后续的批处理使用。
在各种动态图的大量实验研究中,TGN在未来边缘预测和动态节点分类的任务上,无论在精度还是速度上都明显优于竞争方法。
维基百科就是这样一个动态图,其中用户和页面是节点,用户编辑页面就是进行交互。将编辑文本这一交互行为进行编码,就可作为交互特征。在这个例子中,模型的任务就是预测用户在给定时间内会编辑哪个页面。我们用基线方法比较了TGN的不同变式:
图示为基于维基百科数据集,在未来链路预测的预测精度和时间方面,比较不同配置的TGN和已有的方法(如TGAT和Jodie)。我们希望更多的论文能够以严谨的方式报告这两个重要数据。
这项消融研究揭示了不同TGN模块的重要性,并帮助我们得出了一些一般性结论:
内存很重要:内存的缺失会导致模型性能的大幅下降。
使用嵌入模块(而不是直接输出内存状态)非常重要,基于图注意的嵌入性能最好。
由于1-hop临近节点的内存能使模型间接访问1-hop临近节点的信息,因此在有内存的情况下,模型仅仅使用一个图注意层就足够了(这样就极大地减少了计算时间)。
总结。我们认为动态图的学习几乎是一个全新的研究领域,具有许多重要且激动人心的应用价值,对未来的潜在影响也十分深远。我们相信,TGN模型是朝着提高动态图学习能力、巩固和扩展已有的研究成果所迈出的重要一步。随着这一研究领域的发展,更好更大的基准将变得至关重要。
原文链接:
https://towardsdatascience.com/temporal-graph-networks-ab8f327f2efe