时空知识图谱补全:STSE与S-TSE模型原理与工程实践详解
2026/5/26 13:08:15 网站建设 项目流程

1. 项目概述与核心价值

知识图谱补全(Knowledge Graph Completion, KGC)是知识图谱领域一个经典且至关重要的任务。简单来说,它就像是在一张巨大的关系网络(知识图谱)中,根据已有的节点(实体)和连线(关系),去预测那些缺失的连线或节点。传统的KGC模型,无论是基于翻译的TransE、TransH,还是基于语义匹配的DistMult、ComplEx,大多处理的是静态的、永恒不变的事实,比如“姚明的国籍是中国”。然而,现实世界是动态的,大量事实的有效性严格依赖于时间和地点。例如,“航班CA123的当前位置是北京首都国际机场”这个事实,只有在特定的时间点(如2023年10月27日 10:00)和空间坐标(如经纬度)下才成立。忽略了时空维度,知识图谱的“知识”就是不完整的,甚至是错误的。

因此,时空知识图谱补全应运而生,它旨在处理那些形式为(头实体,关系,尾实体,时间,空间)的五元组事实。这个领域的挑战在于,如何将连续、复杂的时空信息(如“2023-10-27 10:00:00”和“116.4074°E, 39.9042°N”)有效地融入到离散的、符号化的知识图谱表示学习中。这正是本文提出的STSE(SpatioTemporal Sequence Encoder)和S-TSE(Spatial-Temporal Sequence Encoder)模型所要解决的核心问题。它们不是简单地将时空信息作为额外的特征拼接,而是创新性地利用序列编码器(如LSTM)将时空信息与关系本身进行深度融合,学习得到“时空感知”的关系向量表示,从而在包含时空维度的推理任务上取得更优的性能。

对于从事知识图谱、推荐系统、轨迹预测、物联网数据分析等领域的研究者和工程师而言,理解并掌握时空知识图谱补全的技术,意味着能够构建更贴近现实、更具动态推理能力的智能系统。本文将深入拆解STSE与S-TSE模型的原理、实现细节、实验设计以及背后的设计哲学,为你提供一份从理论到实践的完整指南。

2. 模型核心思想与设计哲学

2.1 问题定义:从三元组到时空五元组

首先,我们需要明确时空知识图谱(SpatioTemporal Knowledge Graph, STKG)的形式化定义。一个STKG可以表示为一个图 G = (E, R, T, L),其中E是实体集合,R是关系集合,T是有效时间集合,L是有效位置集合。图中的每一个事实(Fact)不再是一个简单的三元组 (s, p, o),而是一个扩展的时空RDF三元组,记为 (s, p:<tp, lp>, o)。这里,s和o是头尾实体,p是关系,而tp和lp则是与该关系p相关联的特定时间信息和空间(位置)信息。

例如,在航班领域,一个事实可能是:(航班CA123, 目的地:<2023-10-27 12:00, (31.2304°E, 121.4737°N)>, 上海浦东机场)。补全任务则是给定一个不完整的查询,如 (航班CA123, 目的地:<2023-10-27 12:00, ?> , ?) 或 (?, 目的地:<2023-10-27 12:00, (31.2304°E, 121.4737°N)>, 上海浦东机场),来预测缺失的实体(尾实体或头实体)。

2.2 核心挑战与设计思路

面对时空知识图谱补全,模型设计需要解决两个核心挑战:

  1. 如何编码时空信息:时间和空间是连续且结构化的数据(时间有年、月、日、时、分;空间有经纬度)。如何将它们从原始的数值或字符串,转化为能够与离散的实体、关系嵌入向量协同工作的表示?
  2. 如何定义评分函数:在得到时空感知的表示后,如何设计一个评分函数 f(s, p:<t, l>, o) 来衡量一个五元组事实的合理性( plausibility )?这个函数需要能有效融合实体嵌入和时空关系嵌入。

STSE和S-TSE的解决方案基于一个核心洞察:将关系、时间和空间信息视为一个序列。关系本身可以看作一个符号,时间可以分解为一系列时间戳token(如年、月、日、时、分的数字),空间(如经纬度)也可以转化为位置token。既然它们是序列,那么擅长处理序列数据的递归神经网络(RNN),特别是其变体长短期记忆网络(LSTM),就成了天然的编码器选择。

注意:这里选择LSTM而非更时髦的Transformer,主要是出于模型简洁性和对中等长度序列(本文中序列长度固定)的有效性考虑。LSTM的门控机制能较好地捕捉序列中token之间的依赖关系,且参数量相对可控,在知识图谱嵌入这种通常需要训练大量实体和关系的任务中,是一个务实的选择。

两个模型的分歧点在于对时空信息耦合程度的假设:

  • STSE模型:假设时空信息与关系是不可分割的整体。它将关系token、时间token序列、空间token序列拼接成一个长的输入序列,送入同一个LSTM进行编码。LSTM最终的隐藏状态,就代表了融合了时空信息的关系嵌入e_rtl
  • S-TSE模型:假设时间信息和空间信息对关系的影响是相对独立的。它使用两个独立的LSTM编码器,一个处理“关系+时间token”序列,输出时间感知的关系嵌入e_rt;另一个处理“关系+空间token”序列,输出空间感知的关系嵌入e_rl。在后续评分时,再将这两个嵌入结合起来。

这两种设计体现了两种不同的建模哲学:STSE追求信息的紧密融合,可能能捕捉到更复杂的时空联合模式;S-TSE则提供了更清晰的模块化设计,可能对某些时空信息相对独立的任务更有优势。实验部分将验证哪种假设在真实数据上更有效。

3. 关键技术细节深度解析

3.1 时空信息分解与Token化

这是模型的第一步,也是将原始数据转化为模型可处理格式的关键。本文提出了一种比前人工作(如TA-TransE)更精细的分解方法。

1. 时间信息分解: 原始时间格式如 “2019-07-31 00:10” 需要被转化为一系列离散的token。本文将其分解为5个部分:年(Year)、月(Month)、日(Day)、时(Hour)、分(Minute)。每个部分用十进制数字表示,因此每个数字(0-9)对应一个唯一的token ID。

  • Token ID 分配:为了区分不同部分的相同数字,为每个部分分配了独立的token ID区间。
    • 年:0-9 (对应数字0-9)
    • 月:10-19 (对应数字0-9,表示1月到12月,但用0-9表示,需注意映射)
    • 日:20-29 (对应数字0-9)
    • 时:30-39 (对应数字0-9)
    • 分:40-49 (对应数字0-9)
  • 序列构建:对于一个具体时间,将其每一位数字映射到对应的token ID,并按“年月日时分”的顺序排列成一个固定长度的序列。例如,“2019-07-31 00:10”:
    • 年: 2, 0, 1, 9 -> Token IDs: [2, 0, 1, 9]
    • 月: 0, 7 -> 注意,月份“07”被分解为数字‘0’和‘7’。根据映射,数字‘0’对应token ID 10,数字‘7’对应token ID 17。所以得到 [10, 17]。
    • 日: 3, 1 -> 数字‘3’对应token ID 23,数字‘1’对应token ID 21。得到 [23, 21]。
    • 时: 0, 0 -> [30, 30]
    • 分: 1, 0 -> [41, 40]
    • 最终时间token序列: [2, 0, 1, 9, 10, 17, 23, 21, 30, 30, 41, 40] (共12个token)。

2. 空间信息分解: 空间信息通常以经纬度对表示,如 (18, 23)。本文的处理相对简单:将经纬度视为两个独立的数值。为了与时间token区分开,将每个坐标值加上时间token的总数(50)。因此,坐标 (18, 23) 被转化为 token IDs: [18+50=68, 23+50=73]。

3. 关系Token: 每个关系(如“目的地”、“出生于”)在模型中有其唯一的初始嵌入向量。在构建输入序列时,关系本身也被视为一个特殊的“token”,通常放在序列的最开始。对于STSE,完整的输入序列是:[关系_token, 时间_token_序列, 空间_token_序列]。对于S-TSE,则构建两个序列:[关系_token, 时间_token_序列][关系_token, 空间_token_序列]

实操心得:这种token化方式虽然直观,但存在一个潜在问题:它丢失了数字的数值语义。例如,token ID 2(代表数字2)和 token ID 3(代表数字3)在嵌入空间中是独立的,模型需要从头学习“3比2大1”这样的数值关系。对于时间序列,月份、小时的周期性(如23点之后是0点)也难以通过这种离散表示直接捕获。在实际应用中,如果时空数据范围很大或精度很高(如毫秒级时间戳、高精度GPS坐标),这种方法的词汇表会膨胀,且效率可能下降。一种改进思路是引入数值编码(如周期编码)与token嵌入相结合。

3.2 基于LSTM的时空感知关系编码

获得token序列后,下一步就是用LSTM来编码它们,得到关系的新表示。

LSTM单元回顾:LSTM通过输入门(i_t)、遗忘门(f_t)、输出门(o_t)和细胞状态(c_t)来控制信息的流动,非常适合处理序列数据。其核心公式如下:

i_t = σ(W_i · [h_{t-1}, x_t] + b_i) # 决定哪些新信息被存入细胞状态 f_t = σ(W_f · [h_{t-1}, x_t] + b_f) # 决定从细胞状态中丢弃哪些旧信息 c̃_t = tanh(W_c · [h_{t-1}, x_t] + b_c) # 候选细胞状态 c_t = f_t · c_{t-1} + i_t · c̃_t # 更新细胞状态 o_t = σ(W_o · [h_{t-1}, x_t] + b_o) # 决定输出哪些细胞状态的信息 h_t = o_t · tanh(c_t) # 当前时间步的隐藏状态(输出)

其中,x_t 是当前时间步的输入(对应某个token的嵌入向量),h_{t-1} 是上一时间步的隐藏状态,σ是sigmoid函数。

编码过程

  1. 输入嵌入层:首先,每个token ID(包括关系token、时间token、空间token)都通过一个可训练的嵌入层(Embedding Layer)被映射为一个d维的向量。这个嵌入层是所有token共享的,还是为不同类别的token(关系、时间部分、空间)使用不同的嵌入层,是一个可以调整的超参数。原文未明确,但共享嵌入层是常见且参数高效的做法。
  2. 序列处理:将得到的向量序列按顺序输入LSTM。
  3. 输出表示:对于STSE模型,取LSTM处理完最后一个token(即最后一个空间token)后的最终隐藏状态h_T作为整个“时空感知关系”的向量表示e_rtl
  4. S-TSE的特殊处理:对于S-TSE,有两个独立的LSTM。处理“关系+时间”序列的LSTM,其最终隐藏状态输出为时间感知关系嵌入e_rt。处理“关系+空间”序列的LSTM,其最终隐藏状态输出为空间感知关系嵌入e_rl

注意事项:这里使用的是单向LSTM。理论上,使用双向LSTM(Bi-LSTM)可以同时捕捉每个token前后文的依赖关系,可能获得更丰富的序列表示。但考虑到知识图谱补全任务中,序列的“方向性”(关系在前,时空在后)可能具有明确含义,且双向LSTM会加倍参数,作者可能出于简洁性和效率考虑选择了单向。在实际复现时,可以尝试Bi-LSTM作为对比实验。

3.3 评分函数与损失函数设计

得到时空感知的关系嵌入后,就需要一个评分函数来衡量一个候选事实 (s, r:<t, l>, o) 的合理性。本文的评分函数设计灵感来源于经典的翻译模型TransE

TransE的核心思想是,如果三元组 (h, r, t) 成立,那么头实体向量e_h加上关系向量e_r,应该近似等于尾实体向量e_t,即e_h + e_r ≈ e_t。因此,其评分函数是负的向量距离:f(h, r, t) = -||e_h + e_r - e_t||,距离越小(得分越高),事实越可能成立。

STSE和S-TSE将这一思想扩展到了时空五元组:

  • STSE评分函数f(s, r:<t, l>, o) = -||e_s + e_rtl - e_o||_{L1/L2}这里,e_rtl是LSTM编码得到的融合了时空信息的关系向量。模型期望e_s + e_rtl ≈ e_o

  • S-TSE评分函数f(s, r:<t, l>, o) = -||e_s + e_rt + e_rl - e_o||_{L1/L2}这里,e_rte_rl分别是时间感知和空间感知的关系向量。模型期望e_s + e_rt + e_rl ≈ e_o。注意,这里是相加,体现了时间和空间对关系的独立贡献是叠加的。

距离范数选择||·||_{L1/L2}表示可以使用L1范数(曼哈顿距离)或L2范数(欧几里得距离)。L1范数对异常值更鲁棒,L2范数更平滑。在实验中需要根据数据特性进行选择。

损失函数:知识图谱补全通常被构建为一个二分类任务:给定一个事实,判断其是真(正样本)还是假(负样本)。负样本通常通过“随机破坏”法生成,即对于一个正样本 (s, r:<t, l>, o),随机替换其头实体s或尾实体o,生成一个假的三元组。 模型采用**二元交叉熵损失(Binary Cross-Entropy Loss)**进行优化:

L = - Σ_{x∈F+ ∪ F-} [ y * log(ŷ) + (1-y) * log(1-ŷ) ]

其中,F+是正样本集,F-是负样本集,y是真实标签(1为正,0为负),ŷ是模型预测该样本为真的概率。

预测概率计算:对于STSE和S-TSE,首先通过评分函数计算得分score = f(s, r:<t, l>, o)。这个得分是一个距离(负数),需要将其转化为概率。流程如下:

  1. 通过sigmoid(score)将得分映射到(0,1)区间。因为score是负距离,距离越小(事实越合理),sigmoid值越接近1。
  2. 在训练时,通常使用softmax函数在同一个批次(batch)的正负样本之间进行归一化,得到每个样本的预测概率ŷ。这有助于稳定训练。在推理(预测)时,通常直接使用sigmoid(score)或根据所有候选实体的得分进行排序。

核心设计逻辑:评分函数的设计是整个模型的“引擎”。它必须与关系编码方式相匹配。STSE使用单一融合向量e_rtl,所以直接沿用TransE的加法形式。S-TSE将时空效应分离为两个向量e_rte_rl,因此在翻译过程中将它们同时加上。这种设计保持了模型的简洁性和可解释性,同时与基础的TransE框架兼容,使得许多为TransE优化的技巧(如负采样策略、归一化方法)可以迁移过来。

4. 实验复现与结果深度分析

4.1 实验环境与数据集准备

实验环境

  • 框架:PyTorch。选择PyTorch因其动态图特性在研究和模型调试中非常灵活。
  • 硬件:GeForce GTX 2080 Ti GPU。这确保了LSTM和大量嵌入参数训练的效率。
  • 超参数
    • 嵌入维度:OpenSky数据集设为200维,YAGO数据集设为300维。维度的选择通常与数据集的规模(实体和关系的数量)有关,更大的数据集可能需要更高的维度来捕获更复杂的关系模式。YAGO虽然事实数少,但实体和关系类型可能更复杂,故设置了更高维度。
    • 优化器:Adam。这是深度学习中的标准选择,自适应学习率,收敛速度快。
    • 学习率:从 {0.0001, 0.001, 0.01} 中网格搜索。实验结果表明0.001是最佳选择。
    • 训练轮数(Epoch):OpenSky尝试了[10, 30, 50],YAGO尝试了[10, 20, 30]。有趣的是,较小的Epoch(10或20)往往能取得更好或相当的性能,说明模型可能很快过拟合,或者数据集的正则化效果需要调整(如增加Dropout)。
    • 批大小(Batch Size):OpenSky为1024,YAGO为128。批大小的设置与数据集大小和GPU内存有关。OpenSky数据量大,使用大Batch可以加速训练;YAGO数据量小,使用小Batch可能使梯度更新更稳定。

数据集: 本文使用了两个公开数据集,它们都同时包含时间和空间信息,这是评估时空模型的关键。

  1. OpenSky航班数据集:来源于OpenSky网络,包含了2019年8月1日至7日的航班轨迹数据。每个事实格式为:(飞机注册号, 关系:<日期, (纬度, 经度)>, 机场代码)。关系是“起飞机场”或“目的机场”。这是一个典型的、规模较大的时空图谱。
  2. YAGO时空子集:从大型知识库YAGO中抽取了同时包含出生日期和出生地坐标的人物事实。每个事实格式如:(人物, 出生于:<日期, (经纬度)>, 地点)。这是一个规模较小但关系语义更丰富的图谱。

数据集的划分与负样本生成

  • 划分:按80%(训练)、10%(验证)、10%(测试)的比例随机划分。验证集用于超参数调优和早停(Early Stopping),测试集用于最终性能报告。
  • 负样本生成:对于每个训练/验证/测试集中的正样本五元组,采用“随机破坏”法生成负样本。例如,对于正样本 (s, r:<t, l>, o),随机替换头实体s或尾实体o为图谱中的其他实体,但确保生成的三元组不在已有的正样本集合中。通常,每个正样本会生成1个或多个负样本。

4.2 基线模型与评估指标

基线模型:由于时空知识图谱补全的研究相对较少,作者选择了一个经典的时序知识图谱补全模型TA-TransE作为主要基线。TA-TransE同样使用RNN(LSTM)来编码关系和时间序列,但它完全忽略了空间信息。为了公平比较,在实验中移除了数据中的空间信息,让TA-TransE只在时间维度上进行学习。这样的对比能清晰地揭示引入空间信息带来的增益

评估指标:采用知识图谱补全领域的标准评估协议——过滤式设置(Filtered Setting)。在预测时,对于每个测试查询(如 (s, r:<t, l>, ?)),模型会对所有可能的尾实体o进行评分并排序。但是,在计算排名时,会“过滤”掉那些在训练、验证、测试集中已经存在的、且与当前查询的 (s, r:<t, l>) 能构成真实事实的尾实体。这避免了因为已知事实排在前面而低估模型性能。主要指标有:

  • MRR(平均倒数排名):所有测试查询的“正确实体”排名的倒数的平均值。MRR越高越好,最大值接近1。它对排名靠前的正确预测非常敏感。
  • Hits@k:正确实体排名在前k位(即排名≤k)的查询所占的比例。常用k=1, 3, 10。Hits@1衡量“精确命中”的能力,Hits@10衡量“召回”能力。

4.3 结果分析与讨论

主要结论

  1. STSE全面优于S-TSE和TA-TransE:在两个数据集上,STSE在MRR和Hits@k各项指标上均取得了最佳性能。这强有力地支持了STSE的时空信息耦合假设——在航班轨迹和人物出生地这类任务中,时间和空间信息是紧密关联、共同作用于关系的。将它们作为一个整体序列进行编码,比分开编码后再相加(S-TSE)能学到更有效的联合表示。
  2. 引入空间信息至关重要:STSE和S-TSE(都包含空间信息)的性能普遍优于只考虑时间的TA-TransE(在YAGO上优势尤其明显)。这证明了在时空图谱中,空间维度是不可或缺的,忽略它会损失大量信息,限制模型的推理能力。
  3. 尾实体预测优于头实体预测:如表2所示,所有模型在预测尾实体(如“航班的目的地是哪里?”)上的表现都远好于预测头实体(如“哪架航班飞往这个目的地?”)。通过分析数据集,作者发现尾实体的数量远少于头实体(OpenSky中尾实体8917个,头实体50431个)。这符合直觉:预测一个较小集合中的候选对象通常比预测一个更大集合中的对象更容易。这也提示我们,在构建数据集时,需要注意头尾实体分布的平衡性。

超参数敏感性分析

  • 训练轮数(Epoch):如表3所示,STSE在较小的Epoch(OpenSky上10,YAGO上20)时达到最佳性能,之后性能可能持平或下降。这表明模型收敛速度较快,但也可能意味着训练数据量相对模型复杂度来说不够大,容易过拟合。在实际训练中,使用验证集进行早停(Early Stopping)是必要的
  • 学习率(Learning Rate):如表4所示,学习率对性能影响巨大。0.001是一个稳定的最佳值。学习率太小(0.0001)会导致收敛缓慢,性能不佳;学习率太大(0.01)可能导致优化过程不稳定,难以收敛到好的解。这强调了超参数调优,尤其是学习率的选择,是模型成功的关键步骤

实操避坑指南

  1. 负采样策略:文中使用的是简单的均匀随机破坏。在实际复杂图谱中,这种策略可能产生大量“简单”的负样本(如用“苹果公司”去替换“乔布斯出生于...”中的“乔布斯”),使得模型无需学习深层模式就能区分。可以采用更复杂的负采样策略,如基于类型的采样(只替换同类型的实体)、对抗性采样等,以提升模型鲁棒性。
  2. 嵌入初始化与归一化:实体和关系的初始嵌入通常采用随机初始化,并需要约束其范数(如进行L2归一化),以防止训练过程中向量范数无限增长。TransE系列模型对此尤其敏感。
  3. 梯度爆炸/消失:虽然LSTM缓解了梯度消失问题,但在处理较长序列时仍需注意。可以监控梯度范数,使用梯度裁剪(Gradient Clipping)来稳定训练。
  4. 关系编码器的选择:本文固定使用LSTM。在实际应用中,可以尝试其他序列模型,如GRU(参数更少)、Transformer(捕捉长距离依赖更强)或CNN(并行效率高),并比较其效果和效率。

5. 模型局限性与未来扩展方向

尽管STSE和S-TSE在时空知识图谱补全上取得了有希望的结果,但作为早期探索性工作,它们也存在一些局限性,这同时也指明了未来的改进方向。

1. 时空信息的粗糙建模

  • 离散化损失:将连续的时空坐标离散化为独立的token,完全丢失了数值的连续性和度量语义。经纬度(116.40, 39.90)和(116.41, 39.91)在数值上非常接近,但在token表示中却是完全独立的。这不利于模型学习“邻近”的空间概念。
  • 改进方向:可以引入数值编码。例如,对于空间坐标,可以使用高斯随机傅里叶特征(Random Fourier Features)将其映射到高维空间,以保留连续性。对于时间,除了年月日时分,还可以加入周期性的正弦余弦编码(如将一天中的小时编码为(sin(2πh/24), cos(2πh/24))),让模型能理解时间的周期性。

2. 静态的实体嵌入

  • 在STSE和S-TSE中,实体(如“北京”、“上海浦东机场”)的嵌入向量是静态的,不随时间或地点变化。然而,在现实世界中,实体的属性或关系可能随时间演变(概念漂移)。
  • 改进方向:开发动态实体嵌入模型。例如,可以为每个实体学习一个基础嵌入,再叠加一个由时间/空间编码器生成的动态偏移量。或者,将时空知识图谱视为一系列快照,在每个快照内学习独立的实体嵌入,并通过时间平滑约束来联系不同快照间的嵌入。

3. 评分函数的局限性

  • 模型沿用了TransE的简单加法翻译假设e_h + e_r ≈ e_t。这种假设对于复杂关系(如多对一、一对多、对称/反对称关系)的建模能力有限。在引入了复杂的时空关系嵌入后,这个简单的假设可能成为性能瓶颈。
  • 改进方向:可以探索更强大的评分函数。例如,结合RotatE的旋转操作(在复数空间将关系视为旋转),或者ConvE的卷积操作,来建模更复杂的交互。可以将时空感知的关系嵌入e_rtl作为这些更复杂模型的输入。

4. 未能实现联合实体与关系补全

  • 当前模型主要解决实体补全(预测缺失的头或尾实体)。但在一个真正的动态图谱中,关系也可能随时间/空间变化或缺失(例如,两个地点之间在某个时间段内是否有航线)。
  • 改进方向:设计能够同时完成实体补全关系补全的模型。这需要模型不仅能输出实体的概率分布,也能输出关系的概率分布。一种思路是将关系也作为待预测的目标,并设计相应的训练目标。

5. 融入外部语义信息

  • 当前模型只利用了图谱本身的结构化时空信息。实体和关系背后丰富的文本描述、类别信息等语义信息未被利用。
  • 改进方向:构建多模态时空知识图谱模型。可以利用预训练语言模型(如BERT)来初始化实体或关系的嵌入,或者将文本描述作为辅助信息输入到编码器中。这尤其适用于像YAGO这样包含丰富文本描述的知识库。

个人实践思考:复现这类研究时,最大的挑战往往在于数据集的构建与处理。从原始的非结构化或半结构化数据(如航班记录CSV、YAGO的TSV文件)中抽取出格式规整的 (s, p:<t, l>, o) 五元组,涉及大量的数据清洗、对齐和规范化工作。例如,确保时间格式统一、坐标系统一致、实体链接准确(同一个机场不能有多个不同的字符串表示)。这部分工作的工程量常常不亚于模型本身的设计与实现。因此,在开始模型编码之前,花足够的时间构建一个干净、一致的数据管道,是项目成功的基础。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询