导论:从“静态事实库”到“时间演化的知识系统”
我们习惯把知识写成“事实”:谁与谁是什么关系、某个属性是多少、某条规则是否成立。传统知识图谱(Knowledge Graph, KG)正是以此为核心,将世界抽象为由实体、关系与属性构成的结构化网络,并用三元组 $(h,r,t)$(头实体、关系、尾实体)表达“恒真”的陈述。然而,现实世界更像一部持续更新的编年史:企业会并购、药物指南会更新、政治联盟会重组、一个人会在不同时间担任不同职务。若我们仍将这些变化压扁为不带时间的静态事实,就不可避免地引入矛盾、信息丢失与推理错误。时序知识图谱(Temporal Knowledge Graph, TKG)由此出现:它不是在静态图谱上“附加一个字段”,而是将时间作为一等公民,重塑知识的表示方式、学习范式、推理目标与评估标准。
> 关键转变在于:静态知识图谱回答“是否为真”,时序知识图谱还要回答“何时为真、持续多久、在什么条件下为真、未来可能如何变化”。
---
静态知识图谱:核心假设与边界
<!--tag:static-kg; concept:assumptions-->
三元组表示与“时间被隐去”的代价
静态知识图谱通常以三元组集合 $\mathcal{G}=\{(h,r,t)\}$ 为基本数据形态,配合本体(ontology)或模式(schema)约束类型、域与值域,并借助图数据库/三元组存储(RDF Store)实现查询与管理。它的有效性建立在一个隐含前提上:图谱中的事实在研究窗口内足够稳定,或者我们愿意忽略其变化。
这一前提在百科知识、地理信息等场景中常常成立或近似成立。例如“巴黎是法国的首都”在较长时间尺度上基本不变;“水的化学式是 H₂O”在科学共识层面也不随时间改变。但在大量实际问题中,时间隐去会产生三类系统性代价:
1. 语义冲突(Semantic Conflict):同一对实体在不同时间具有不同关系,静态图谱会把它们压在一起,导致冲突难以消解。
- 例:`(X, CEO_of, CompanyA)` 在 2018 与 2024 可能对应不同的人。
2. 因果与顺序信息丢失(Loss of Order/Causality):许多推理依赖“先后次序”。时间被抹去后,模型只能看到共现而看不到演化路径。
- 例:某设备故障是否由“更新固件”导致,关键在于事件顺序。
3. 评估泄漏(Evaluation Leakage):训练数据若包含“未来事实”,静态切分会让模型不经意学到未来信息,造成虚高的性能评估。
- 例:用 2020 年后的关系预测 2019 年的事实,本质上是“开卷考试”。
静态图谱与动态网络:相似但不等价
图挖掘领域早已有“动态网络(dynamic graph)”“时间演化图(temporal graph)”等概念。它们与时序知识图谱相似之处在于都关注随时间变化的图结构,但研究对象与语义颗粒度存在差异:
- 动态网络常以边的出现/消失为主,语义多为同质边(friend、follow、call)。
- 时序知识图谱强调“关系类型语义 + 事实有效性时间”,常含异质关系、属性、限定词(qualifier)与模式约束,并要求可解释的时间语义。
因此,本书讨论的“时序知识图谱”更接近“带时间语义的知识系统”,而不仅是“会动的图”。
---
时序知识图谱:定义、数据形态与研究对象
<!--tag:temporal-kg; concept:definition-->
从三元组到四元组(或区间事实)
最常见的时序知识表示是将事实扩展为四元组: $$ (h,r,t,\tau) $$ 其中 $\tau$ 是时间戳(timestamp)。当事实具有持续性时,时间更自然的表达是时间区间: $$ (h,r,t,[\tau_s,\tau_e)) $$ 例如:
- (Alice,担任,CompanyA-CEO,[2019-01, 2021-06))
- (CompanyA,并购,CompanyB,2020-10-15)
在工程系统中,还经常区分两类时间(双时态,bitemporal):
- **有效时间(valid time)**:事实在现实世界中成立的时间。
- **记录时间(transaction time)**:事实被写入系统的时间(用于审计、回溯与数据治理)。
二者不一致时,系统必须能够回答“我们何时知道这件事”和“这件事何时发生”这两种不同问题。
[^1]: 双时态思想广泛用于金融、保险、审计等领域的数据仓库建模。其引入会显著增加存储与查询复杂度,但能提升治理与可追溯性。
“时间”的三种语义角色
在 TKG 中,“时间”并非只有一种含义,至少可分为三类角色:
1. 事实有效性(Validity):事实在某时刻/区间为真。 2. 事件发生时间(Occurrence):事件在某时刻发生,强调瞬时性与序列。 3. 观测时间/采样时间(Observation):我们何时观测到信号,常见于传感器、日志与监控。
这三者在数据层面可能被混用:例如新闻事件库(event KG)常将事件发生时间作为时间戳;百科型图谱(如带限定词的声明)则更强调有效区间。研究者若不先澄清时间语义,后续的表示与评估往往会“概念漂移”:看似同一个任务,实际在回答不同问题。
研究边界:我们到底在建什么?
本书将“时序知识图谱的构建与推理”限定在如下对象与问题集合之内:
- **对象**:实体—关系事实随时间变化的集合,可包含事件、属性、限定词与模式约束。
- **目标**:在保证时间一致性的前提下,实现补全、查询、预测、解释与工程落地。
- **不直接覆盖但会关联**:纯连续时间信号建模、仅以拓扑变化为主的动态图嵌入、无关系语义的时序网络分析。
---
为什么“时间”会改变表示、推理与评估范式
<!--tag:temporal-kg; concept:paradigm-shift-->
为了直观展示差异,可以先用一张对比表概括静态 KG 与 TKG 的核心分歧。
| 维度 | 静态知识图谱(KG) | 时序知识图谱(TKG) | |---|---|---| | 基本单元 | $(h,r,t)$ | $(h,r,t,\tau)$ 或 $(h,r,t,[\tau_s,\tau_e))$ | | 语义假设 | 事实在窗口内稳定 | 事实有有效期/演化规律 | | 主要任务 | 链接预测、实体对齐、问答 | 时间感知补全、时间预测、事件预测、时序问答 | | 推理关注点 | 结构一致性、逻辑约束 | 结构 + 时间一致性、顺序/持续性、非平稳性 | | 评估切分 | 随机划分常见 | 必须时间切分,防泄漏 | | 工程挑战 | 存储与查询规模 | 流式更新、版本管理、增量学习、时间索引 |
下面分别讨论三项最关键的范式变化。
表示范式:时间不是“附属字段”,而是结构的一部分
时间粒度与离散化:建模的第一道选择题
时间可以按天、按小时、按分钟甚至连续时间表示。粒度选择会直接改变学习难度与推理能力:
- 粒度过粗:不同事件挤在同一时间桶,模型难以捕捉顺序与因果。
- 粒度过细:时间取值爆炸,数据稀疏,训练不稳定,泛化变差。
工程上常见的折中策略包括:按业务语义分桶(如财报季度、版本发布周期),或在离散桶之上再叠加连续时间编码。
时间编码:从“索引”到“可泛化的表示”
若将时间仅当作类别索引(例如给每一天一个 ID),模型只能记忆出现过的时间点,难以泛化到未见时间。更具泛化性的做法是连续时间编码,例如借鉴 Transformer 的正弦位置编码思想: $$ \phi(t)_{2k}=\sin(\omega_k t),\quad \phi(t)_{2k+1}=\cos(\omega_k t) $$ 其中 $\omega_k$ 控制不同尺度的周期。直观理解是:模型不再“背诵某一天”,而是学习“时间的几何结构”,使相近时刻在表示空间中更接近。
> 侧栏:时间编码的直觉 > 把时间当作“第 1 天、第 2 天”类似给日期贴标签;而用连续编码则像给时间轴画坐标,使模型能理解“相距 1 天”与“相距 1 年”的不同含义。
时间区间与 Allen 关系:持续性事实需要新的逻辑
对区间事实而言,两个区间可能满足相交、包含、相邻等关系。经典的 Allen 区间代数提供了 13 种基本关系(before、meets、overlaps、during 等)。在 TKG 中,这些关系不只是逻辑推理工具,也会影响特征构造与约束设计。例如,“任职”类关系往往要求区间不重叠,“合同”类关系可能允许重叠但需要优先级。
推理范式:从“补全缺失”到“理解演化与预测未来”
推理目标发生扩展
静态 KG 的典型任务是链接预测:给定 $(h,r,?)$ 或 $(?,r,t)$ 预测缺失实体。TKG 在此基础上出现更丰富的目标:
- **时间感知链接预测**:给定 $(h,r,?,\tau)$ 预测某时刻的尾实体。
- **时间预测**:给定 $(h,r,t,?)$ 预测事实发生时间或有效区间。
- **事件预测/趋势预测**:基于历史序列预测未来一段时间内可能发生的新事实。
- **时序查询问答**:回答“在 2019 年谁是 CEO”“某关系首次出现于何时”“某事实持续了多久”等。
这些目标共同要求模型具备两种能力: 1) 对过去与现在的事实给出时间一致的解释(retrodiction); 2) 对未来进行可控的不确定性预测(forecasting)。
非平稳性:规律会变,模型不能假装世界不变
时间引入最棘手的问题之一是分布漂移(distribution shift):关系模式可能随时间改变。比如早期互联网公司更频繁并购,成熟期并购节奏放缓;某疾病的治疗方案随指南更新而变化。若模型假设数据分布平稳,将导致未来预测系统性偏差。
形式化地说,静态任务往往默认从同一分布 $P(h,r,t)$ 采样;而时序任务更接近: $$ P_\tau(h,r,t)\ \text{随}\ \tau\ \text{变化} $$ 因此,时序推理不仅是“多加一个输入”,还涉及在线学习、增量更新、概念漂移检测等问题。
时间约束与可解释规则:从相关到因果更近一步
时间使规则学习更接近“机制”层面的解释。例如,下面是一条带时间约束的规则(示意):
- 若在时间 $\tau$ 发生(A,收购,B,$\tau$),则在 $\tau$ 之后的一段时间内更可能出现(A,拥有,B 的资产,$\tau'$),其中 $\tau' > \tau$。
用符号写作: $$ (A,\text{acquire},B,\tau)\Rightarrow (A,\text{own},\text{assetOf}(B),\tau')\ \wedge\ \tau'<\tau+\Delta $$ 这类规则的价值在于:它不仅给出“可能成立的结论”,还给出“时间窗口”,从而可用于审计、监控与告警。
---
评估范式:不再是“随机抽样”,而是“时间上的公平考试”
时间切分是底线:防止未来信息泄漏
在 TKG 评估中,最基本原则是:训练集时间必须早于测试集时间。否则模型可能借助未来事实“回填过去”,造成不真实的高分。
一个简单但实用的时间切分伪代码如下:
```python def temporal_split(facts, split_time): train = [f for f in facts if f.time < split_time] test = [f for f in facts if f.time >= split_time] return train, test ```
进一步地,若事实是区间,还需要处理跨越切分点的事实(截断、复制或按业务规则分配),这会显著影响指标与结论。
指标也要时间化:你在评“当时”的正确性还是“总体”的正确性?
常见的排名指标(MRR、Hits@K)在 TKG 中仍然适用,但通常需要按时间片汇总(time-aware aggregation),以避免某些时间段样本更多导致的偏置。另一方面,面向预测的任务还可能需要概率校准类指标(如 Brier Score)或区间误差指标(如 MAE on time)。
> 经验提醒:若一个模型在随机切分上显著优于基线,但在时间切分上优势消失,往往意味着它学到的是“静态共现”而非“演化规律”。
---
本书的方法论框架:数据—表示—学习—推理—评估—应用—工程
<!--tag:methodology; concept:pipeline-->
为了在复杂系统中保持一致的任务视角,本书采用一条从数据到落地的链式框架。读者可以将其理解为“构建时序知识系统的生产流水线”,每一环节既能独立研究,又必须与上下游共同设计。
```mermaid graph TD A[数据 Data] --> B[表示 Representation] B --> C[学习 Learning] C --> D[推理 Reasoning] D --> E[评估 Evaluation] E --> F[应用 Application] F --> G[工程 Engineering] G --> A ```
这条链条还隐含一个重要事实:时序知识系统往往是闭环。系统上线后会产生新数据(日志、反馈、纠错),这些数据反过来推动图谱更新与模型迭代,形成“持续学习”的循环。
各环节的核心问题清单(作为全书索引)
- **数据**:时间信息从何而来?缺失/噪声如何处理?如何进行实体消歧与时间对齐?
- **表示**:用时间戳还是时间区间?如何编码时间粒度?如何表达限定词与上下文?
- **学习**:选择嵌入模型、时序图神经网络还是序列模型?如何做增量训练与漂移适应?
- **推理**:做补全、时间预测还是事件预测?如何融入规则、约束与可解释性?
- **评估**:如何切分数据?如何避免泄漏?指标如何与业务目标一致?
- **应用**:在金融、医疗、安全等场景如何定义可落地任务与反馈机制?
- **工程**:如何存储与索引时间事实?如何做版本管理与可追溯?如何在流式更新下保持一致性?
---
阅读路线:18 章结构的“任务导航图”
<!--tag:reading-route; concept:book-structure-->
本书共 18 章,按“从基础概念到系统落地”的顺序组织,同时提供可按兴趣跳读的路线。
1. 导论:从静态事实库到时间演化的知识系统 2. 时序知识的来源:事件数据、百科限定词与日志流 3. 时间建模基础:时间戳、区间、双时态与粒度选择 4. 时序知识表示:四元组、限定词与事件本体 5. 数据构建流程:抽取、对齐、消歧与质量控制 6. 存储与索引:时间切片、区间索引与版本管理 7. 时序嵌入方法(一):时间参数化与平移类模型 8. 时序嵌入方法(二):基于序列与注意力的表示学习 9. 时序图神经网络:消息传递在时间轴上的重构 10. 规则与逻辑:时间约束、可解释推理与神经符号融合 11. 时序补全任务:设定、难点与典型算法 12. 时间预测与区间推断:从发生时刻到持续时间 13. 事件预测与演化建模:从历史到未来的生成式视角 14. 时序查询与问答:复杂查询、路径与聚合 15. 评估方法学:时间切分、指标选择与误差诊断 16. 典型应用(一):金融风控、反洗钱与合规审计 17. 典型应用(二):医疗诊疗路径、药物警戒与公共卫生 18. 工程化落地:流式更新、在线推理、监控与治理
数字版阅读建议:可将上述章名作为书内锚点链接(例如 `#时序图神经网络`),便于在屏幕端快速跳转与检索。纸书阅读建议:先通读第 1–6 章形成共同语言,再按任务需要深入方法章与应用章。
---
典型应用场景:时间带来的“新问题”长什么样
<!--tag:applications; concept:scenarios-->
时序知识图谱的价值不在于“让图谱更复杂”,而在于它能把许多原本难以结构化的问题,转化为可计算、可评估、可迭代优化的任务。下面列举若干典型场景,并用具体案例说明“时间”如何改变问题定义。
场景一:企业与产业链情报——关系随事件重写
在企业图谱中,股权、供应关系、合作关系都可能随并购、制裁、破产而改变。静态图谱常把“曾经的关系”和“当前的关系”混在一起,导致风控误判。
案例(并购后的关系迁移) 假设我们有如下事实序列(示意):
- (CompanyA,并购,CompanyB,2020-10-15)
- (CompanyB,供应,CompanyC,[2019-01, 2021-03))
一个风控问题可能是:在 2020-11 之后,CompanyA 与 CompanyC 是否形成间接供应链风险暴露? 这需要系统能够在时间维度上做路径推理,并处理区间截断(CompanyB 的供应关系在 2021-03 结束)。
在公开事件数据集中(如新闻事件库、政府公告、企业年报抽取),事件量级常可达到几十万到数千万,且时间戳密集。对这类数据,系统不仅要“存得下”,还要“跟得上”更新频率。
场景二:医疗与健康——诊疗知识与个体病程都是时间序列
医疗知识天然带时间:诊断发生在某时刻,药物有疗程,化验指标有趋势,指南会更新。若只用静态事实表达,很难回答临床常见问题:
- 某药物在开始使用后多久出现不良反应概率上升?
- 某病人在过去 30 天的用药与检验序列是否提示并发症风险?
- 在某指南版本生效之后,哪些治疗路径不再推荐?
案例(用药—不良反应的时间窗口) 设事实:
- (DrugX,可能导致,AdverseEventY,[用药后第 3 天, 第 14 天])
- (PatientP,开始服用,DrugX,2025-01-01)
系统应能推出:PatientP 在 2025-01-04 至 2025-01-15 的窗口内风险更高,从而触发更密集的监测。这不是单纯的链接预测,而是时间区间推断 + 个体化时间对齐。
> 侧栏:医疗场景的“时间一致性” > 同一事实在不同指南版本下可能真假不同。工程上可用“双时态”记录“指南有效期”和“系统录入时间”,以支持追溯“当时为什么这样决策”。
场景三:网络安全与运维——日志流驱动的在线知识系统
安全与运维数据往往以日志流形式出现:告警、登录、进程、网络连接。它们具有强烈的顺序性与短