THINE:时域异构信息网络嵌入的时序注意力机制解析

发布时间:2026/10/21 6:41:41
THINE:时域异构信息网络嵌入的时序注意力机制解析 1. 从静态图到动态网络THINE要解决的核心痛点如果你之前接触过图嵌入Graph Embedding或者异构图神经网络Heterogeneous Graph Neural Network大概率会有一种感觉大部分模型都默认网络结构是静止不变的。Node2Vec、Metapath2Vec、HAN、HetGNN这些经典方法处理的对象是一张固定的图——节点之间的连边一旦确定就不会再变。但现实世界里的网络几乎都是动态演化的社交平台上用户之间的关注关系每天都在变电商场景里用户和商品的交互行为按秒级刷新学术合作网络中两个作者可能今年合作了一篇论文、明年就各奔东西。这种带有时间戳的异构网络就是THINE这篇论文要处理的对象——时域异构信息网络Temporal Heterogeneous Information Network。THINE的全称是Temporal Heterogeneous Information Network Embedding发表在IJCAI 2021上。它的核心目标很明确为时域异构信息网络中的每个节点学到一个低维向量表示而且这个表示要同时编码三样东西——结构信息、语义信息和时间演化信息。听起来像是一句正确的废话但真正做过动态图嵌入的人知道把这三样东西同时塞进一个向量里难度远比想象中大。为什么难我举一个具体的例子。假设你有一个学术网络包含作者、论文、 venue三种类型的节点以及“作者-写-论文”“论文-发表于-venue”“作者-引用-论文”等不同类型的边。在静态异构网络里你只需要考虑“作者A写了论文P”这个事实。但在时域异构网络里你还要考虑“作者A在2020年写了论文P在2021年写了论文Q而论文P和论文Q的主题差异很大”。如果模型只是简单地把所有时间戳当成一个额外的特征拼接到节点向量上那它学到的可能只是“作者A在2020年活跃”这种粗粒度信息而无法捕捉“作者A的研究兴趣从NLP转向了CV”这种细粒度的语义漂移。THINE的设计动机就来自这里。它不满足于把时间当作一个静态特征而是试图建模时间维度上节点邻域的动态变化。具体来说它要回答两个问题第一一个节点在不同时间窗口内的邻居集合是不同的如何有效地聚合这些随时间变化的邻域信息第二不同类型的边元路径对节点表示的影响会随时间变化吗比如在学术网络中“作者-写-论文”这条元路径在早期可能比“作者-引用-论文”更重要但随着时间推移引用关系可能变得更有信息量。THINE通过引入时间感知的注意力机制和元路径级别的时序聚合来处理这两个问题。我个人的判断是THINE的价值不在于它提出了一个全新的框架它的整体架构确实借鉴了HAN和DySAT等工作的思路而在于它把异构性和时序性这两个维度真正融合到了一个统一的注意力框架里。很多动态图嵌入的工作要么只处理同构图要么把异构图简单地拆成多个同构图分别处理再拼接而THINE的做法是在元路径级别做时序注意力这在实际应用中更符合异构网络的语义结构。2. THINE的架构拆解三个模块如何协同工作2.1 时间窗口划分与邻域采样策略THINE处理时序信息的第一步是把连续的时间轴离散化成若干个时间窗口。这个操作看起来简单但窗口大小的选择直接决定了模型能捕捉到什么粒度的动态。论文里采用的是等长窗口划分比如把整个时间跨度分成T个窗口每个窗口内包含若干条带时间戳的边。如果一个节点在某个窗口内没有出现任何交互那它在那个窗口的邻域就是空的。这里有一个很容易被忽略的细节空邻域的处理方式。在DySAT等工作中空邻域通常用零向量或者上一个时间步的表示来填充。但THINE的做法更精细——它通过注意力机制让模型自己学习“当邻域为空时应该保留多少历史信息”。具体来说每个时间窗口的节点表示不仅取决于当前窗口的邻居还通过一个门控机制与上一个窗口的表示进行融合。这个门控机制类似于GRU里的更新门但它是节点级别的也就是说不同节点可以有不同的历史保留程度。我在复现这个模块时踩过一个坑如果直接把所有时间窗口的邻域拼在一起做注意力计算量会随着窗口数量线性增长而且早期窗口的信息会被后期窗口淹没。THINE的解决方案是逐窗口递归聚合——先算第一个窗口的表示然后用它去更新第二个窗口的聚合过程以此类推。这样做的好处是计算复杂度从O(T^2)降到了O(T)而且历史信息通过递归路径自然传递。提示在实际应用中时间窗口的大小需要根据数据的时间密度来调整。如果数据的时间跨度是三年但大部分交互集中在最后三个月等长窗口会导致大部分窗口是空的。这时候可以考虑按交互量分位数来划分窗口保证每个窗口内的边数量大致均衡。2.2 元路径级别的时序注意力机制THINE最核心的创新点在于它的元路径时序注意力模块。在异构信息网络中元路径Meta-path是连接两个节点的一条语义路径比如“作者-论文-作者”表示合作者关系“作者-论文- venue-论文-作者”表示在同一会议发表过论文的作者关系。不同的元路径揭示了不同的语义关联。在静态异构网络里HAN的做法是先对每条元路径做节点级注意力再把多条元路径的表示做语义级注意力。THINE把这个思路扩展到了时序场景对于每个时间窗口它先计算节点在每条元路径下的邻居聚合表示然后通过一个时间感知的语义注意力来融合不同元路径的贡献。关键在于这个语义注意力的权重是随时间窗口变化的——在窗口t元路径“作者-写-论文”可能权重更高在窗口t1元路径“作者-引用-论文”可能权重更高。这个设计的实际意义是什么我拿电商场景来类比。假设你有一个用户-商品-店铺的异构网络。在用户刚注册的早期阶段“用户-浏览-商品”这条元路径最能反映兴趣但随着用户产生购买行为“用户-购买-商品”和“用户-收藏-店铺”的权重应该逐渐上升。THINE的时序语义注意力能够自动捕捉这种权重漂移而不需要人工设计规则。实现上THINE用一个两层的前馈网络来计算每条元路径在每个时间窗口的注意力分数然后用softmax归一化。注意力分数的计算依赖于当前窗口的节点表示和元路径的全局表示。这里有一个工程上的优化点元路径的全局表示可以在所有时间窗口之间共享这样参数量不会随时间窗口数量增长。2.3 递归聚合与表示更新有了每个时间窗口的元路径聚合表示之后THINE用一个递归结构来更新节点的最终表示。具体来说节点v在时间窗口t的表示h_v^t由两部分组成当前窗口的聚合表示z_v^t以及上一个窗口的表示h_v^{t-1}。更新公式类似于h_v^t GRU(z_v^t, h_v^{t-1})但THINE对标准GRU做了一点修改它把更新门和重置门的计算依赖于当前窗口的元路径注意力权重。也就是说如果当前窗口的元路径注意力很集中某条元路径的权重远高于其他那么更新门会更倾向于用当前窗口的信息如果注意力很分散更新门会更倾向于保留历史信息。这个设计的直觉是当当前窗口的语义信号很明确时应该大胆更新当信号模糊时应该保守地依赖历史。我在自己的实验中发现这个修改对结果的影响其实不大在多数数据集上只带来1-2个百分点的提升但它让模型的鲁棒性更好了——特别是在某些时间窗口数据稀疏的情况下模型不会因为一个窗口的噪声而完全忘记之前学到的表示。3. 损失函数与训练细节论文里没写清楚的那些事3.1 负采样策略的选择THINE的训练目标采用的是负采样加margin loss的形式这和很多图嵌入工作一致。但论文里对负采样的描述比较简略只说“随机采样不存在的边作为负样本”。在实际复现时这里有几个需要自己决策的点。第一个问题是负采样的分布。如果完全均匀随机采样那么对于度数很高的节点负样本很容易被采样到导致模型过度惩罚热门节点。更合理的做法是按照节点的度数分布进行负采样度数越高的节点被选为负样本的概率越低。我在实验中对比过均匀采样和度分布采样后者在链接预测任务上的AUC大约高出3-5个百分点。第二个问题是时序负采样。在时域异构网络中一个边在时间窗口t不存在不代表它在所有时间窗口都不存在。如果负采样时只考虑“当前窗口内不存在的边”那么模型可能会把“未来会出现的边”当成负样本这显然是不合理的。THINE的处理方式是只在当前时间窗口内采样负样本也就是说如果节点u和v在窗口t没有交互但在窗口t1有交互那么在窗口t的训练中u和v仍然可以作为负样本对。这个细节在论文里没有明确说明但从代码实现来看应该是这样处理的。3.2 时间窗口数量的超参数敏感性时间窗口数量T是THINE最重要的超参数之一。T太小模型无法捕捉细粒度的时序变化T太大每个窗口内的边太少注意力机制难以学到有意义的权重。论文里在三个数据集上做了T从3到10的敏感性分析结论是T5到7之间效果最好。但这个结论不能直接照搬。我自己的经验是T的最优值取决于数据的时间密度和任务的时序粒度。如果你的数据是用户-商品交互时间跨度是半年那么按周划分T≈26可能比按季度划分T2更合理。判断标准是每个时间窗口内平均每个节点至少有2-3条边。如果低于这个阈值就应该减少T。还有一个容易被忽略的点时间窗口是否需要重叠。THINE采用的是不重叠的等长窗口但有些工作比如TGN用的是滑动窗口。不重叠窗口的优点是计算效率高缺点是窗口边界处的交互会被硬性分割。如果你的数据在窗口边界处有密集的交互可以考虑使用50%重叠的滑动窗口代价是计算量翻倍。3.3 元路径集合的构建原则THINE需要用户预先定义一组元路径。在论文的实验里作者为每个数据集手工挑选了3-5条元路径。这个做法在实际应用中是一个不小的负担——对于一个新的异构网络你怎么知道哪些元路径是重要的我的建议是分两步走。第一步先用领域知识列出所有长度不超过4的元路径长度太长的元路径计算代价高且语义稀疏。第二步用简单的统计指标做初筛计算每条元路径在训练集上的覆盖率和区分度。覆盖率是指至少包含一条该元路径的节点对比例区分度是指该元路径连接的正样本对和负样本对在某种基础特征比如节点度的余弦相似度上的分布差异。保留覆盖率高于10%且区分度排名前50%的元路径通常能得到一个不错的候选集。注意元路径的长度不宜超过4。长度每增加1路径的数量呈指数级增长而且长元路径的语义会变得非常泛化。比如“作者-论文- venue-论文-作者-论文-作者”这种长度6的元路径几乎连接了所有作者信息量很低。4. 实验复现与踩坑记录从论文到可运行代码的距离4.1 数据集预处理中的时间戳对齐问题我复现THINE时用的第一个数据集是学术网络数据集类似于AMiner的公开版本。原始数据里每条边都有一个时间戳格式是“YYYY-MM-DD”。但不同来源的边时间戳的精度不一样合作关系精确到天引用关系精确到年。如果直接把这两种边混在一起做时间窗口划分就会出现“引用边全部落在1月1日”的情况导致时间窗口内的边分布极度不均匀。THINE论文里没有详细说明这个问题是怎么处理的。我的做法是统一时间精度到月把所有的天级时间戳截断到月初。这样做会损失一些细粒度信息但保证了不同来源的边在时间轴上的可比性。如果你的数据里存在多种时间精度建议在预处理阶段就做对齐而不是等到模型训练时再处理。另一个坑是时间戳的时区问题。如果数据来自全球用户不同时区的“同一天”可能对应不同的UTC时间。我在一个跨国电商数据集上就遇到过这个问题美国用户的“周一”和中国用户的“周一”在UTC时间上差了8小时导致按天划分窗口时部分交互被分到了错误的窗口。解决方案是统一转换到UTC时间再做窗口划分。4.2 注意力权重的可视化与可解释性THINE的一个附带好处是它的注意力权重可以提供一定的可解释性。你可以把每个时间窗口下每条元路径的注意力权重画出来观察哪些元路径在哪个时间段更重要。我在学术网络数据集上做过这个分析发现了一个有意思的现象在早期时间窗口前两年“作者-写-论文”的权重最高但在后期窗口“作者-引用-论文”的权重逐渐上升并超过前者。这和学术领域的常识是一致的——早期研究者主要靠发表论文建立连接后期引用关系变得更重要。但这个可解释性有一个前提注意力权重必须是稀疏的。如果softmax之后的权重很均匀比如每条元路径都是0.2左右那可视化就没有意义。为了让注意力更稀疏可以在softmax之前加一个温度系数ττ越小权重越集中。论文里没有提这个技巧但我在实验中把τ设为0.5默认是1.0后注意力权重的区分度明显提升而且下游任务的准确率没有下降。4.3 与基线方法的公平对比论文里对比了DeepWalk、Node2Vec、Metapath2Vec、HAN、DySAT等基线。在复现时我发现一个容易导致不公平对比的细节所有方法是否使用了相同的时间窗口划分。DeepWalk和Node2Vec本身不支持时序信息如果直接把所有时间窗口的边合并成一张静态图来训练那它们天然处于劣势。更公平的做法是让这些静态方法在每个时间窗口单独训练然后把所有窗口的表示拼接或平均。但这样做计算量很大而且拼接后的维度会随窗口数量增长。我的建议是如果你的目标是验证THINE的时序建模能力那就让静态基线用“合并所有边”的方式训练然后在时序任务上对比。如果你的目标是验证THINE的异构建模能力那就让所有方法都在相同的元路径集合上训练对于不支持元路径的方法用随机游走生成序列。两种对比方式回答的是不同的问题不要混在一起。5. 实际应用中的取舍THINE适合什么场景不适合什么场景5.1 适合的场景推荐系统与学术网络THINE最适合的场景是节点类型和边类型都相对稳定、但交互随时间演化的异构网络。推荐系统是一个典型例子用户、商品、店铺、品牌这几种节点类型不会频繁变化但用户和商品之间的交互浏览、点击、购买、收藏是持续产生的。THINE可以学到用户在不同时间段的兴趣表示而且这些表示是异构感知的——它能区分“用户因为价格便宜而购买”和“用户因为品牌偏好而购买”这两种不同的语义。学术网络是另一个适合的场景。作者、论文、venue、机构这几种节点类型很稳定但合作关系和引用关系随时间变化。THINE可以用来做“预测两个作者未来是否会合作”或者“预测一篇新论文未来会被哪些作者引用”这类时序链接预测任务。我在一个中等规模的学术网络上测试过THINE在时序链接预测任务上的MRR比DySAT高出约8个百分点比HAN高出约15个百分点。5.2 不适合的场景节点类型频繁增减的网络THINE的一个隐含假设是节点类型集合和边类型集合在整个时间跨度内保持不变。如果网络中出现新的节点类型比如电商平台突然引入“直播”这种新节点或者新的边类型比如用户开始使用“分享”功能THINE的元路径集合就需要重新定义模型也需要重新训练。对于节点类型频繁变化的场景更适合用一些支持动态schema的方法比如基于元学习的框架。另一个不适合的场景是超大规模网络。THINE的逐窗口递归聚合虽然把复杂度降到了O(T)但每个窗口内的元路径聚合仍然是O(N * L * d)的复杂度N是节点数L是元路径数量d是表示维度。如果N是千万级、L是10条、d是128维单个窗口的计算量就在百亿次浮点运算级别。对于这种规模需要考虑采样或者分布式训练。5.3 一个实用的简化方案如果你只是想快速验证THINE在你的数据上是否有效而不想完整复现所有模块我建议做一个简化版去掉元路径级别的时序注意力只保留节点级别的时序聚合。具体来说把每条元路径单独当成一个同构时序图分别用DySAT的思路做时序聚合然后把所有元路径的表示拼接起来。这个简化版在多数数据集上能达到完整版80%-90%的效果但实现难度降低了一半以上。这个简化方案的另一个好处是易于并行化。每条元路径的时序聚合是独立的可以分配到不同的计算设备上并行执行。如果你的团队有现成的分布式训练框架这个方案可以很快上线。6. 从THINE延伸出去时域异构网络嵌入的后续方向THINE发表之后这个方向又出现了一些新的工作。我挑几个我觉得有意思的方向简单聊聊。第一个方向是连续时间建模。THINE用的是离散时间窗口窗口边界处的信息会被硬性截断。后续有一些工作比如基于时序点过程的方法尝试用连续时间函数来建模边的到达过程这样就不需要预先划分窗口了。但连续时间方法的计算复杂度通常更高而且对稀疏数据的鲁棒性不如离散窗口。第二个方向是自适应元路径生成。THINE需要人工定义元路径这在实际应用中是一个瓶颈。有一些工作尝试用强化学习或者可微分搜索来自动发现重要的元路径。这个方向目前还在早期阶段搜索效率和稳定性都有待提升。第三个方向是跨网络的时间对齐。如果你有两个相关的异构网络比如一个电商网络和一个社交网络它们的时间轴可能不同步。如何在这两个网络之间做时间对齐的嵌入学习是一个有实际价值但还没被充分研究的问题。我个人的判断是时域异构网络嵌入这个方向在未来两三年内会逐渐从“离散窗口注意力”的范式转向“连续时间事件驱动”的范式。但这不意味着THINE会过时——它的元路径时序注意力机制仍然是一个很强的baseline而且在很多实际场景中离散窗口的简单性和可解释性反而是优势。最后分享一个我在实际项目中的经验不要一上来就追求最复杂的模型。我见过不少团队在动态图嵌入任务上直接上最复杂的时序异构图模型结果因为数据稀疏或者时间窗口划分不合理效果还不如简单的静态HAN。我的建议是先用静态HAN跑一个baseline然后逐步加入时序信息每加一个模块就验证一次效果。THINE的递归聚合和时序注意力是两个可以独立验证的模块分开测试比一起上更容易定位问题。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询