想象你刚接到一个特殊的任务:在一所寄宿高中当实习班主任。年级主任交给你一张花名册和一份关系网——谁和谁是室友、谁参加了同一个社团、谁经常一起打球。你只认识三名学生:小明是学霸,小红是运动健将,小刚是文艺青年。而你的任务,是给其余 47 名学生每人贴上一个性格标签。 这看起来像个不可能完成的任务,但年级主任告诉你:这不是考试,这是推理。学生之间的每一次靠近、每一条友谊的连线,都在悄悄传递信息——近朱者赤,同桌是学霸的人多半也在刷题,混文艺社的人更容易写诗。你要做的,就是沿着这张关系网,把三个已知标签缓慢又坚定地扩散到全班。 这正是图节点分类:在由节点(人)和边(关系)构成的图上,用少量已知标签预测绝大多数未知标签。它只使用一点点人工标注,就撬动了整张图的信息,因此被称为“半监督学习的经典战场”。

岗位关联

掌握节点分类,是成为图神经网络工程师的入场券:社交网络用户画像、论文主题标注、金融反欺诈……这些高价值场景,都建立在对“关系即信息”的深刻理解之上。

目录
  1. 可视化演示
  2. 问题定义
  3. 标签传播
  4. GNN基础
  5. 经典模型
  6. 训练评估
  7. 实战应用
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

\u53ef\u89c6\u5316\u5c55\u793a\u56fe\u8282\u70b9\u5206\u7c7b\u4e2d\u7684\u6807\u7b7e\u4f20\u64ad\u3001GNN\u7279\u5f81\u805a\u5408\u4e0e\u5206\u7c7b\u7ed3\u679c\uff0c\u4ea4\u4e92\u5207\u6362\u89c2\u5bdf\u534a\u76d1\u7763\u5b66\u4e60\u4e0b\u6807\u7b7e\u5982\u4f55\u6cbf\u56fe\u7ed3\u6784\u4f20\u64ad\u4e0e\u805a\u5408\u3002

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

\u6807\u7b7e\u4f20\u64ad\u53ef\u89c6\u5316 \u5df2\u6807\u6ce8\u8282\u70b9\u6cbf\u8fb9\u4f20\u64ad\u6807\u7b7e\u81f3\u672a\u6807\u6ce8\u8282\u70b9 \u57fa\u4e8e\u62c9\u666e\u62c9\u65af\u5e73\u6ed1\u5047\u8bbe\u76f8\u90bb\u8282\u70b9\u540c\u7c7b Y(t+1) = A\u00b7Y(t) \u70b9\u51fb\u5207\u6362\u67e5\u770bGNN\u805a\u5408

问题定义

你刚被任命为某高三班的班主任,手里只有一份花名册:50 个学生,你只认识其中 3 个人——小明是“学霸”,小红是“运动健将”,小刚是“文艺青年”。其他 47 人的性格标签是什么?你总不能把每个人叫来面谈一整天。但你有一样宝贝:全班座位表、篮球社群和读书社的名单。你决定从这三条线索入手。

这个“班主任猜标签”的场景,就是机器学习里的图节点分类。学生是“节点”(node),朋友关系是“边”(edge),三个已知标签的人叫“带标签节点”。任务核心是:给定一张图和少量节点标签,预测其余节点的类别。因为只用了极少量标签,所以叫“半监督”——监督信号只有一小部分,剩下的全靠关系推断。

形式化地说,图记为 \(\mathcal{G}=(\mathcal{V},\mathcal{E})\),\(\mathcal{V}\) 是所有节点,\(\mathcal{E}\) 是边集合。节点还自带特征 \(X\),比如学生的出勤率、成绩分布、社团参与次数。我们只拥有部分节点标签 \(\mathcal{V}_L\),目标函数 \(f\) 把每个节点映射到一个类别。

于是问题变成一个“半开卷考试”:答案册只翻开三页,却要让班主任给全班 50 人写评语。这听起来不可能,但朋友圈告诉我们,答案其实写在关系里。

f:(V,E,X)→{0,1,…,C−1}V,满足∀v∈VL: f(v)=yv\displaystyle f:(\mathcal{V},\mathcal{E},X) \to \{0,1,\ldots,C-1\}^{\mathcal{V}}, \quad \text{满足} \quad \forall v \in \mathcal{V}_L:\ f(v)=y_v
这个公式说的是:我们学到一个“画像函数”,它在少数已知答案的学生身上必须与真相一致,但要对全班 50 人生效。
  1. 节点集合 \(\mathcal{V}\)全班学生的集合,每个学生是一个节点。
    V\mathcal{V}
  2. 边集合 \(\mathcal{E}\)学生之间的朋友关系、社团关系,每条边连接两个节点。
    E\mathcal{E}
  3. 特征矩阵 \(X\)每个节点自带的属性,比如成绩、出勤率、参加社团的次数。
    XX
  4. 带标签节点 \(\mathcal{V}_L\)你已经认识的那 3 个学生,他们的性格标签是已知答案。
    VL\mathcal{V}_L
  5. 类别数 \(C\)性格标签的种类,比如“学霸、运动健将、文艺青年”共 3 类。
    CC
  6. 约束条件 \(f(v)=y_v\)画像是“半开卷考试”——答案册只翻开了三页,却要为全班写评语。
    ∀v∈VL: f(v)=yv\forall v \in \mathcal{V}_L:\ f(v)=y_v

标签传播

聪明班主任的第一个办法是“近朱者赤”:小明是学霸,他的同桌小强、篮球队友小亮每天跟他一起刷题,大概率也是学霸圈;而文艺青年小刚的读书社伙伴,多半偏文艺。朋友是什么,你就可能是谁——这是人类最古老的社会直觉,也是标签传播算法的出发点。

标签传播(Label Propagation Algorithm, LPA)把每个节点的类别想象成一股“颜色”:带标签的节点是固定的染料源,未带标签的节点每轮吸收邻居的颜色,再平均一下,如此反复。

每轮迭代后,已标注节点的 \(P\) 要重置为原始标签,防止染料源被大量灰色意见稀释。迭代到全局稳定或达到最大轮数时停止。LPA 不需要训练参数,速度极快;但标签稀缺、图噪声大时,容易让全图染成同一种颜色。

班主任的“近朱者赤”策略很快传遍全班:他先问小强的同桌,再问同桌的闺蜜……一层层往外扩散。圈子越远,猜测越不确定,但只要全班讨论稳定下来,他就在花名册上标注了 47 人的大致画像。

Pv(t+1)=∑u∈N(v)wvu Pu(t)∑u∈N(v)wvu\displaystyle P_v^{(t+1)} = \frac{\sum_{u \in N(v)} w_{vu}\, P_u^{(t)}}{\sum_{u \in N(v)} w_{vu}}
每个节点的新颜色 = 所有朋友颜色的加权平均。朋友的颜色又来自他们的朋友,于是信息像水面波纹一样一圈圈扩散。
  1. 颜色分布 \(P_v^{(t)}\)节点 v 在第 t 轮携带的类别概率向量,比如“六成学霸、四成文艺”。
    Pv(t)P_v^{(t)}
  2. 朋友集合 \(N(v)\)v 的一阶邻居,也就是直接认识的同学。
    N(v)N(v)
  3. 亲密权重 \(w_{vu}\)v 和 u 之间关系的强度,比如一起打球的次数、同桌的时间。
    wvuw_{vu}
  4. 加权平均操作分子是“朋友的色值按亲密程度累加”,分母是“关系总强度”,两者相除得到平均意见。
    ∑u∈N(v)wvuPu(t)∑u∈N(v)wvu\frac{\sum_{u \in N(v)} w_{vu} P_u^{(t)}}{\sum_{u \in N(v)} w_{vu}}

GNN基础

光知道“你和谁玩得好”还不够。班主任还想知道朋友身上具体有什么特质——小强的模考排名、小红参加运动的频率、小刚读过的书单。综合“朋友是谁 + 朋友的特点”,判断才更准。

这就是 GNN 与标签传播的本质区别:LPA 只传播“标签”,GNN 传播“特征”,并且通过可学习的参数决定如何组合。每一层 GNN 让学生“打听”一圈朋友的新特点,再更新自己的画像。一层只问直接朋友,两层可以问到朋友的朋友。

从输入特征 \(h_v^{(0)}=x_v\) 开始,堆叠 k 层后,节点表示就蕴含了 k 跳邻居的信息。最后一层输出经过 softmax 变成类别概率。这就是“消息传递”范式。

班主任把每个学生的“特点清单”装进口袋,见一位朋友就更新一次清单。几轮下来,小明的同桌小强不仅“像学霸”,还带上了“刷题频率高、笔记工整”这些可解释的特征。画像越来越立体。

hv(k)=σ(W(k)⋅AGG⁡({hu(k−1):u∈N(v)∪{v}}))\displaystyle h_v^{(k)} = \sigma \left( W^{(k)} \cdot \operatorname{AGG}\left( \left\{ h_u^{(k-1)} : u \in N(v) \cup \{v\} \right\} \right) \right)
每一层神经网络 = 一次“打听朋友圈”:把自己和朋友的画像汇总,乘上可学习的权重,再过一道激活函数,得到新的自己。
  1. 隐藏画像 \(h_v^{(k)}\)节点 v 在第 k 层得到的特征向量,代表“层层加工后的自我认识”。
    hv(k)h_v^{(k)}
  2. 聚合范围 \(N(v) \cup \{v\}\)朋友集合再加上自己——打听别人意见时,不能把自己的想法弄丢了。
    N(v)∪{v}N(v) \cup \{v\}
  3. 聚合函数 \(\operatorname{AGG}\)可以是求平均、求和、取最大值,不同 GNN 模型在这里分道扬镳。
    AGG⁡(⋅)\operatorname{AGG}(\cdot)
  4. 可学习权重 \(W^{(k)}\)模型通过训练决定“朋友哪些特质更重要”,比如“笔记工整”比“球鞋颜色”更有用。
    W(k)W^{(k)}
  5. 激活函数 \(\sigma\)给画像增加非线性,让模型能表达更复杂的人际规律。
    σ\sigma

经典模型

同一个任务,不同班主任风格各异:GCN 像“一视同仁的平均派”,把所有朋友的意见等权平均;GAT 像“偏心派”,觉得小明的意见比路人甲重要得多;GraphSAGE 像“抽样派”,每轮只随机问几个朋友,省时省力。

它们是三种经典的 GNN 架构,区别就在聚合函数 \(\operatorname{AGG}\) 和权重设计上。GCN 通过归一化的邻接矩阵实现对称平均;GAT 用注意力机制动态分配邻居权重;GraphSAGE 通过采样和拼接让大图训练成为可能。

GAT 把平均换成注意力权重:两个节点越“投缘”,它们之间的边权重越大,重要朋友的意见被放大。GraphSAGE 则对邻居随机采样固定数量,把“认识所有人”变成“抽样问几个人”,让亿级节点的大图也能训练。

平均派、偏心派、抽样派各有所长:小班(小图)用 GCN 稳;朋友鱼龙混杂时用 GAT 抓重点;几万人的大年级(大图)就用 GraphSAGE 抽样。班主任选对风格,判断就快又准。

H(l+1)=σ(D~−12A~D~−12H(l)W(l))\displaystyle H^{(l+1)} = \sigma \left( \tilde{D}^{-\frac12} \tilde{A} \tilde{D}^{-\frac12} H^{(l)} W^{(l)} \right)
GCN 的“平均派”哲学:每个节点把朋友的特征平均一遍,但先做归一化,防止“朋友特别多”的学生嗓门太大盖过别人。
  1. 自环邻接矩阵 \(\tilde{A}\)在原邻接矩阵上加单位矩阵,让每个节点聚合时包含自己。
    A~=A+I\tilde{A} = A + I
  2. 度矩阵 \(\tilde{D}\)对角线记录每个节点的度数(朋友数量),用于归一化。
    D~\tilde{D}
  3. 对称归一化 \(\tilde{D}^{-\frac12} \tilde{A} \tilde{D}^{-\frac12}\)同时压缩“朋友多的节点”和“朋友多的邻居”,让特征尺度稳定。
    D~−12A~D~−12\tilde{D}^{-\frac12} \tilde{A} \tilde{D}^{-\frac12}
  4. 表示矩阵 \(H^{(l)}\)第 l 层所有节点的隐藏画像拼成的矩阵,一行一个学生。
    H(l)H^{(l)}
  5. 权重矩阵 \(W^{(l)}\)可学习的线性变换,决定保留哪些特质。
    W(l)W^{(l)}

训练评估

班主任的“画像”到底准不准?不能自说自话。他留出几个已知标签的学生当“模拟考试”:先让模型在已知圈子里学习(训练),再在留出的圈子里打分(测试),看猜中多少。

半监督训练中,损失函数只计算带标签节点 \(\mathcal{V}_L\) 上的误差,而图上的所有节点(包括无标签节点)都参与信息传播。测试时用一批从未参与训练的标签节点计算准确率,防止“把答案背下来”。

评估阶段再看准确率:

“模拟考”成绩告诉班主任方法靠不靠谱。如果他压中 9 成学生的性格,就有信心给全班写评语;如果只有 6 成,就得换一种“问朋友”的风格,或者多收集一点朋友特征。评估,是让直觉变成科学的那把尺子。

L=−∑v∈VL∑c=1Cyv,c ln⁡y^v,c\displaystyle \mathcal{L} = -\sum_{v \in \mathcal{V}_L} \sum_{c=1}^{C} y_{v,c}\, \ln \hat{y}_{v,c}
损失函数就像平时作业的错题扣分:只在“标准答案已知”的学生身上打分,预测错了就扣分,模型据此修正策略。
  1. 测试集合 \(\mathcal{V}_{\mathrm{test}}\)训练中从未见过的一批带标签节点,充当“模拟考试”。
    Vtest\mathcal{V}_{\mathrm{test}}
  2. 指示函数 \(\mathbb{I}(\cdot)\)猜对为 1,猜错为 0,是一个开关函数。
    I(y^v=yv)\mathbb{I}(\hat{y}_v = y_v)
  3. 求平均把开关结果加起来除以测试人数,得到“猜对的比例”,即准确率。
    1∣Vtest∣∑v∈VtestI(⋅)\frac{1}{|\mathcal{V}_{\mathrm{test}}|} \sum_{v \in \mathcal{V}_{\mathrm{test}}} \mathbb{I}(\cdot)

实战应用

学期结束,班主任把自己的方法写成了一套“学生测评系统”,被年级组推广:学生是用户,朋友关系是关注关系,标签从“是否沉迷游戏”变成“是否是垃圾账号”。

在真实业务中,图节点分类应用极广:社交网络识别营销号、论文库按主题分类、金融风控识别欺诈团伙。共同点是都能建模成“图 + 少量标签”的问题。

标准工程流程是:① 构图(定义节点和边,如用户关注、论文引用);② 特征工程(统计度、文本嵌入等);③ 选模型(小图用 GCN/LPA,大图用 GraphSAGE,异构用 GAT);④ 训练评估(掩码划分 train/val/test);⑤ 上线监控(新节点冷启动时先用 LPA 快速补标)。工具上 PyTorch Geometric、DGL 提供了开箱即用的图卷积层。

从一间教室到一家公司,“问朋友”的智慧没有变:人类的行为总是写在关系里。谁和谁玩、跟谁学、被谁影响——这些图上的信号,加上一点点人工标签,就能撬动巨大的预测价值。这正是半监督节点分类成为“经典战场”的原因。

Y^=softmax⁡(fθ(G,X))\displaystyle \hat{Y} = \operatorname{softmax}\left( f_{\theta}(\mathcal{G}, X) \right)
这是节点分类的总装线:把图和特征喂给模型,softmax 把分数变成概率,输出全图每个节点属于各类别的置信度。
  1. 模型主线 \(f_{\theta}\)训练好的 GNN 或标签传播模型,\(\theta\) 表示所有可学习参数。
    fθ(G,X)f_{\theta}(\mathcal{G}, X)
  2. 概率变换 \(\operatorname{softmax}\)把模型输出的原始分数压成 0 到 1 之间、且一行之和为 1 的概率分布。
    softmax⁡\operatorname{softmax}
  3. 预测矩阵 \(\hat{Y}\)每一行对应一个节点,每一列对应一个类别,取最大值所在列即为最终标签。
    Y^\hat{Y}

AI 应用场景

社交平台营销号识别

阶段:数据建模与标签标注

解决的问题:平台每天产生海量新账号,人工审核只能覆盖极少数。传统规则(如注册时间短、发言频率高)容易被绕过。将用户作为节点、关注与互动行为作为边,少量人工标注的营销号作为种子标签,用 GNN 结合用户行为特征,就能顺着“互相关注、集中@”的团伙结构揪出潜在营销号。

具体案例:某内容平台用 1% 人工标注的营销号,在关注关系图上训练 GAT,把营销号检测覆盖率从规则引擎的 30% 提升到 78%,并且顺藤摸瓜发现多个互相关注的“水军团伙”。

论文引用网络主题分类

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

解决的问题:新论文往往没有人工主题标签,传统文本分类只看摘要,忽略引用关系。将论文视为节点、引用视为边、摘要嵌入作为特征,用 GCN 让引用链上的论文相互“投票”——引用同一批文献的论文,主题往往相近。

具体案例:在 Cora、Citeseer 等经典学术数据集上,GCN 只用 20 篇标注论文就能预测 2708 篇论文的主题,准确率约 80%,远超只靠文本特征的基线模型。

金融欺诈团伙发现

阶段:模型评估与上线监控

解决的问题:欺诈电话、欺诈账户呈团伙化,单点规则难以识别。将转账关系构边、账户为节点,把少量确认的欺诈账户作为标签,先用标签传播在冷启动阶段给出疑似名单,再用 GNN 精排,兼顾了速度与精度。

具体案例:某银行在 300 万账户的转账图上运行 LPA,无需训练即可在 10 分钟内给出疑似团伙名单,随后用 GraphSAGE 对名单打分,人工复核量下降 60%。

Python 演示

python41 行
# -*- coding: utf-8 -*-import numpy as np # 办公室人际关系图: 0-8 共 9 人, 边表示"常一起吃饭"edges = [    (0, 1), (0, 2), (1, 2), (1, 3), (2, 3), (3, 4),    (4, 5), (5, 6), (6, 7), (7, 8), (8, 5), (5, 3)]n = 9adj = np.zeros((n, n), dtype=np.float64)for u, v in edges:    adj[u, v] = 1.0    adj[v, u] = 1.0 # 只有 0 号和 8 号有标签: 0=早起型, 8=晚睡型labeled_idx = [0, 8]label_map = {0: 0, 8: 1} # 概率矩阵: 每行是"属于早起型/晚睡型"的概率proba = np.full((n, 2), 0.5)for i in labeled_idx:    proba[i] = [1.0, 0.0] if label_map[i] == 0 else [0.0, 1.0] # 行归一化邻接矩阵: 每个节点的邻居权重之和为 1degree = adj.sum(axis=1, keepdims=True)norm_adj = adj / np.maximum(degree, 1e-8) # 迭代传播, 标签源每轮固定for it in range(100):    prev = proba.copy()    proba = norm_adj @ proba    for i in labeled_idx:        proba[i] = [1.0, 0.0] if label_map[i] == 0 else [0.0, 1.0]    if np.max(np.abs(proba - prev)) < 1e-6:        print("converged at iter:", it)        break pred = proba.argmax(axis=1)for i in range(n):    mark = "(labeled)" if i in labeled_idx else ""    print("node %d -> class %d, early=%.2f late=%.2f %s" % (i, pred[i], proba[i, 0], proba[i, 1], mark))
目的:用纯 NumPy 实现标签传播算法,在办公室“饭搭子”关系图上,从 2 个已知作息标签推断其余 7 人的作息类型,展示半监督节点分类的最小可行样例。
  1. norm_adj = adj / np.maximum(degree, 1e-8)行归一化,让每个节点吸收朋友意见时是“平均投票”,避免朋友多的人嗓门太大。
  2. proba = norm_adj @ proba核心传播步骤:一回合矩阵乘法,等价于“把每个邻居的颜色分布按权重加起来”。
  3. for i in labeled_idx:每轮把已标注节点的概率重置为 one-hot,防止标签源被灰色意见稀释。
  4. if np.max(np.abs(proba - prev)) < 1e-6:收敛判断:所有节点意见都不再变化时,全班讨论结束。
  5. pred = proba.argmax(axis=1)取每行概率最大的类别作为最终预测标签。

常见误区

误区只给 1% 的节点打标签,模型能学到什么?肯定要把大部分节点都标注出来,半监督才有意义。

正解半监督的力量恰恰来自图结构本身。只要“朋友关系”有信息量,标签就像水面上的涟漪,可以扩散到整张图。经典实验中 Cora 数据集每类仅 20 个标签就能获得不错准确率。真正的前提是边不是随机噪声——如果人际关系是乱连的,标签再多也白搭。

为何常见:大家习惯了监督学习的“标签越多越好”,忽略了图结构本身就是一种极强的先验知识。

误区GNN 每一层多看一跳邻居,那堆 10 层 20 层,感受野越大,预测肯定越准。

正解堆太多层会引发“过平滑”:特征反复平均后趋于一致,最终所有节点预测成同一类。实践中 2-3 层 GCN 效果最佳;需要更大感受野时应该用残差连接、跳跃连接,而不是盲目加深。

为何常见:直觉上“看得越远越好”,却忘了反复平均会像和稀泥一样,把每个人的个性磨平。

误区标签传播就是数一下邻居里哪个类别最多,投一次票就出结果了,不需要迭代。

正解LPA 是迭代扩散过程:每轮更新后,新接收到的信息还要继续传给下一批邻居,直到全局收敛。而且带标签节点每轮必须重置为原始标签,否则源头的颜色会被稀释甚至漂移。

为何常见:把“邻居投票”理解成了静态操作,忽略了传播的时序性与收敛条件。

误区既然所有节点都参与了图传播,那损失函数就应该把无标签节点的预测也算进去,监督信号更充分。

正解半监督训练中损失只计算带标签节点;无标签节点通过图传播提供结构信息,但不提供监督信号。如果把无标签节点的预测当真实值回传,会造成训练/测试信息泄漏,评估指标虚高。

为何常见:混淆了“参与传播”和“参与损失”——前者是信息流动,后者是标准答案监督。

面试题

Q1. 半监督节点分类中的“半监督”主要指什么?

单选题 · easy

  • A.只需要少量节点有标签← 正确答案
  • B.所有节点都必须有标签
  • C.只有节点特征没有标签
  • D.标签在训练中动态变化

答案:A。半监督 = 只有一部分数据有监督信号。这就像班主任只认识 3 个学生,却要给全班写评语;选项 B 是全监督,C 是无监督,D 是伪标签策略,均不符合定义。

Q2. 标签传播算法的核心思想是?

单选题 · easy

  • A.随机给每个节点分配标签
  • B.只看节点自身特征分类
  • C.朋友像自己,标签随边扩散← 正确答案
  • D.训练深度网络逐层拟合

答案:C。“近朱者赤”是 LPA 的灵魂:每个节点吸收朋友的颜色,迭代扩散。A 没有利用图结构,B 忽略关系,D 是 GNN 的做法而非 LPA——LPA 不需要训练参数。

Q3. GCN 中“邻居聚合”的目的是?

单选题 · mid

  • A.把邻居特征融入中心节点← 正确答案
  • B.删除冗余节点加速训练
  • C.增加网络层数提升表达
  • D.降低标签数量减少标注

答案:A。GCN 每一层做的事就是“打听朋友”:把邻居特征汇总到中心节点,形成融合了局部结构的新表示。B 是图采样,C 是加深网络,D 是主动学习,均不是聚合的目的。

Q4. GAT 与 GCN 的主要区别是?

单选题 · mid

  • A.GAT 不使用图结构信息
  • B.GAT 用注意力权重聚合邻居← 正确答案
  • C.GAT 只能处理无标签节点
  • D.GAT 没有激活函数

答案:B。GAT 的核心是注意力机制:给重要朋友更高权重,聚合时“偏心”。GCN 是等权平均,因此 B 正确;A、C、D 都与 GAT 的实际情况矛盾。

Q5. 训练 GNN 做节点分类时,损失函数应计算在哪些节点上?

单选题 · mid

  • A.所有图节点一起计算
  • B.随机抽取一个节点计算
  • C.只计算有标签的节点← 正确答案
  • D.只计算测试集节点

答案:C。半监督训练中只有带标签节点提供监督信号,无标签节点只参与图传播。A 会把预测当真实值造成泄漏,B 无法覆盖多样本,D 用测试集训练属于作弊。

Q6. GNN 的“过平滑”问题指的是?

单选题 · hard

  • A.层数太多节点特征趋同← 正确答案
  • B.标签太少导致无法收敛
  • C.图太大导致内存溢出
  • D.损失波动导致无法下降

答案:A。过平滑 = 反复聚合平均后,节点表示像被和了太多次的稀泥,彼此越来越像,最终难以区分。B 是标签稀缺,C 是工程问题,D 是优化问题。

Q7. 节点分类任务常用的评估指标是?

单选题 · easy

  • A.分类准确率 Accuracy← 正确答案
  • B.消息传播的平均延迟
  • C.图结构的平均直径
  • D.节点聚类系数大小

答案:A。准确率 = 预测正确的测试节点数 / 测试节点总数,直接衡量“猜对的比例”。B、C、D 是图论或网络性能指标,与分类质量无关。

Q8. 下列哪些信息是 GNN 节点分类所依赖的?

多选题 · mid

  • A.节点的特征信息(GNN 依赖)← 正确答案
  • B.图结构中的连接关系← 正确答案
  • C.部分节点的真实标签← 正确答案
  • D.文本数据的语法分析树

答案:ABC。GNN 信息来自三部分:节点特征 X、图结构(边)、少数监督标签。语法分析树属于 NLP 领域,与图节点分类的输入无关,因此 D 错误。

Q9. 下列哪些手段可以缓解 GNN 过平滑?

多选题 · hard

  • A.限制网络堆叠层数← 正确答案
  • B.加入残差连接结构← 正确答案
  • C.使用跳跃连接机制← 正确答案
  • D.删除图中所有边

答案:ABC。限制层数直接控制平均次数;残差连接保留上一层信息;跳跃连接让深层仍能接触原始特征,三者都能对抗特征趋同。D 删掉所有边等于扔掉图结构,模型退化为纯 MLP。

Q10. 关于标签传播算法,下列说法正确的是?

多选题 · extreme

  • A.已标注节点迭代中固定← 正确答案
  • B.传播最终会收敛稳定← 正确答案
  • C.边越稠密传播越快← 正确答案
  • D.标签传播无需图结构

答案:ABC。LPA 每轮把标签源重置为原始值防止稀释(A 正确);迭代至概率变化小于阈值即收敛(B 正确);边越多信息扩散路径越多,收敛越快(C 正确);D 明显错误——没有边就没有传播可言。