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


社交网络|时态图网络:即使很久不发朋友圈,也能知道你的新兴趣
文章插图
编译 | 龚倩
校对 | 青暮
现实世界中,各种性质的交易网络、社会互动和交往等许多问题都是动态的,并且都可以被建模成节点和边随时间变化的图。在这篇文章中,我们介绍了时态图网络,这是由Twitter开发的,用于动态图深度学习的通用框架。本文作者是Twitter的图学习研究负责人Michael Bronstein。
图神经网络(GNN)的研究已经飞速成为今年机器学习领域最热门的话题之一。近期,人们见证了GNN在生物学、化学、社会科学、物理学和许多其他领域中取得了一系列的成功。
到目前为止,GNN模型主要是针对不随时间变化的静态图开发的。然而,真实世界里许多值得关注的图却是动态的,是会随着时间的推移不断发展变化的,其中突出的例子包括社交网络、金融交易和推荐系统等。
在许多情况下,正是这类系统的动态行为向人们传达出重要的信息,而如果只考虑静态图,我们就很难得到这些重要的信息。
在一个动态的Twitter用户网络里,用户们通过发布推特进行交互并相互关注。图中所有的边都有一个时间戳。我们想要基于这样一个动态图来预测未来的交互如何发生,比如用户会喜欢哪种类型的推特,或者他们会选择关注谁。
动态图可以表示为时间事件的有序列表或异步“流”,例如节点和边的添加或删除。像Twitter这样的社交网络就是一个很好的例子:当一个人开始使用Twitter时,图中就会创建一个新的节点。当用户们关注另一个用户时,图中就会创建一个边。当用户更改其配置文件时,图中的节点将会被更新。
事件流被编码器神经网络接收,该神经网络为图的每个节点生成了一个与时间相关的嵌入。嵌入的内容可以被传输到针对特定任务而设计的解码器。
一个示例任务是通过尝试回答以下问题来预测未来的交互:节点i和 j在t时刻出现边的概率是多少?对于推荐系统来说,解决这个问题的能力是至关重要的,例如为社交网络用户推荐关注者,或者为特定用户推荐展示内容。如下图所示:
本图展示了一个TGN编码器接收了一个具有七条可视边(分别带有时间戳 t?到 t?)的动态图,目的是预测在t?时刻(即图中灰色边缘),节点2和节点4之间出现交互的概率。为此,TGN在t?时间点计算节点2和节点4的嵌入,然后将这些嵌入串联起来并传输到解码器(例如MLP),最后解码器输出两节点发生交互的概率。
以上设置中的关键部分是编码器,它可以与任何解码器一起训练。在前面提到的未来交互预测任务中,编码器可以采用自监督的方式进行训练:在每一代训练过程中(即每个epoch),编码器按时间顺序处理事件,并基于之前的事件预测下一个交互。
时态图网络(TGN)是我们在Twitter上与Fabrizio Frasca、Davide Eynard、Ben Chamberlain和Federico Monti等同事共同开发的一个通用编码器架构。
该模型适用于各种各样的以事件流表征的动态图的学习问题。简而言之,TGN编码器根据节点的交互创建节点的压缩表征,并在每次事件发生时更新节点。基于此,TGN主要有以下组件:
内存。内存中存储着所有节点的状态,其作用是作为节点过去交互的压缩表征。它类似于RNN的隐藏状态;不同的是每个节点 i都有一个单独的状态向量s?(t)。
当一个新节点出现时,我们相应地添加一个初始化为零的状态向量。此外,由于每个节点的内存只是一个状态向量(而不是一个参数),所以当模型接收到新的交互时,节点在测试时间也可以进行更新。
消息函数。消息函数是内存更新的主要机制。给定在t时刻节点i和节点 j之间的交互,信息函数计算出两条消息用于更新内存(一条用于节点i,另一条用于节点 j)。这类似于在消息传递图神经网络中计算的消息,这一消息是在交互出现前的 t?时刻节点i和节点 j的内存、交互出现的时间t、边缘特征这三个变量的函数:
内存更新程序。内存更新程序的作用是使用新消息更新内存。此模块通常使用一个RNN网络来实现。
考虑到节点的内存是一个随时间更新的向量,那么最直接的方法是直接将其作为节点嵌入来使用。
社交网络|时态图网络:即使很久不发朋友圈,也能知道你的新兴趣】然而,由于过期问题,这一方法实践起来也有弊端:由于节点只有在参与交互时才会更新其内存,那么节点长时间不活动就会导致其内存过期。
举个例子,假设一个用户好几个月都没有登录Twitter,当他(她)重新登录时,他(她)可能已经在这段时间里发展出了新的兴趣,导致存储着此用户过去活动的内存不再和他(她)现在的兴趣相关。因此,我们需要一种更好的方法来计算嵌入。