想象你在管理一座繁忙的“忘忧城”。最初,你只需要一张静态的街区图——哪些路相通、哪些街区挨着,画好就够用了。可城市是活的:新住户搬进来,老街区被改造,原先的邻居突然搬走,两栋楼之间多出一条捷径。如果你一直拿着旧地图导航,注定会迷路。同样的道理也发生在数据世界:社交网络里的好友关系、金融网络里的转账往来、交通网络里的拥堵传播,都没有一刻是静止的。动态图的表示学习与时序演化建模,就是教机器学会“看一座城市的地图册”——不仅看某一页,而是理解每一页之间的变化规律,进而预测下一页会发生什么。 在这篇文章里,我们把整座城市当作一个动态图:居民是节点,人际关系是边。你将从“静态图”出发,一步步理解快照图序列、节点状态更新、时序演化建模、动态嵌入方法以及时序采样策略,最终学会如何用动态图表示学习去解决真实的链路预测问题。别担心,整篇故事只用“城市演进”这一个比喻,读完你会发现:原本感觉高深的动态图,其实就是“会动的地图”而已。
对 AI 从业者而言,动态图表示学习是走向推荐、风控、交通预测等实时场景的必经之路。掌握它,意味着你能让模型不再是“看一张旧照片”,而是“读懂一段连续的城市故事”。
可视化演示
本节配有交互动效(进入视口后自动加载,约 3KB)。
快照图序列与离散时间建模 快照图方法 快照图序列将动态图离散化为静态图序列 连续时间动态图模型 Φ(t) = √(1/d)·[sin(ηt),cos(ηt)...] m(t) = GRU(m(t-1), message(t)) 动态图表示学习可视化:快照图序列、...
动态图基础
还是回到“忘忧城”。当初城市规划师只需画一张街区图:哪里有路、哪里是公园,标清楚就够了。可城市每天都在生长——新楼盘交付、老商圈搬迁、地铁线路延伸到城市另一端。这时候,一张固定不变的地图反而会误导人。你真正需要的,是一本“城市图册”:每一页记录某个时刻的人口分布与街区关系。这就是动态图与传统静态图最根本的差异:静态图是单页,动态图是整个相册。
在计算机里,这种“相册”被形式化为一组随时间排列的图快照。社交网络中,今天你关注了谁、明天谁取关了你;交易网络中,这笔转账发生在几点几分、那笔交易又在哪一刻被标记异常。每个时间点上的图都不同,却又彼此关联——前一刻的互动会影响后一刻的关系。动态图表示学习要做的,正是从这组“连续快照”中挖出演化的规律。
动态图通常被写成如下形式:
理解动态图的第一步,不是去背复杂的模型,而是先认清“城市被记录在哪些时间点”。后面所有的快照聚合、节点更新、时序建模,都建立在这样一个时间序列之上。把这一页看明白,你就已经迈进了动态图的门口。
- 图快照\(G_t\) 表示时刻 \(t\) 的整张图,相当于城市相册中第 \(t\) 页的全景照片。
- 节点集合\(V_t\) 是时刻 \(t\) 的节点集合,对应当时仍住在城里的居民。
- 边集合\(E_t\) 是时刻 \(t\) 的边集合,对应居民之间此刻依然有效的关系。
- 时间推进\(t\) 从 1 取到 \(T\),就像把照片按时间顺序整理成册。
快照图序列
为了让城市图册不重不漏,绘图员决定每隔一段时间就拍摄一张“城市全景照”。这些全景照就是图快照 \(G_t\)。但快照不是拍得越密越好——如果一小时拍一张,一个季度就是两千多张,既有噪音又浪费存储;如果一年才拍一张,又可能漏掉街区之间的关键变化。快照机制的核心,是在“记录多少细节”和“保留多久历史”之间做权衡。
实际操作中,我们通常不会把全部历史快照都塞进模型,而是引入一个“时间窗口”。窗口大小 \(\tau\) 表示模型最多往前看几步。比如 \(\tau = 3\),就表示模型只关心最近三个时间步的历史。窗口太小,就像只回看上周的天气就要预测下周;窗口太大,则像把十年前的街区格局也当作今天的重要信息。
为了让窗口内的信息形成一张可用的图,我们还要做“聚合”——把多张快照合并成一张代表当前状态的加权图:
快照序列的构建质量,直接决定后续模型的“视野”。就好像一位老记者整理档案:把无关的旧新闻剔除,把最近的关键事件高亮,最后浓缩成一份真正有价值的简报——这份简报,就是 \(\hat{G}_t\)。
- 聚合结果\(\hat{G}_t\) 是经过窗口聚合后得到的图,可理解为“综合最近几页照片画出的最新地图”。
- 聚合操作\(\text{Agg}\) 是聚合函数,可以是加权平均、求和,也可以是更复杂的注意力聚合。
- 窗口起点\(G_{t-\tau+1}\) 是窗口内最早的一张快照,相当于相册中“还值得参考”的最老一页。
- 窗口终点\(G_t\) 是最新一张快照,代表当前时刻城市的实际状态。
节点状态更新
想在忘忧城判断某位居民最近在忙什么,最聪明的办法不是去盘问他本人,而是看他身边那圈朋友:朋友新开的店、刚搬的街区、最近频繁联系的伙伴。节点的“状态”也是如此——它不应该只由自己决定,而应该通过邻居的消息不断修正。这就是动态图里节点状态更新的核心思想:用邻居的信息来更新自己。
这里说的“状态”,是节点在某个时刻的向量表示 \(h_v\),你可以把它理解为居民的“动态小传”。刚开始,小传可能是空白的;但每次消息传递,邻居都会把自己的“小传摘要”发过来,经过聚合形成一条综合信息,再与自己原来的小传融合,生成新的版本。这个过程可以表示为:
城市里的消息就是这样一层层传开的:先问身边朋友,再让朋友去问他们的朋友。动态图把这种“邻居聚合—自身更新”的过程沿着时间轴反复执行,每过一个时刻,居民的小传就会根据最新的邻里关系刷新一次。最终拿到手的,是一份份跟得上城市变化的“活户口本”。
- 当前状态\(h_v^{(t)}\) 是节点 \(v\) 在时刻 \(t\) 更新后的状态向量,也就是居民“最新版小传”。
- 邻居集合\(\mathcal{N}(v)\) 是 \(v\) 的直接邻居集合,相当于和这位居民有来往的熟人圈。
- 邻居聚合\(\frac{1}{|\mathcal{N}(v)|} \sum_{u \in \mathcal{N}(v)} W h_u^{(t-1)}\) 把每个邻居上一时刻的状态乘上权重矩阵 \(W\) 后取平均,相当于听取一圈熟人的综合意见。
- 激活函数\(\sigma\) 是对结果做非线性变换的激活函数,让状态数值保持在合理范围。
时序演化建模
城市的生活是有节奏的:工作日的早高峰拥堵、周末商圈的人潮涌动、节假日的人口迁徙。这些规律不是一天形成的,而是长期历史累积的结果。动态图的时序演化建模,就是想教会模型识别这种“城市节奏”——不是孤立地看某一时刻,而是把历史串成一条线来理解。
一种主流做法是使用循环神经网络,比如 LSTM,逐个读取时刻的图快照。每一步,模型都会把“当前时刻的图信息”和“上一步留下的记忆”组合起来,生成新的全局状态。用矩阵形式表示,所有节点的状态合起来是 \(\mathbf{H}^{(t)}\),更新方式为:
除了循环编码,注意力机制也是时序建模中的常用工具:模型不再机械地逐帧读取,而是自己决定“哪一帧更重要”。就好比球赛剪辑师不会平均分配镜头,而是把重心放在最后十分钟的关键进攻上。时序演化建模的意义,正是让模型不只看见城市“现在长什么样”,更理解它“怎么走到这一步”。
- 全局状态矩阵\(\mathbf{H}^{(t)}\) 把所有节点的状态向量拼在一起,相当于城市整份“居民小传合集”。
- 上一时刻记忆\(\mathbf{H}^{(t-1)}\) 是模型对过去全部历史压缩后的记忆,相当于记者脑中“此前所有报道的摘要”。
- 当前图聚合\(\hat{G}_t \mathbf{H}^{(t-1)}\) 表示用当前时刻的图结构,对历史状态做一次“空间刷新”,让关系变化先影响邻居状态。
- LSTM 更新\(\text{LSTM}\) 通过门控机制决定哪些历史信息值得保留、哪些应当遗忘,实现滚动式时序编码。
动态嵌入方法
如果给每个居民制作一张随时更新的“身份名片”,上面写着他目前的职业、活跃圈子和近期动向,这张名片就是一个动态图嵌入。嵌入的本质是把节点投射到低维向量空间,而动态图嵌入强调:这个向量不是一成不变的,它跟着时间走。
从方法上看,动态嵌入大致分成两条路线。第一条关注“拓扑演化”:用图注意力、图自编码器等结构模型捕捉邻居集合的逐步变化,比如谁新加入了谁的圈子;第二条关注“时间演化”:用循环网络或时间窗口处理节点在时间线上的轨迹,比如一个人从“潜水用户”慢慢变成“活跃博主”。两条路线最终都会汇合到同一个目标——为每个节点、每个时刻产出一个低维向量:
有了这张“流动名片”,下游任务才能精准运作:推荐系统在合适的时机把有共同兴趣的人互相引荐,风控系统在某个账户状态突变时及时发出警报。名片是动态的,因为人总是在变;嵌入是动态的,因为图一直在演化。
- 节点嵌入\(z_v^{(t)}\) 是节点 \(v\) 在时刻 \(t\) 的最终嵌入向量,相当于居民此刻的“数字身份名片”。
- 输入状态\(h_v^{(t)}\) 是经过前面节点状态更新与时序建模后的状态向量。
- 编码器\(\text{Encoder}\) 是一个可学习的神经网络,把高维状态压缩成低维、稠密的嵌入。
时序采样策略
如果让你回忆忘忧城最近的变化趋势,你不会把十年前每条街道的变迁都翻出来,而是优先回想最近几个月的关键事件。动态图建模也应遵循这个直觉:时间越近,信息越重要。这种直觉被形式化成“时间衰减”——距离当前时刻越远的边,影响力越小。
在具体模型中,时间衰减通常体现为对边或邻居的权重调整:
时序采样策略还包括“邻域采样”和“时序游走”。邻域采样是每步只选部分邻居做消息传递,减少计算量;时序游走则要求游走路径沿着时间递增的边前进,让采样得到的序列天然保留演化顺序。这就像记者的采访策略:不去翻十年前的旧档案,而是循着最近的人脉线索,一步步还原事件的来龙去脉。
- 边权重\(w(u,v,t)\) 表示边 \((u,v)\) 在时刻 \(t\) 的采样权重,决定这条关系被模型“看重多少”。
- 距现在的时间\(t - t_{uv}\) 是当前时刻与边最后发生时间之间的间隔,相当于“这件事发生了多久”。
- 时间尺度参数\(\tau\) 控制衰减快慢,\(\tau\) 越大,历史信息衰减越慢;\(\tau\) 越小,模型越只关心最近动态。
- 指数映射\(\exp\) 把间隔映射到 \((0,1]\) 区间,最近的事件权重接近 1,越久远越接近 0。
下游任务评估
给忘忧城画了一整套动态地图,怎么判断它画得准不准?最经典的验证方法是“回访预测”:只允许模型看到某个时间点之前的数据,然后让它预测之后会出现的新关系。如果地图真的理解了城市演化规律,它就应该能提前猜中“谁会搬进谁的小区”。这种任务就是链路预测。
链路预测中,模型会给每条候选边打一个“存在可能性”得分。评估这些得分最常用的指标是 AUC(Area Under the ROC Curve),它的数学定义是:
AUC 的通俗含义是:随机抽一条真实边和一条虚假边,模型给真实边打更高分的概率。AUC 越高,说明模型越能分清“会发生的缘分”和“不会发生的偶遇”。除了链路预测,节点分类也是常见评估方式——利用学到的动态嵌入去预测节点的社区归属,检验嵌入是否保留了节点本身的语义信息。
- 正负样本数\(n^+\) 是真实存在的边(正样本)数量,\(n^-\) 是不存在的边(负样本)数量。
- 正样本得分\(\hat{y}_i^+\) 是模型给第 \(i\) 条真实边打出的得分。
- 负样本得分\(\hat{y}_j^-\) 是模型给第 \(j\) 条不存在的边打出的得分。
- 指示函数\(\mathbb{I}(\cdot)\) 在条件成立时取 1,否则取 0,用来统计“正样本比负样本得分高”的次数。
挑战与前景
把动态图方法从论文搬进真实业务,就像把城市测绘从实验室搬到现实世界,困难接踵而至。第一座大山是“城市太大”——忘忧城有千万人口,每秒钟都有新的关系产生,模型如果每次都要重新跑一遍全图,计算资源根本撑不住。这对应动态图的可扩展性挑战:我们需要增量式地更新节点状态,而不是每次从头训练。
第二座大山是“新区没有历史”——新注册的用户、新开通的航线,没有任何历史快照可供参考。这对应冷启动问题:如何利用节点属性、社区先验或相似用户的信息,让“新居民”也能快速获得可靠的嵌入。为了理解动态图模型的训练目标,最常用的损失函数是链路预测损失:
展望未来,动态图建模正从“研究课题”走向“生产组件”:增量式图神经网络、时序游走与大语言模型的结合、可解释的动态演化归因,都是被看好的方向。给一座永远在变化的城市做地图,从来不是一次性工程,而是一项需要持续投入的长效工作——模型要跟上城市的步伐,地图才能永远新。
- 观测边集合\(\mathcal{D}\) 是训练集中真实存在的时间边集合,相当于城里确实发生的熟人关系。
- 嵌入相似度\(z_u^{(t)\top} z_v^{(t)}\) 是两个节点嵌入的内积,数值越大表示它们在此时刻关系越亲密。
- 对数概率\(-\log\sigma(\cdot)\) 把相似度变成“这条边不该是负样本”的惩罚,边越假,损失越大。
- 求和优化对所有正样本求和并最小化 \(\mathcal{L}\),等价于让真实相连的节点嵌入在对应时刻更靠近。
AI 应用场景
社交网络好友推荐
阶段:特征表示学习(链路预测)
解决的问题:传统推荐系统把每个用户“定格”在某一个时间点,看着好友列表做推荐,无法感知关系从“陌生”到“熟络”的渐进过程。动态图把关注、互动、聊天等行为按时间戳记录下来,让模型在每次更新中体会用户兴趣的变化,从而预测“下一步最可能成为好友”的关系边。
具体案例:某短视频社区用动态图嵌入作为召回特征,对用户近两周的互动序列建模,在 A/B 实验中,新用户的好友推荐点击率提升了约 15%。
金融交易反欺诈
阶段:异常检测与动态监测
解决的问题:静态交易图只呈现“谁转给了谁”的结果,看不出账户“潜伏—试探—爆发”的行为节奏,很多欺诈账户直到活动末期才被识别。动态图跟踪每笔交易发生时账户状态的变化,让节点的状态向量随交易行为实时刷新,从而更早暴露异常模式。
具体案例:银行风控团队将千万级流水构建成动态交易图,配合时间窗口和节点状态更新,在数分钟内标记出多个疑似洗钱团伙,识别时效和准确率显著优于传统规则引擎。
城市交通流量预测
阶段:时空建模与时序预测
解决的问题:路段的拥堵关系是随时间变化的,早晚高峰、事故封路都会改变路网的“有效连接”。静态图模型对这类突变反应迟缓,而动态图用快照序列加时序模型,让每个路段的嵌入跟随邻居的拥堵状态持续演化。
具体案例:某导航平台以小时为粒度构建城市路网动态图,预测未来 15–60 分钟的拥堵等级,结果显示导航 ETA 的平均偏差下降约 8%。
Python 演示
"""动态图表示学习:基于快照的节点状态演化示例"""import numpy as np def gen_dynamic_graph(n=12, steps=5, p_add=0.25, p_rm=0.2): """生成一个随时间演化的动态图序列(邻接矩阵列表)""" rng = np.random.default_rng(42) A = (rng.random((n, n)) < 0.2).astype(float) A = np.triu(A, 1) + np.triu(A, 1).T seq = [A.copy()] for _ in range(steps - 1): A2 = A.copy() for i in range(n): for j in range(i + 1, n): if A[i, j] > 0 and rng.random() < p_rm: A2[i, j] = A2[j, i] = 0 elif A[i, j] == 0 and rng.random() < p_add: A2[i, j] = A2[j, i] = 1 A = A2 seq.append(A.copy()) return np.stack(seq) def window_aggregate(seq, t, tau=2): """聚合最近 tau 步,得到当前时刻的加权邻接矩阵(时间窗口)""" start = max(0, t - tau + 1) agg = np.zeros_like(seq[0]) for k in range(start, t + 1): age = t - k agg += np.exp(-age) * seq[k] return agg def update_states(H, A_agg, W, b): """节点状态更新:聚合邻居信息并按可学习权重变换""" return np.tanh(A_agg @ H @ W + b) def main(): seq = gen_dynamic_graph() n, steps = seq.shape[1], seq.shape[0] H = np.random.randn(n, 4) * 0.01 W = np.eye(4) * 0.5 b = np.zeros(4) for t in range(steps): A_agg = window_aggregate(seq, t) H = update_states(H, A_agg, W, b) edges = int(A_agg.sum() / 2) print(f"t={t} 加权边数={edges:.0f} 状态均值={H.mean():.4f}") if __name__ == "__main__": main()
A = (rng.random((n, n)) < 0.2).astype(float)以 20% 的概率随机生成初始邻接矩阵,作为城市第一张地图。A = np.triu(A, 1) + np.triu(A, 1).T只保留上三角再镜像,确保生成的是无向图的对称邻接矩阵。seq.append(A.copy())把当前时刻的图快照存入序列,构成“城市图册”。agg += np.exp(-age) * seq[k]用指数衰减给更早的快照打折扣,距离当前越远权重越小。return np.tanh(A_agg @ H @ W + b)把邻居状态聚合结果经过非线性激活,得到节点新状态。H = update_states(H, A_agg, W, b)每个时刻先聚合窗口内历史信息,再更新节点状态,形成时序演化闭环。
常见误区
误区以为时间窗口开得越大、塞进去的历史快照越多,模型掌握的信息就越全,效果自然更好。于是把窗口从 3 调到 30,模型却越来越不灵敏。
正解窗口太大,相当于让模型记住十年前的城区街景,真正说明未来走向的“近期变化”反而被淹没在旧数据里。动态图建模要做的是“恰当长度”的记忆——窗口大小需要结合业务周期调节,比如交易数据看分钟级、社交关系看周级,而不是盲目堆历史。
为何常见:人们习惯性觉得“数据越多越不亏”,却忽略了图数据天然带有时间老化特性——旧信息的价值会衰减。
误区以为只要在每个时间步独立跑一遍静态图嵌入,再把结果拼起来,就得到了动态图嵌入。这样操作简单,却得不到真正的演化表示。
正解独立训练会让相邻时刻的嵌入处于不同坐标系,就像两台相机分别拍同一个街区,拍出来的照片却对不齐。动态方法通过共享参数或时间状态传递,让相邻时刻的嵌入彼此连续、可比,这才是“演化”的意义所在。
为何常见:静态图嵌入工具普及太广,开发者容易先入为主,忽视了动态图的核心在于跨时间的信息共享与状态传播。
误区觉得只要给近期边乘以一个大权重、给远期边乘一个小权重,模型就已经“会建模时间”了。
正解时间衰减只是时序建模的一种简化先验,而不是全部。交易网络中,几秒前的边和几小时前的边含义截然不同;衰减参数 \(\tau\) 选得不合适,模型要么退化回静态图,要么过于敏感。真正完备的时序建模还需要循环编码、注意力机制和合理的采样策略协同工作。
为何常见:指数衰减公式只有一个参数,看起来简单,容易让人低估时间建模本身的复杂度。
误区看到链路预测的 AUC 指标很高,就认为这个动态嵌入方法在所有场景都比其他方案强。
正解AUC 描述的是排序质量,只是评估体系里的一环。就像只走访城市一条主干道,不能断言整个城市交通顺畅。评估动态图嵌入时,还要看冷启动节点的表现、嵌入随时间的稳定性、计算开销和落地成本,综合判断才靠谱。
为何常见:论文和榜单偏爱 AUC 这种单一数字指标,容易让人忽略真实业务中多维度的评估需求。
面试题
Q1. 动态图与静态图的核心区别是什么?
- A.动态图包含时间维度与演化信息← 正确答案
- B.动态图只比静态图多了标注
- C.动态图不支持节点属性特征
- D.静态图才有邻接矩阵结构
答案:A。动态图把时间维度纳入图数据,节点和边会随时间演化,这是它与静态图的根本区别。B、C、D 都属于常见误解:动态图不仅支持节点属性,也完全可以使用邻接矩阵,只是这些矩阵会随时间变化。用城市作比,静态图是一帧街景照片,动态图是一部持续更新的城市纪录片。
Q2. 快照图序列中,时间窗口的主要作用是什么?
- A.决定模型回看多近的历史情况← 正确答案
- B.决定节点嵌入向量的维度大小
- C.决定随机游走的步数设置
- D.决定链路预测的最终得分
答案:A。时间窗口决定模型从历史快照序列中读取多长一段信息,直接影响模型能否捕捉到有效演化信号。B 是嵌入维度问题,C 是采样策略问题,D 是任务输出问题,都与时间窗口无关。就像城市摄影的不同快门节奏,窗口越合理,拍摄到的趋势越准确。
Q3. 节点状态更新中,邻居消息传递的核心作用是什么?
- A.让节点吸收周围环境的变化← 正确答案
- B.让所有节点更新成同一状态
- C.让边权重归一到固定范围
- D.让嵌入空间自动降低维度
答案:A。消息传递让每个节点从邻居那里收集信息,从而感知周围环境的变化并更新自身状态。B 把聚合误解为同化,C 是归一化的目标,D 是降维问题,均与消息传递无关。生活在城市里的每个居民,都会受朋友动态影响,这正是节点状态更新的意义。
Q4. 在时序演化建模中,LSTM 的主要角色是什么?
- A.压缩历史状态并滚动预测← 正确答案
- B.完全替代邻接矩阵做训练
- C.删除旧边以降低计算量
- D.将节点标签转为连续向量
答案:A。LSTM 通过门控机制把历史状态压缩成记忆并滚动更新,让模型在长时序中记住重要演化信息。B 错在邻接矩阵仍是核心输入,C 是采样层的工作,D 是嵌入层的工作。它就像城市档案员,既记得老格局,又随时更新新地图。
Q5. 时间衰减公式 \(w=e^{-\Delta t/\tau}\) 中,参数 \(\tau\) 越大说明什么?
- A.历史信息影响力衰减得越慢← 正确答案
- B.历史信息影响力衰减得越快
- C.边的初始权重变得越大
- D.边的初始权重变得越小
答案:A。\(\tau\) 是时间尺度参数,\(\tau\) 越大,指数衰减越平缓,意味着较久以前的事件仍保留较高权重;\(\tau\) 越小,模型越只关心眼前的数据。C、D 描述的是边权重初始值,不受 \(\tau\) 控制。这就像城市记忆:\(\tau\) 大的人对老街念念不忘,\(\tau\) 小的人只记得昨天发生了什么。
Q6. 链路预测中,AUC 指标描述的是什么?
- A.正样本得分高于负样本的比例← 正确答案
- B.预测图中边的总数量占比
- C.节点嵌入向量间的平均距离
- D.模型训练轮数的收敛速度
答案:A。AUC 表示随机抽取一条真实边和一条虚假边时,真实边得分更高的概率。它衡量的是一种排序质量,而非边数、距离或训练速度。类比城市预测:AUC 高,说明模型能分清“哪些人际关系会成真”,而不是只看地图上画了多少条线。
Q7. 动态图嵌入中的“冷启动”问题指的是什么?
- A.新节点缺少历史数据难以嵌入← 正确答案
- B.初始节点太少导致严重过拟合
- C.时间窗口过小导致信息稀疏
- D.模型损失函数收敛速度过慢
答案:A。冷启动指新加入的节点在历史快照中没有出现,模型无法通过时间演化获得它的可靠表示。B 是数据规模问题,C 是窗口配置问题,D 是优化问题,均不等同于冷启动。就像新搬进忘忧城的居民没有过去的社交记录,要预测他的行为,只能借助属性或相似老住户的信息。
Q8. 下列哪些是常见的动态图建模策略?
- A.使用循环网络编码时序信息← 正确答案
- B.使用图注意力聚合邻居信息← 正确答案
- C.对全图直接做奇异值分解
- D.使用时序游走采样演化路径← 正确答案
答案:ABD。循环网络负责时序编码,图注意力负责邻域聚合,时序游走负责采样带时间顺序的路径,三者都是动态图建模的常用工具。而直接对全图做奇异值分解是静态降维方法,虽然历史上有过应用,但它不天然包含时间演化机制,自然不属于常见动态建模策略。
Q9. 下列哪些做法能缓解动态图模型的可扩展性压力?
- A.对大规模图使用邻居采样← 正确答案
- B.每个时刻重新训练全模型
- C.使用增量式节点状态更新← 正确答案
- D.用注意力关注全部历史边
答案:AC。邻居采样能显著减少每步消息传递的计算量,增量式状态更新让模型不必重新训练整个图,两者都是缓解可扩展性压力的有效手段。而每个时刻都重训全模型只会让开销翻倍,关注全部历史边则会让计算复杂度随时间线性增长,与可扩展性目标背道而驰。
Q10. 评估动态图嵌入质量时,常见的下游任务有哪些?
- A.链路预测与时序边预测← 正确答案
- B.节点分类与社区发现← 正确答案
- C.图的可视化与聚类分析← 正确答案
- D.数据的版权与配额管理
答案:ABC。链路预测和时序边预测用于检验模型对未来关系的判断力,节点分类和社区发现用于检验嵌入是否保留语义,可视化和聚类分析帮助判断嵌入空间的分布结构,这三类都是常见评估手段。数据版权与配额管理属于业务治理问题,与嵌入质量评估无关。