想象你是一位新上任的社区观察员,被派到一座有十万居民的城市,要在三天内摸清这座城市的脾气。你当然不可能和每个人握手聊天——时间不够,信息也太庞杂。但你很快发现一个窍门:每个居民都有自己的小圈子——广场舞队、棋牌室、夜跑团、母婴群。一个人常混哪个圈子、圈子里谁说了算、圈子和圈子如何勾连,把这些线索拼在一起,足以让你对每个人甚至整座城市形成准确判断。 图神经网络中的“子图表示”正是这种思路:与其让模型盯着整张巨大无比的图不知所措,不如先提取每个节点周围的局部小结构(子图),把“这个小圈子长什么样”编码成一组数字,再拼出对全图的理解。它是图池化家族中的重要一员,专门增强模型对局部拓扑模式的感知,是节点分类与链路预测等任务的有力武器。这篇文章带着你从“朋友圈”出发,一步一步建立对子图表示学习的完整直觉。

岗位关联

理解子图表示,是掌握图神经网络特征工程与图池化设计的关键一步。它能帮你解决真实图数据上的节点分类与链路预测难题,是图模型工程师提升建模能力与业务价值的必备技能。

目录
  1. 可视化演示
  2. 子图基础概念
  3. 子图采样策略
  4. Ego网络
  5. 子图编码方法
  6. 全图融合机制
  7. 节点分类应用
  8. 链路预测应用
  9. 实践挑战
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

本节配有交互动效(进入视口后自动加载,约 3KB)。

k\u8DF3\u90BB\u57DF\u91C7\u6837: \u4EE5\u76EE\u6807\u8282\u70B9\u4E3A\u4E2D\u5FC3\u63D0\u53D6\u5C40\u90E8\u5B50\u56FE \u91C7\u6837\u7B56\u7565\u5BF9\u6BD4GNN\u7F16\u7801\u5668 (Message Passing)\u5B...\u91C7\u6837\u7B56\u7565\u5BF9\u6BD4GNN\u7F16\u7...</sp...

子图基础概念

观察员的第一课,是学会“切豆腐”。城市有十万居民,你不可能一口吞下,但可以把目光锁定在市民小周身上:圈出他常出没的三家店、常聚的五个朋友。这一小块“熟人豆腐”,就是社交网络里的一张子图。

图论中,一张完整的图 G 由节点集合 V 和边集合 E 构成。子图 S 是从中选取一部分节点 V_s,再配上这些节点之间原有的边 E_s,组成的一个更小的图。它有一个硬性约束:E_s 里每条边的两个端点都必须属于 V_s,否则边就会“悬空”,不再是一张合法的图。

为什么研究子图?因为一张图的“性格”藏在局部拓扑里:一个人是社交达人(度很高)、挤在铁三角小团体里(聚类系数高),还是连接两大社区的桥梁(中介性高),这些身份信号只需要看他周围一小块区域就能读出。子图表示的目标,正是把这种局部拓扑模式变成机器可用的特征。

所以子图不是随手乱切的豆腐块,而是精心挑选的“社区观察窗口”。窗口切得好,一个人的社会角色乃至一座城市的性格,都能从这块小豆腐里看出门道。

S=(Vs,Es),Vs⊆V,Es⊆E\displaystyle S = (V_s, E_s), \quad V_s \subseteq V, \quad E_s \subseteq E
子图就是在不破坏图的连通结构的前提下,从整张图中精心切出的一小块“熟人豆腐”。
  1. 子图的节点集合\(V_s\) 表示从原图节点 \(V\) 中选出的一个子集,可以少但不能多,更不能出现 \(V\) 里不存在的节点。
    Vs⊆VV_s \subseteq V
  2. 子图的边集合\(E_s\) 中每条边的两个端点都必须落在 \(V_s\) 内,这是子图合法性的核心约束。
    Es⊆EE_s \subseteq E

子图采样策略

广场舞队有六十人,逐一面谈要花三小时;棋牌室只有二十人,二十分钟就足够。聪明的观察员绝不会对每个圈子都做全面普查,而是先抽样摸底。子图采样,就是在大图中挑出有代表性的节点和边来构成子图的过程。

最简单的是随机采样:每个节点以同等概率被选入子图。实现只需一行随机数,但缺陷明显——社交网络分布极不均匀,随机抽样的节点常常扎堆在几个“网红”聚集区,而连接两个社区的关键桥梁节点却可能被漏掉。

因此工程实践更常用邻居采样:从目标节点出发,沿着边向外扩展,有选择地保留前若干跳邻居;同时配合规模控制,例如每跳最多保留 10 个邻居,避免大 V 节点把子图撑爆。

抽样是一门手艺活:既要省钱(控制规模),又要看得准(保留关键结构)。好采样就像聪明的观察员——不贪多,但每一个样本都打在要害上。

P(v∈Vs)=∣Vs∣∣V∣\displaystyle \mathbb{P}(v \in V_s) = \frac{|V_s|}{|V|}
随机采样下,每个节点入选的概率等于子图规模与原图规模之比——听起来公平,却容易漏掉关键结构。
  1. 目标子图规模\(|V_s|\) 是计划采样的节点总数,通常远小于原图规模
    ∣Vs∣≪∣V∣|V_s| \ll |V|
  2. 入选概率随机采样中每个节点被选中的概率等于 \(|V_s| / |V|\),概率相同但结构代表性不足
    P(v∈Vs)=∣Vs∣∣V∣\mathbb{P}(v \in V_s) = \frac{|V_s|}{|V|}

Ego网络

盯住小周之后,观察员把他的朋友、朋友的朋友全都列了出来。这张以“我”为中心、不断向外蔓延的熟人网络,社会学里叫自我网络,图论中称为 Ego 网络。

Ego 网络的定义极其自然:给定中心节点 v 和跳数 k,它包含 v 以及所有到 v 最短距离不超过 k 的节点。k=1 时是直接好友圈,k=2 时扩展到好友的好友,层级概念与“朋友圈”完全对应。

多跳扩展会带来一个经典问题——规模爆炸。假如平均每人有 200 个好友,两跳子图就接近 4 万个节点。所以实践中 k 通常取 2 或 3,并配合上一节的采样策略控制规模。既要看得远,又不能看得太贵。

Ego 网络把抽象的“朋友圈”变成了可计算、可比较的数学对象。从此观察员的视野有了刻度:几跳,就是看得多远。

Nk(v)={ u∣d(v,u)≤k }\displaystyle \mathcal{N}_k(v) = \{\, u \mid d(v, u) \le k \,\}
Ego 网络把所有到中心节点距离不超过 k 的节点收进一个“朋友圈”,是子图表示最常用的观察窗口。
  1. 最短距离\(d(v, u)\) 表示从 v 到 u 经过的最少边数,即图中两点之间的距离
    d(v,u)=min⁡{ 边数∣v⇝u }d(v, u) = \min\{\, \text{边数} \mid v \leadsto u \,\}
  2. 集合含义把所有满足 \(d(v, u) \le k\) 的节点 u 收集起来,就得到 k 跳 Ego 网络
    Nk(v)={ u∣d(v,u)≤k }\mathcal{N}_k(v) = \{\, u \mid d(v, u) \le k \,\}

子图编码方法

圈子找好了,怎么用一句话概括“小周的圈子”?观察员提炼三个指标:圈子有多少人、平均每人认识几个、有多少铁三角。子图编码做的正是类似的事——把子图结构变成一组数字向量。

具体分两步:先提取结构特征——每个节点的度数、聚类系数、是否为中心节点;再把这些结构特征与节点自带的属性特征拼接,最后通过子图池化(READOUT)把子图内所有节点向量汇总成一个固定长度的向量。

最常见的 READOUT 是平均池化:所有节点向量逐维求平均。此外还有最大池化(保留最强信号)和求和池化(保留规模信息)。选哪种取决于任务:平均池化稳定,最大池化对极端特征敏感,求和池化则能区分圈子的大小。

编码就是给圈子画像。画像画得好不好,直接决定下游分类与预测的天花板——机器看不到圈子,只能看到向量。

hS=READOUT({ hv∣v∈Vs })=1∣Vs∣∑v∈Vshv\displaystyle h_S = \text{READOUT}\left(\{\, h_v \mid v \in V_s \,\}\right) = \frac{1}{|V_s|} \sum_{v \in V_s} h_v
平均池化把子图里所有节点向量的每一维分别求均值,最后压缩成一个代表整个圈子的向量。
  1. 节点特征向量图神经网络为每个节点输出一个 \(d\) 维向量 \(h_v\),携带节点自身与邻居的信息
    hv∈Rdh_v \in \mathbb{R}^d
  2. 取均值将子图内所有 \(h_v\) 逐维相加,再除以节点数 \(|V_s|\)
    1∣Vs∣∑v∈Vshv\frac{1}{|V_s|} \sum_{v \in V_s} h_v
  3. 子图向量得到的新向量 \(h_S\) 长度仍为 \(d\),是整张子图的一张“画像”
    hS∈Rdh_S \in \mathbb{R}^d

全图融合机制

观察员攒了几百张圈子画像,但还要回答一个更大的问题:这座城市整体是什么气质?答案是把画像拼接起来,同时留意圈子之间的连接方式——这就是从局部到全局的融合。

常见做法是层次建模:先为每个节点提取子图表示,再通过池化把这些子图表示汇总成图级表示;或者把子图表示当作新的节点特征,送进下一层网络继续传播。无论哪种,都绕不开一个难题:不同子图的贡献不同——核心商圈的小圈子和城市边缘的孤岛,分量当然不一样。

注意力加权机制因此登场:为每个子图学习一个权重 α,重要的圈子权重高,冗余的圈子权重低;权重经 softmax 归一化后总和为 1,还自带可解释性——模型可以告诉你它最看重哪个圈子。

融合就像把散落的拼图按重要程度摆回正确位置——既保留每个朋友圈的细节,又不丢城市的大格局。

hfinal=∑i=1mαihSi,αi=exp⁡(w⊤hSi)∑j=1mexp⁡(w⊤hSj)\displaystyle h_{\text{final}} = \sum_{i=1}^{m} \alpha_i h_{S_i}, \quad \alpha_i = \frac{\exp(w^\top h_{S_i})}{\sum_{j=1}^{m} \exp(w^\top h_{S_j})}
注意力融合先给每个子图打一个“重要分”,再用 softmax 归一化成权重,最后加权求和得到全局表示。
  1. 打分向量\(w\) 是可学习的参数向量,在训练中自动学会如何为子图画像 \(h_{S_i}\) 打分
    w∈Rdw \in \mathbb{R}^d
  2. softmax 归一化将得分 \(\exp(w^\top h_{S_i})\) 除以所有得分之和,得到总和为 1 的权重
    αi=exp⁡(w⊤hSi)∑j=1mexp⁡(w⊤hSj)\alpha_i = \frac{\exp(w^\top h_{S_i})}{\sum_{j=1}^{m} \exp(w^\top h_{S_j})}
  3. 加权求和按权重组合全部子图表示,得到最终全局向量
    hfinal=∑i=1mαihSih_{\text{final}} = \sum_{i=1}^{m} \alpha_i h_{S_i}

节点分类应用

画像齐了,开始猜人!观察员看小周的圈子:程序员浓度高、深夜活跃、聊天记录满是算法关键词——他是程序员的概率极高。节点分类任务就是如此:根据节点及其周边子图的特征预测标签。

只靠节点自身特征的模型(如多层感知机)只能利用孤立属性,信息稀疏得可怜;引入子图表示之后,模型同时读到“节点是谁”(自身特征)与“节点混什么圈子”(局部拓扑),分类性能显著提升。

数学上,把子图增强后的节点特征 \(h_v^{\text{local}}\) 送入一个线性分类层,再接 softmax,就得到各个类别的概率。

分类的胜负手往往不在模型多深,而在特征看得多远。子图让模型的眼光从“一个人”延伸到“一个人周围的一整张网”。

y^v=softmax(Whvlocal+b)\displaystyle \hat{y}_v = \text{softmax}\left( W h_v^{\text{local}} + b \right)
节点分类的输出是一个概率分布:对每个类别给出置信度,取最大值对应的类别作为最终预测。
  1. 增强特征\(h_v^{\text{local}}\) 是融合了自身特征与子图(Ego 网络)编码后的节点向量
    hvlocal=Combine(hv,hNk(v))h_v^{\text{local}} = \text{Combine}\left(h_v, h_{\mathcal{N}_k(v)}\right)
  2. 线性映射权重矩阵 \(W\) 与偏置 \(b\) 把特征投影到类别数 \(C\) 的空间
    W∈RC×d,b∈RCW \in \mathbb{R}^{C \times d}, \quad b \in \mathbb{R}^{C}
  3. 概率输出softmax 把得分变为总和为 1 的概率,最大的分量就是预测类别
    y^v∈RC,∑c=1Cy^v,c=1\hat{y}_v \in \mathbb{R}^{C}, \quad \sum_{c=1}^{C} \hat{y}_{v,c} = 1

链路预测应用

小周和小李都爱去同一家深夜面馆,又都在同一个技术群潜水,却互不相识。观察员判断:两人的圈子高度重叠,他们很可能早就该认识了。这就是链路预测——预测两个节点之间是否存在或即将出现一条边。

传统方法手工计算共同好友数、Jaccard 系数等指标,依赖人工设计且覆盖不全。子图表示的做法更优雅:分别提取两个节点的 Ego 网络,编码成向量,再计算相似度作为连边得分。圈子越像,越可能连边。

相似度函数常用余弦相似度:把两个子图向量夹角的余弦值作为得分,取值区间为 [-1, 1],实现简单且几何意义直观。配合负采样构造负样本对,就能把链路预测变成标准的二分类问题。

从两个人的朋友圈结构,推演出“尚未发生的相识”——这正是子图表示在好友推荐中大显身手的底层逻辑。

Score(u,v)=hN(u)⊤hN(v)∥hN(u)∥ ∥hN(v)∥\displaystyle \text{Score}(u, v) = \frac{h_{\mathcal{N}(u)}^\top h_{\mathcal{N}(v)}}{\| h_{\mathcal{N}(u)} \| \, \| h_{\mathcal{N}(v)} \|}
余弦相似度衡量两个“朋友圈画像”的方向有多一致:夹角越小得分越接近 1,说明两人圈子越像。
  1. 双方的子图向量\(h_{\mathcal{N}(u)}\) 与 \(h_{\mathcal{N}(v)}\) 分别是对 u 和 v 周围子图编码得到的向量
    hN(u)=READOUT({ hx∣x∈N(u) })h_{\mathcal{N}(u)} = \text{READOUT}\left(\{\, h_x \mid x \in \mathcal{N}(u) \,\}\right)
  2. 点积与模长分子是两向量点积,分母是两向量模长之积,起到归一化的作用
    hN(u)⊤hN(v)∥hN(u)∥ ∥hN(v)∥\frac{h_{\mathcal{N}(u)}^\top h_{\mathcal{N}(v)}}{\| h_{\mathcal{N}(u)} \| \, \| h_{\mathcal{N}(v)} \|}

实践挑战

理想很丰满:给城市一百万人每人画一张三跳朋友圈。现实很骨感:三跳子图的平均规模以百万计,内存和算力双双告急。观察员必须做出取舍,这个取舍贯穿子图表示的全部工程实践。

第一道坎是计算效率。为每个节点提取子图都要做一次广度优先遍历,邻居数量高速膨胀。工业界常用固定规模采样:每跳只保留固定数量的邻居(比如 5 个),把子图规模钉死在常数范围。第二道坎是超参数选择:跳数 k 与采样数如何配比,需要在验证集上反复实验。

复杂度直观地看,跳数为 k、平均度为 d 时,Ego 网络规模约为 d 的 k 次方。这个指数爆炸公式是所有采样优化策略的出发点——控制了它,就控制了成本。

观察员的智慧不在于追求全知,而在于够用就好。子图表示的真谛,正是用有限的计算,换取对局部结构足够深刻的理解。

∣Nk(v)∣≈O ⁣(dk)\displaystyle |\mathcal{N}_k(v)| \approx O\!\left(d^k\right)
平均度 d 的图,k 跳子图规模按 \(d^k\) 增长:每多看一眼,成本就乘以一次平均好友数。
  1. 平均度\(d = 2|E|/|V|\) 是图中每个节点平均连接的边数,代表网络的稠密程度
    d=2∣E∣∣V∣d = \frac{2|E|}{|V|}
  2. 指数增长每增加一跳,子图规模大约乘以 d,所以 k 跳规模量级为 \(O(d^k)\)
    O(dk)O(d^k)

AI 应用场景

社交平台用户职业画像(节点分类)

阶段:特征工程 + 模型训练与预测

解决的问题:传统画像只依赖用户自填资料与发布内容,信息稀疏且约三成用户资料缺失;子图表示把“好友圈结构”也纳入特征,从“你混什么圈子”反推职业,让冷启动用户也能被精准画像。

具体案例:某社交平台为广告推荐打职业标签。仅用个人资料时覆盖率约 30%、准确率 61%;引入 2 跳 Ego 网络编码后,覆盖率提升到约 70%、准确率升至 78%(示意数据),新增用户也能在无资料时获得画像。

电商“拼小圈”好友推荐(链路预测)

阶段:召回 + 排序

解决的问题:协同过滤只依赖购买行为,新用户行为稀疏导致冷启动;子图表示比较两个用户 Ego 圈子的结构相似度,在无行为数据时也能推荐“潜在好友”。

具体案例:在拼团电商的社交化场景中,为新注册用户提取其通讯录图的两跳子图编码,计算与其他用户的余弦相似度,取 Top-K 作为候选再精排,好友转化率相比纯行为协同提升约 12%(示意数据)。

蛋白质功能预测(生物网络)

阶段:模型应用与推理

解决的问题:蛋白质功能由其相互作用网络中的局部交互模式决定,传统序列方法只能编码氨基酸序列,忽视网络拓扑;子图表示直接利用蛋白质相互作用网络(PPI)的局部子图。

具体案例:在 STRING 蛋白质相互作用网络上,对未知蛋白质提取 3 跳子图并编码,送入分类器预测其是否参与特定生物通路,辅助药物靶点筛选,显著缩短湿实验前的候选筛选周期。

Python 演示

python55 行
import networkx as nx  def extract_ego_subgraph(G, center, k):    """Extract k-hop ego subgraph around center node."""    nodes = {center}    frontier = [center]    for _ in range(k):        nxt = []        for u in frontier:            for v in G.neighbors(u):                if v not in nodes:                    nodes.add(v)                    nxt.append(v)        frontier = nxt    return G.subgraph(nodes).copy()  def encode_subgraph(subG, center):    """Encode subgraph into a vector by average pooling."""    feats = []    for node in subG.nodes():        feats.append([            subG.degree(node),            1 if node == center else 0,            nx.clustering(subG, node),            len(list(nx.common_neighbors(subG, node, center))) if node != center else 0        ])    return [sum(col) / len(feats) for col in zip(*feats)]  def predict_link_score(G, u, v, k=2):    """Predict link probability by cosine similarity of ego encodings."""    su = encode_subgraph(extract_ego_subgraph(G, u, k), u)    sv = encode_subgraph(extract_ego_subgraph(G, v, k), v)    dot = sum(a * b for a, b in zip(su, sv))    nu = sum(a * a for a in su) ** 0.5    nv = sum(b * b for b in sv) ** 0.5    return dot / (nu * nv) if nu and nv else 0.0  def main():    G = nx.karate_club_graph()    print("graph:", G.number_of_nodes(), "nodes,", G.number_of_edges(), "edges")    for center in [0, 33]:        sub = extract_ego_subgraph(G, center, 2)        vec = encode_subgraph(sub, center)        print("center", center, "| subgraph nodes:", sub.number_of_nodes(),              "| edges:", sub.number_of_edges(),              "| vector:", [round(x, 2) for x in vec])    print("link score(node0, node33):", round(predict_link_score(G, 0, 33), 4))  if __name__ == "__main__":    main()
目的:用空手道俱乐部社交网络演示“提取 Ego 子图 → 平均池化编码 → 余弦相似度链路预测”的完整子图表示流程。
  1. def extract_ego_subgraph(G, center, k):逐层扩展邻居,提取以 center 为中心、k 跳以内的“朋友圈”子图
  2. return G.subgraph(nodes).copy()调用 networkx 提取子图并复制,避免修改原图
  3. nx.clustering(subG, node)计算聚类系数,度量该节点周边“铁三角”的密集程度
  4. [sum(col) / len(feats) for col in zip(*feats)]平均池化:对特征矩阵逐列求均值,得到子图向量
  5. dot / (nu * nv) if nu and nv else 0.0余弦相似度打分:向量夹角越小得分越高,越可能连边

常见误区

误区提取的子图跳数越多,包含的邻居信息越全,模型效果自然越好。所以我应该把 k 设成 10 甚至更大,反正算力可以堆。

正解跳数增大后,子图规模按 \(d^k\) 指数膨胀,引入大量与中心节点关系微弱的节点,它们不再是信息而是噪声;同时计算开销急剧上升。实践中 k=2 或 3 通常是最佳平衡点,“够用就好”是子图表示的核心工程哲学。

为何常见:人有一种本能——信息越多越好。但图上距离越远的节点与中心的相关性越弱,超过一定跳数后边际收益趋近于零甚至为负。

误区把子图内所有节点的向量取平均,就是完整的子图编码了,其他结构信息都是多余的。

正解均值池化只是 READOUT 的一种基础实现,它忽略了度分布、聚类系数等结构信息。两棵结构完全不同的子图可能得到相同的均值向量。实践中要组合结构特征与注意力加权,才能保留子图的“形状”。

为何常见:图神经网络的消息传递常做均值聚合,初学者容易把“聚合”与“子图编码”混为一谈。

误区随机采样最公平,每个节点被选中的概率一样,所以抽样结果一定具有代表性。

正解图结构高度异质:少数中心节点连接大量边,多数节点处于边缘。均匀随机采样容易把样本集中在稠密区域,或漏掉连接社区的关键桥节点。邻居采样、影响力采样等偏向性策略更能保留结构代表性。

为何常见:统计中简单随机抽样保证无偏的思想深入人心,但图的拓扑非均匀性打破了“每个样本等价值”的前提。

误区预测 A 和 B 是否连边,把 A、B 各自的标签特征喂给分类器就够了,不用管他们周围有什么人。

正解社交网络中的“共同好友”“三角结构”等局部拓扑是连边的最强信号。子图表示把 A、B 周围的小圈子编码成向量,再比较两个圈子的相似度,比单看个体属性精准得多。

为何常见:表格数据的思维惯性——把每个节点当作独立的样本行,忽略了图数据最宝贵的“连接信息”。

面试题

Q1. 子图表示学习的核心目标是什么?

单选题 · easy

  • A.压缩整图以节省存储空间
  • B.编码局部拓扑以增强特征← 正确答案
  • C.完全替代消息传递机制
  • D.消除图中全部的噪声边

答案:B。子图表示学习的核心是提取并编码节点周围的局部拓扑结构(如好友圈模式),从而增强特征表达。压缩整图属于图压缩方向,替代消息传递与去除噪声边都不是子图表示的目标。选项 B 同时点出了“局部拓扑”与“特征增强”两大关键词,最为准确。

Q2. Ego 网络最核心的结构特征是什么?

单选题 · easy

  • A.包含全图所有的节点
  • B.以单个节点为中心← 正确答案
  • C.只包含互不相连节点
  • D.随机选取的节点集合

答案:B。Ego 网络的定义核心是“以某个中心节点为锚,向外扩展 k 跳邻居”。包含全图所有节点就退化为全图;只包含互不相连节点或随机选取节点,都失去了“以某人为中心、向外蔓延”的结构含义。因此正确答案是 B。

Q3. 子图池化 READOUT 的主要作用是什么?

单选题 · easy

  • A.将节点特征汇总成子图向量← 正确答案
  • B.把子图还原成完整全图
  • C.放大子图内的边缘结构
  • D.自动删除低度数的节点

答案:A。READOUT 把子图内所有节点向量汇总成一个固定长度的子图向量,常见操作有平均、最大、求和池化。还原全图、放大边缘结构、删除低度数节点都不是池化的职责。它就像把一堆朋友圈成员信息压缩成一张“圈子画像”。

Q4. 关于子图采样规模控制的说法,正确的是?

单选题 · mid

  • A.子图越大精度必然越高
  • B.扩展跳数应无限增大
  • C.限制规模可降低计算开销← 正确答案
  • D.采样概率与节点度数无关

答案:C。平均度固定时,子图规模随跳数指数膨胀,限制采样规模(如每跳最多取 m 个邻居)能把计算开销控制在常数级别。子图越大精度未必越高,甚至因噪声而下降;跳数无限增大与“概率与度数无关”的说法也都不成立。

Q5. 注意力机制在子图全图融合中的作用是?

单选题 · mid

  • A.使所有子图权重完全相等
  • B.自适应分配子图重要性← 正确答案
  • C.随机打乱子图特征
  • D.彻底消除子图间差异

答案:B。注意力机制为每个子图学习一个权重,重要子图获得更大权重、冗余子图权重被压低,再经过 softmax 归一化。它的本质是“自适应加权”,与完全相等、随机打散、消除差异三种描述都相悖。就像给拼图按重要性排序,而不是撒一把拼图。

Q6. 链路预测中判断两节点是否连边的关键依据是?

单选题 · hard

  • A.子图节点总数是否一致
  • B.子图编码向量的相似度← 正确答案
  • C.两节点 ID 的数值大小
  • D.全图中边的总数量

答案:B。链路预测的关键信号是两个节点周围局部结构的相似程度——共同好友、三角结构等。子图编码把各自朋友圈变成向量,再算余弦相似度作为连边得分。节点总数、ID 大小、全图边数都不是节点对连边概率的有效依据。

Q7. 高中心度节点构建多跳 Ego 网络时面临的关键问题是?

单选题 · mid

  • A.子图规模呈指数级膨胀← 正确答案
  • B.节点特征完全无法定义
  • C.邻接矩阵必然为空矩阵
  • D.图结构会随距离消失

答案:A。高中心度节点(如大 V)邻居数量庞大,两跳 Ego 网络规模约为邻居数的平方,呈指数级膨胀,直接导致内存与算力爆炸。这正是限制跳数与采样规模的根源。其余选项描述的情况在实际图数据中并不会发生。

Q8. 以下哪些属于子图编码可用的结构特征?

多选题 · mid

  • A.节点度数特征← 正确答案
  • B.聚类系数特征← 正确答案
  • C.共同邻居数量← 正确答案
  • D.节点文本信息

答案:ABC。结构特征描述的是图的拓扑性质,节点度数、聚类系数、共同邻居数量都属于这一类,它们反映“圈子的形状”。节点文本信息是内容属性而非结构属性,不属于子图结构编码的范畴。

Q9. 子图表示适合应用于以下哪些任务?

多选题 · mid

  • A.社交网络好友推荐← 正确答案
  • B.图片压缩与像素重建
  • C.蛋白质功能类别预测← 正确答案
  • D.用户职业标签预测← 正确答案

答案:ACD。子图表示利用局部拓扑增强预测,天然适合推荐系统中的好友推荐(链路预测)、生物网络的蛋白质功能预测,以及社交平台用户职业分类(节点分类)。图片压缩属于视觉信号处理,与图结构子图无关。

Q10. 关于子图与全图表示的融合,正确的说法有?

多选题 · hard

  • A.注意力可调节子图重要度← 正确答案
  • B.层次建模是融合方式之一← 正确答案
  • C.融合让局部结合全局上下文← 正确答案
  • D.融合后必须丢弃节点特征

答案:ABC。全图融合的核心是让局部子图特征带上全局上下文,注意力机制可自适应调节各子图权重,层次建模(先局部后全局逐层汇总)也是一种融合思路。融合后通常保留并增强原始节点特征,而不是丢弃它们,因此 D 错误。