


原文《Predicting DynamicEmbedding Trajectory in Temporal Interaction Networks》发表在The 25th ACM SIGKDDConference on Knowledge Discovery and Data Mining (KDD 19)。
文中提出了一种不同于之前学习方法只在用户(user)-项目(item)交互发生时学习嵌入(embedding),而是使用两个递归神经网络的模型,文章中称其为JODIE(Joint Dynamic User-Item Embedding Model)。并在实际的预测任务上,取得了比目前最优的方法更好的效果。
问题定义
用户(user)-项目(item)交互发生在很多领域,如电子金融,网上课程等。同一用户在一段时间内可能会与许多不同的项目相互发生交互,并且这些关系是在不断变化的。

例如上图中,每条交互伴随着交互发生的时间
和特征
(如一个用户对一个物品的购买数量)。对这些交互的实时预测是推荐系统领域重要的研究课题。
表示学习的方法通过学习用户和项目的低维表示,可以得到用户和项目的特征。然而对现实世界中实时关系的建模,表示学习的方法面临着以下四个问题:
1. 大多数方法只在交互发生时更新节点嵌入,如果没有交互,则嵌入不会更新。
2. 节点有固定属性和时变属性两种特征的,大多数方法只考虑到了其中一种。
3. 通过用户为所有项目打分来预测交互的方法具有线性时间复杂度,处理大规模数据是不切实际的。
4. 大多数现有方法不适用批处理学习(train with batchesof data)。
在本文中,作者改进了现有的表示学习方法,提出了JODIE模型。其目标为通过一段时间[0,T]上一系列用户-项目交互的特征
来建模用户嵌入轨迹(embeddingtrajectories of users)
和项目嵌入轨迹(embedding trajectories of items)
,其中
。
记号说明

模型介绍
本文使用one-hot向量
作为静态嵌入表示用户和项目的固定属性和长时间行为。
作为动态嵌入代表用户和项目的时变属性。随着时间发展,动态嵌入形成时间序列,文章中称之为轨迹(trajectory)
更新操作中,我们将利用用户u和项目i之间在时刻发生的交互S=(u,i,t,f)来产生动态嵌入和。模型整体关系如下所示:

和
通过如下的循环神经网络更新用户和项目的嵌入:
为sigmoid函数,△u(△i) 为 u(i) 距离上一次与其他 i(u) 发生交互的时间,W 为需要学习的参数矩阵。嵌入投影操作(Embeddingprojection operation)
为计算用户 t+△ 在时刻的嵌入投影,我们只需根据用户在 t 时刻的嵌入 u(t) 和下面的公式计算:
其中 w 是由间隔时间△经过线性变化
得到,
为需要学习的参数,* 为对应元素乘积。
模型训练
嵌入预测(Predict next itemembedding)
(常数时间复杂度)。具体计算公式如下,其中 W 和 B 为线性层的参数:
损失函数
本文采用如下的
损失函数来训练模型:

其中[x,y]为向量拼接
训练数据批处理(Training databatching,t-Batch)
实验分析





原文《Temporal Graph Networks for Deep Learning on DynamicGraphs》发表在arXiv, 2020。
文中提出了在一种深度学习随时间变化的动态图的通用框架Temporal Graph Networks (TGNs),显著优于以前的方法,并且计算效率更高。进一步的研究表明,以前的一些动态图模型可以表示为新框架的具体实例。
相关记号
我们将动态图建模为一系列带有时间戳的事件
,其中
表示在
时间 发生的事件,可能有两种类型:
:可能图中新产生了一个节点,或者节点被更新。
: 表示在 t 时刻,图中产生了一条 i 到 j 的边。关于删除一条边的表示在论文附录中也有讨论。 
表示图中的节点集
表示图中的边集
表示图中节点 的邻居
表示节点 的 k 步可达邻居
表示t时刻动态图的快照(snapshot),节点个数记为n(t)框架介绍
本文的主要贡献在于动态图建模的框架Temporal Graph Network(TGN),其主要由以下几个模块组成:
内存(Memory)模块
类似于 RNN 的隐状态,存储图中节点的状态,作为节点过去交互的压缩表示。具体而言,t 时刻图中存在的节点 i 都有一个状态
被记录下来。当新节点被加入时,其状态将被初始化为零向量。
当一个与节点 i 相关的事件发生时,消息函数模块会计算消息,用来更新内存。分为以下两种情况:当事件是一个交互
时,将会计算下面两条消息:


当事件是节点相关事件
时,只有一条消息会被计算:

其中
是内存中节点在时刻以前的状态,
为可学习的函数。在本文中为简便,选取了恒同函数(identity)作为消息函数,即各输入的拼合(contatenation)。

当一个与节点 i 有关的事件发生时,节点的内存状态将会根据产生的消息而被更新:


实际表示为一个batch 中节点产生消息的聚合。在本文中主要考虑了两种聚合函数:最近的消息(most recent message)和均和消息(mean message)。


1. 恒同(Identity):
2. 时间投影(Time project,time):
其中 w 是需要学习的参数, △t 是距离上次发生与节点有关事件的时间间隔,○表示向量对应元素乘积。

其中细节较为复杂,具体实现可以参照论文原文。

具体实现可以参照论文原文。

模型训练



相关工作和实验分析


在动态节点分类(dynamic nodeclassification)任务中,新方法同样超过了其他方法:


-总结-
相 关 链 接





