本文是对《Node Embedding over Temporal Graphs》一文的浅显翻译与理解,如有侵权即刻删除。
朋友们,我们在github创建了一个图学习笔记库,总结了相关文章的论文、代码和我个人的中文笔记,能够帮助大家更加便捷地找到对应论文,欢迎star~
Chinese-Reading-Notes-of-Graph-Learning
更多相关文章,请移步:文献阅读总结:网络表示学习/图学习
Title
《Node Embedding over Temporal Graphs》
——IJCAI2029
Author: Uriel Singer
总结
文章提出了tNodeEmbed算法,针对不同的任务设计不同的损失函数进行优化。算法对图上每个时间点的静态快照都生成一次节点嵌入,经过一定比例的转化后,叠加成为节点的最终嵌入。算法是动态的,因为对新到来的节点,都可以与先前嵌入结合生成动态嵌入,而不需要再次更新整张图。
具体来说,算法对图的每个时间点都创建一个静态快照,因而节点在每个时间点都有着对应的向量表示。算法将这些向量结合成为节点的最终嵌入,建立了一个共有的损失函数,在优化嵌入的同时优化所给出的具体预测任务。
对图Gt=(Vt, Et),可视为图G在时间t的静态快照,有(G_t1,…,G_tT),其中有(t1<…<tT)。算法目标是为每个节点v在时间T找到一个特征向量f_T(v),对给出的任何预测任务,该向量都可以最小化损失值。
文章给出了两类任务,即节点分类和链路预测,不同任务对应着不同的损失函数:
对最终损失函数,则有:
算法希望通过图的静态快照学习函数,进而得到特征向量f_T(v),即:
具体函数形式为:
A,B都是在模型中不断更新的权重参数矩阵,没有其他特殊意义,文章重点讨论了R和Q两个矩阵。
Q_t可视为在时间t的静态节点表征矩阵,即存放t时刻的节点嵌入。最小化Qt的损失值可视为针对先前某个时间点的嵌入静态快照的优化,从而使得最终的f_T优化了L_task。对Q的优化,有:
其中N(vt)是节点vt的邻居,在对Q的初始化上,算法利用了node2vec算法(node2vec优化的目标是给定每个顶点条件下,令其近邻顶点出现的概率最大),根据图的静态快照G_t1,…,G_tT,对每个节点都生成了T*d大小的向量,T表示时间步,d表示嵌入大小。
由于上述的node2vec虽然最小化了节点嵌入的距离,但即使两张图是完全相同的,也不能保证嵌入的一致性,因为它们在处理时相互独立,无法保证图节点嵌入的坐标对齐。
因此,算法提出了旋转矩阵R,利用正交普鲁克问题在两矩阵间做最小二乘近似,通过改变Q的方向但不改变大小,保持其手性。旋转矩阵是在乘以一个向量的时候,改变向量的方向但不改变大小的效果,并保持了手性的矩阵。手性指一个物体不能与其镜像相重合,如左手与互成镜像的右手不重合。
最小二乘法通过最小化误差的平方和寻找数据的最佳函数匹配,利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。可理解为,令(y-yi)^2最小时的y就是真值,这基于了如下观点:如果误差是随机的,应该围绕真值上下波动。
前一项保证了两个连续时间步间的节点嵌入表征是相似的,后一项将R规定为旋转矩阵,对R的初始化计算有: