本节摘要:图数据的伦理风险具有结构性——偏见沿边进入聚合、被消息传递逐层放大;隐私沿边泄漏,链接披露与重识别攻击让"匿名图"名不副实。本节覆盖三类偏见(度偏差、表示偏差、标签偏差)的诊断与缓解、图上的公平性指标、隐私攻击面与加固手段,最后给出可执行的伦理工程清单。
图模型掌握着一种独特的权力:它给"关系"定价。担保圈里多一条边,授信额度可能下调;社交网上多一次互动,内容分发随之改变。与表格模型不同,这份权力作用在网络里——个体无法靠"管好自己的数据"自保,邻居的行为同样影响他的命运。侦探社的最后一课因此不是技术而是操守:偏见如何潜入与放大、隐私如何沿边泄漏、公平与透明如何进入默认工程清单。这不是道德说教——每一条都有具体的技术形态、检测方法与缓解手段,也有对应的监管压力(算法问责法规在各行业相继落地)。
度偏差来自图的结构不均:度数高的节点拥有更多邻居、聚合到更多信息,表示质量天然更好;低度数节点(新用户、边缘人群)的表示相对贫瘠,预测系统性偏差。这与第五章过平滑不同——它不是层数问题,而是"证据量"的先天不平等。表示偏差来自训练分布:历史数据里的社会偏见(某些群体在信贷、招聘历史中被系统性低估)沉淀进特征与标签,消息传递再把它沿边扩散——同一社区的节点共享表示倾向,个体差异被社区画像覆盖。标签偏差来自标注过程:人工审核员对模糊案例的判断受群体刻板影响,标注结果本身带偏。三条路径会在聚合处叠加:第一层的邻居采样已经偏向高度数节点,第二层的表示已把偏差磨进权重。
# 度偏差的量化诊断:按度数分桶看性能差距 import numpy as np import networkx as nx rng = np.random.default_rng(4) G = nx.barabasi_albert_graph(400, 3, seed=1) # 无标度图:度数高度不均 deg = np.array([d for _, d in G.degree()]) # 模拟一个"表示质量随证据量上升"的模型输出: # 评分真值靠噪声扰动,噪声幅度与度数成反比(低度数=少证据=多噪声) truth = rng.normal(size=400) noise_scale = 1.0 / np.sqrt(deg + 1) score = truth + rng.normal(scale=noise_scale) # 按度数分桶统计绝对误差 buckets = [(0, 3, "低度数"), (4, 10, "中度数"), (11, 10**9, "高度数")] for lo, hi, name in buckets: m = (deg >= lo) & (deg <= hi) err = np.abs(score - truth)[m] print(f"{name}桶({int(m.sum())} 个节点)平均误差 {err.mean():.3f}") # 低度数桶误差显著更高:同样的模型,对"证据少"的节点系统性更不准—— # 若低度数节点恰好集中于某个人群,性能差距就转化为群体不公平
度偏差的缓解走"证据补偿"路线:给低度数节点加权、在采样策略中保护冷启动节点、或引入自监督预训练(第六章的免费监督对证据稀缺的节点帮助最大)。表示偏差的缓解走"去偏训练"路线:对抗式去偏让表示无法预测敏感属性(训练一个判别器预测敏感属性,主模型的目标里加反向梯度);公平性约束直接把群体指标差写进损失。公平性度量在图上的操作化延续经典定义:统计均等(不同群体的正例率应相近)、机会均等(不同群体在真实标签相同时的被预测率应相近)。要坦率说明权衡:公平约束与整体精度常需交换,"绝对公平"在数学上未必与"最优预测"共存——工程决策是选择约束强度并记录理由,而不是假装没有交换。
# 群体公平指标的核算骨架(以二元敏感属性为例) import numpy as np y_true = np.array([1,0,1,1,0,1,0,0,1,1]) y_pred = np.array([1,0,1,0,0,1,1,0,1,0]) group = np.array([0,0,0,0,0,1,1,1,1,1]) # 敏感属性(示意) def parity_gap(y_pred, group): """统计均等差:两组预测正例率之差""" r0 = y_pred[group == 0].mean() r1 = y_pred[group == 1].mean() return abs(r0 - r1) def equality_gap(y_true, y_pred, group): """机会均等差:在真实为正的样本上,两组预测率之差""" m = y_true == 1 r0 = y_pred[m & (group == 0)].mean() r1 = y_pred[m & (group == 1)].mean() return abs(r0 - r1) print("统计均等差:", round(parity_gap(y_pred, group), 3)) print("机会均等差:", round(equality_gap(y_true, y_pred, group), 3)) # 两组机会均等差为零点四:真实为正时,一组的通过率远高于另一组——需溯源是特征、标签还是聚合引入
图数据的隐私风险比表格数据多出一个维度:边本身就是敏感信息。"A 与 B 有资金往来"这一事实的泄露,比单方账户余额的泄露破坏力更大。攻击面有三类。链接披露:模型对"是否存在某条边"的预测(链接预测的阴暗面)可能被滥用于刺探私人关系——发布链接预测服务前必须评估"被查询方是否同意暴露该关系"。成员推断:攻击者通过模型输出判断"某节点是否在训练图里",对医疗图、欺诈图这类成员身份即敏感的场景是实质威胁。重识别:号称匿名的图数据,攻击者用少量背景知识(某人的度数、邻居模式)即可重新指认节点——学术研究反复证明大规模社交图的"匿名化"极易被击穿。加固手段:限制查询粒度与输出精度、差分隐私在图上操作化为"边级差分隐私"(对单条边的存在与否加噪声)、发布数据前做聚合粒度提升与对抗性评估。
⚠️ 常见坑:以为"删掉姓名与身份证号"就等于匿名。图结构是指纹——度数序列、三角形模式、邻域形状的组合几乎唯一,重识别不需要任何显式标识符。
把操守落成可勾选的工程项,与第五章的流程工位对接。数据入库前:敏感属性与禁止代理变量登记;匿名化评估(重识别风险测试);数据来源与同意链条审查。训练中:度分桶性能监控(本节的诊断代码进流水线);群体公平指标纳入验证面板;公平与隐私约束的强度决策记录在案。交付时:解释报告(第六章)覆盖群体层面而不只个体层面;链接类预测服务过"关系披露"评审;保留模型、数据、决策的版本对齐以备审计。上线后:偏移与公平指标的持续监控;用户申诉通道接回训练数据治理。这份清单的核心思想只有一句:伦理检查与质检指标同权重、同流程、同留痕——它属于 7.1 节的验收规范,而不是项目结束后的附录。
全册至此收官。邻接关系侦探社的培训档案全部归档:立案的严谨、走访的机制、装备的选型、结案的纪律、归档的责任——带着这套档案去接你自己的案子吧。