真实面经题目 · 原创解析
KG embedding 如何支持 mini-batch 训练,图谱属性缺失怎么处理?
这题考知识图谱表示学习的工程训练能力:mini-batch 训练要处理三元组采样、负采样和邻域依赖,属性缺失要区分未知、不可用和真实为空。
真实面经题目 · 原创解析
这题考知识图谱表示学习的工程训练能力:mini-batch 训练要处理三元组采样、负采样和邻域依赖,属性缺失要区分未知、不可用和真实为空。
KG embedding 支持 mini-batch 的核心是把全图目标拆成一批三元组或子图上的局部训练。对 TransE、DistMult、ComplEx 这类三元组打分模型,可以按正三元组采样,再对头实体或尾实体做负采样,批内计算正负样本分数和 margin loss 或交叉熵。对依赖邻域的 GNN 类 KG 表示,要用邻居采样、子图采样或 cluster sampling 控制显存,并注意高阶邻居信息截断带来的偏差。属性缺失不能简单填 0,要先判断缺失机制;可用 mask、缺失类型标记、均值或类别填充、专门的 unknown embedding、图邻居聚合补全,训练和推理都要保持一致。
知识图谱训练的样本通常是三元组,也可能是实体邻域子图。三元组模型天然适合按边采样 mini-batch;GNN 类方法因为需要邻居消息传递,还要额外采样局部子图。
每个正三元组可以替换头实体或尾实体构造负样本,也可以使用 batch 内其他实体作为负样本。负采样要避免把真实存在但未出现在训练批次中的三元组误当负例,必要时用过滤集合。
常见损失包括 margin ranking loss、binary cross entropy 和 sampled softmax。一个 batch 里只更新相关实体、关系和模型参数,但要注意热门实体更新频繁、稀有实体更新不足的问题。
如果 KG embedding 依赖邻居聚合,不能每步展开全图邻居。可以使用固定 fanout 邻居采样、按边类型采样、子图采样或缓存历史 embedding,在效果和显存之间取舍。
属性缺失要先区分随机缺失、系统缺失和真实无该属性。工程上可以用 mask 告诉模型该字段缺失,用 unknown embedding 表示缺失类别,用统计填充或邻居聚合做补全,并在评估时单独看缺失样本表现。
知识图谱通常不完备,未记录的三元组不一定为假,所以替换实体得到的负样本可能在真实世界成立,需要过滤已知正例并控制负采样策略。
优点是计算高效,可以复用 batch 中实体;缺点是负样本分布受 batch 构成影响,且仍可能包含未标注正例。
0 可能是合法数值,模型会混淆真实 0 和未知;同时不同字段缺失机制不同,统一填 0 会引入偏差。
除了整体指标,还要按缺失字段、缺失比例、实体类型和关系类型切片,看补全或 mask 是否提升稳定性。