知识超图链接预测:HSimplE与HypE建模n元事实
发布时间:2026/10/2 11:27:14 作者:尧图编辑部 阅读量:1,286

做知识表示和链接预测落地的人大概都踩过同一个坑二元三元组跑得挺欢一碰真实业务就发现有些事实根本塞不进去。最典型的是某人在某年从某所学校拿了某个专业的学位这种句子硬拆成三元组就得凭空造一个某某学校-某专业-某年份的中间节点而这种节点全库只出现一次向量压根学不出来。IJCAI 2020 上那篇 Knowledge Hypergraphs: Prediction Beyond Binary Relations 就是冲着这类问题去的既然现实里大量事实天然带着三个以上的实体为什么非要把它们压成两两配对这篇工作把知识图谱直接泛化成知识超图Knowledge Hypergraph一条事实里可以挂任意多个实体并给出 HSimplE 和 HypE 两个能直接在超图上做链接预测的模型。我自己是做事件型知识库出身前几年一直在跟多参与方事实较劲读完这篇之后最大的感受是它没有发明什么惊天动地的新结构而是把位置这件事讲清楚了。n 元事实里实体排在第几位往往是有语义的谁先谁后决定了事实真假但很多 n 元关系又是顺序无关的三个人凑一起是朋友换个顺序还是朋友。这个矛盾怎么处理直接决定了模型好不好用。下面我就按自己读论文、复现、往业务里搬的顺序把这套东西拆开讲一遍适合已经玩过 TransE、DistMult、SimplE 这类二元模型、想往 n 元方向走的人看也适合手上有事件数据、一直在用 reification 硬扛的工程同学。1. 二元三元组的表达力天花板到底在哪1.1 从毕业这条事实看三元组的先天局限先不聊模型聊聊数据长什么样。假设你要建一个高校人才库核心事实是张三 2015 年从 A 大学计算机学院拿到了工学硕士学位。这句话里有四个角色人、时间、学校、学位类型。用标准三元组表达你只有三个选择每个选择都有硬伤。第一个选择是拆成多条三元组比如张三就读于A 大学、张三入学年份2015、张三获得学位工学硕士。看起来解决了但事实被切碎了三句话之间没有任何机制保证它们属于同一个事件。模型在训练时看到的是三条独立的边它学不到这三条边其实是同一次毕业这件事于是一旦张三在别的年份还拿过另一个学位图谱里就会产生语义串扰。第二个选择是造虚拟节点也就是把所有非二元信息打包成一个新实体比如新建实体E_A大学_2015_工学硕士然后写两条边张三毕业于E_...、E_...类型学位事件。这也是工程上最常干的事代价是实体规模爆炸。我统计过自己经手的一个中等规模事件库这种一次性实体占总实体数的六成以上而它们绝大多数只出现在一条事实里训练时连一个正样本都凑不齐向量基本是随机的。这些随机向量还会污染负采样让模型学出一堆假模式。第三个选择是干脆放弃只保留张三毕业于A 大学把年份和学位丢掉。信息损失是显而易见的回到具体业务里凡是涉及哪一年什么学位的查询全部失效。注意判断一个事实该不该用 n 元建模有个很土但很好用的标准——如果拆成二元后中间节点只出现一次或者中间节点之间需要额外的约束来表达它们属于同一次事件那就说明这个关系天然是 n 元的硬拆只会制造噪音。1.2 reification 拆解路线的三笔隐性成本学术界把造中间节点这条路叫 reification字面意思就是把关系实体化。这条路不是不能用很多成熟系统就是这么跑起来的但它有三笔成本在论文和文档里通常不会写清楚。第一笔是参数与稀疏性问题。新增的虚拟实体需要独立向量假设原来有十万实体reification 之后可能变成二十五万其中十五万是长尾。知识图谱表示学习的本质是让共现频率高的实体在向量空间里靠近长尾实体没有共现学出来的位置就是随机的。你在训练集上看到 loss 降下去了但那是因为这些实体的向量在拟合单条样本泛化能力接近零。第二笔是破坏了关系的对称性。同一个 n 元关系可以有多种拆解顺序张三毕业于A大学和A大学培养了张三表达的是同一件事。reification 之后模型看到的是完全不同的两套路径它必须分别学习样本效率直接砍半。而对于像三个人是朋友这种顺序无关的关系reification 会把它的所有排列都当成不同事实训练集里同一件事被重复计数。第三笔是评估口径失真。二元链接预测的标准评估是过滤式排序也就是对一个头关系尾打分排序。当你要预测的是张三哪一年毕业这种跨越四五个位置的问题时reification 把问题拆成了多个子查询任何一个子环节预测错最终答案就错但你在子环节上的指标可能全都很漂亮。这也是很多论文里 reification 基线看着还行、实际上线一塌糊涂的原因。1.3 知识超图把一条事实带 n 个实体写进模型里论文给出的形式化其实很简洁一个知识超图由实体集合和超边集合构成每条超边是一个关系 r 加上一个实体序列 (e_1, e_2, ..., e_k)k 就是这个关系的元数arity。它允许 k2也允许 k3、4、5同一张图里不同关系的元数可以不一样。这一点很重要——现实数据从来不是整齐的JF17K 里就有元数从 2 到 6 混杂的关系论文实验里的 Facebook 子集则集中在 2 到 4。有了这个定义链接预测任务就变成了给定关系 r 和它的一部分实体预测缺失位置上的实体。比如给定 (r, ?, e_2, e_3)预测 e_1。这个任务看起来只是三元组的自然延展但实际上它逼着模型回答一个三元组时代可以回避的问题——位置信息怎么编码。为什么这个问题绕不开因为有两个互相冲突的需求。一方面位置必须可区分否则买方卖方商品和卖方买方商品就没法区分了这在商业数据里是致命的。另一方面卷积、池化这类操作天生是顺序无关的如果你想用它们就得接受池化会把顺序抹平。论文的两个模型正好各自站在一端HSimplE 用循环平移把位置信息硬编码进向量HypE 用卷积加最大池化换取顺序无关性同时用变体保留关键位置。模型位置处理方式参数量与元数的关系顺序是否敏感HSimplE按位置做循环平移同一实体向量复用与二元模型接近低敏感HSimplE每个位置额外挂一个专属嵌入随元数线性增长敏感HypE一维卷积 按位置池化与元数无关恒定基本无关HypE_0首位置固定不参与池化与元数无关恒定首位置敏感这张表基本概括了后面的选型逻辑数据里位置语义重、元数低HSimplE 系列够用且便宜元数高、顺序大多无关、又想省参数HypE 更合适。2. HSimplE 与 HypE两种把元数塞进向量的不同手法2.1 HSimplE靠循环平移让位置信息显式可见HSimplE 的核心思路朴素到有点可爱既然一个实体的向量只有一份而它在事实里可能处在第 1 位、第 3 位或者第 5 位那我就把它这份向量在每一轮计算时拧一下位置让它看起来不一样。具体做法是对实体向量做循环平移circular shift平移量跟它所在的位次挂钩——第 i 位就平移大约 (i-1) × d / k 个单位d 是嵌入维度k 是元数。然后拿平移后的向量去和关系向量做逐元素乘积再求和最后对所有位置取平均得到这条超边的总分。为什么取平均因为超边的长度不固定不归一化的话元数大的事实天然分数尺度更大负采样出来的对比就失真了。取平均也顺带保证了同一个事实在不同元数下的分数可比。我特别喜欢这个设计的点是它没有新增参数量。同一个实体在人这个位置和在学校这个位置用的还是同一份基础向量只是平移的相位不同。这意味着长尾实体也能受益于它在其他关系里的共现——张三在学校那一列学到的信息可以迁移到他在毕业事件里的表现。这跟 reification 造一次性实体的思路是完全相反的后者是为了区分而增加参数前者是为了区分而复用参数。不过循环平移有个隐含假设位次 i 和相位平移量是一一对应的所以它只能处理元数固定或已知的场景。如果一条超边训练时是 4 元、预测时你想拿它去补一个 3 元的空平移量就对不上了。论文里的任务设定回避了这个问题但你自己往业务里搬的时候一定会遇到这点后面第 5 章会展开。用代码表达的话大概是这个意思def hsimple_score(ent_embs, rel_emb, k, d): # ent_embs: [k, d] 实体向量按位置排列 total 0.0 for i in range(k): shift int(round((i * d) / k)) % d shifted torch.roll(ent_embs[i], shiftsshift, dims-1) total total torch.sum(shifted * rel_emb) return total / k这段逻辑里唯一容易被忽略的是shift的取整方式。d / k 很少是整数比如 d200、k6每格是 33.33取整之后位置 0 和位置 1 的相位差 33位置 1 和 2 也是 33但位置 5 到位置 0 之间就只剩下 35落差略大。我实测下来这个误差影响不大但如果你把 d 设成能被常见元数整除的数比如 d240能被 2、3、4、5、6 整除会稳妥一些。2.2 HSimplE 的位置专属嵌入与参数代价HSimplE 是前者的加强版在基础实体向量的基础上给每个位置额外准备一份位置嵌入最终参与计算的是两者相加或者更准确地说是在不同位置使用不同来源的表示。这样位置信息不再依赖相位这种几何技巧来表达而是直接变成可学习的参数。代价也很直白参数从实体数变成了实体数 × 位置数这种量级。在 JF17K 这种两万多实体的数据集上还能忍但如果你手上是千万级实体的库元数又是 2 到 7 混杂参数会膨胀得很难受。更麻烦的是长尾实体在某个特定位置可能只出现一两次那个位置专属向量还是学不好——你为了解决位置冲突反而制造了新的稀疏性问题。我的经验是HSimplE 适合元数小且固定、位置语义极强的场景比如三元或四元的固定模板关系买方/卖方/商品/时间每个位置的角色几乎不换。如果是开放域的超图同一个关系下位置角色经常漂移那就别加位置嵌入老老实实用 HSimplE 或者上 HypE。还有个实践细节HSimplE 里位置嵌入和实体嵌入的初始化尺度要稍微调一下。两者直接相加的话如果位置嵌入初始化方差太大会直接盖掉实体本身的信号训练早期 loss 会卡住不动。我一般把位置嵌入的初始化标准差调到实体嵌入的一半左右效果比默认值稳。2.3 HypE一维卷积加池化让参数量与元数解耦HypE 是整个工作的另一个主角思路完全不同。它把一条 k 元事实里的实体向量按位置从上到下叠成一个 k × d 的矩阵然后在这个矩阵上做一维卷积卷积核的尺寸是 w × d——注意这个 d 会覆盖整个嵌入维度只在位置方向上滑动所以它捕捉的是相邻实体之间的关系。窗口 w 常见取 1 和 2取 1 相当于只看单个实体取 2 能看相邻实体对。卷积完了之后关键的一步是在位置维度上做最大池化把 k - w 1 个位置的输出压成一个向量最后和关系向量做内积得到分数。池化这一步直接把顺序信息抹掉了所以不管实体怎么排列只要集合不变分数就不变。这正好对应三个人是朋友这类顺序无关的关系。参数量的优势非常明显卷积分支的参数量只跟窗口大小、嵌入维度、滤波器个数有关和 k 完全无关。也就是说一个 8 元事实和一个 3 元事实用同一套参数打分这在三元组模型里是不可想象的——TransE、DistMult 换元数就要重新设计输入结构。论文里还提了一个 HypE_0 变体就是把位置 0 的实体单独拎出来不参与池化只对剩下的位置做池化。这样既保留了首实体有特殊语义的场景比如把关系的主体当作第 0 位又避免了因为顺序无关而把主体和客体混起来。我自己复现的时候踩过一个坑一开始以为池化会把所有位置信息都抹掉结果发现关系向量本身还是能携带部分位置偏好的因为它是在训练中跟卷积输出一起学的。所以 HypE 并不是完全没有顺序概念而是顺序敏感性通过关系向量间接、弱化地表达。理解了这一点你就知道为什么在顺序很重要的数据上它打不过 HSimplE 系列但在顺序无关的数据上它能靠数据增广效应反超。2.4 训练目标与负采样n 元场景下要多想一步两个模型都用负采样的方式训练从正样本出发随机替换其中一个位置上的实体构造负样本然后用二分类损失交叉熵那一类去区分正负。听起来跟二元模型没差别但 n 元场景下有两个额外的坑。第一个坑是假阴性。对于顺序无关的关系甲乙丙是朋友和乙甲丙是朋友是同一件事你替换一个实体后得到的新元组有可能恰好是数据集里已经存在的正样本只是顺序不同。如果你不做检查就会把正样本当负样本来惩罚模型会把本来正确的东西推远。论文在数据构造上做了处理但你自己造数据时必须显式检查。第二个坑是替换位数量的选择。二元三元组只可能替换头或尾最多两种。k 元事实有 k 个位置可换k6 的时候组合数就上去了。单位正样本配多少个负样本、替换位置怎么分布会显著影响训练效率。我试下来比较省事的做法是每个正样本固定配 3 到 5 个负样本替换位置在 k 个位置里均匀随机同一批次内保持元数一致下一章讲为什么在 JF17K 规模的图上收敛速度和最终指标都比较平衡。3. 三个公开数据集上的成绩单怎么读3.1 JF17K、FB-AUTO、WikiPeople 的形态差异论文用了三个数据集它们的性格差别挺大看懂这个差别比记住具体数字重要得多。数据集规模量级元数分布数据性格JF17K约 2.9 万实体、501 个关系2 到 6 元混杂抽取自公开知识库关系语义多样位置语义和顺序无关关系并存FB-AUTO数千级实体、个位数关系集中在 2 到 4 元从二元图谱自动构造关系种类少但事实密度高WikiPeople约 3.5 万实体、178 个关系2 到 7 元人物百科信息同一人物在不同关系下反复出现具体数值以作者放出的数据文件和数据卡为准我这里记的是当时复现时的大致量级。FB-AUTO 这个数据集值得单独说一句它是用自动化方式从已有二元图谱构造出来的 n 元事实所以它的n 元有时候带着人工痕迹关系和关系之间高度同质。这类数据上模型很容易刷高分但迁移到真实抽取的 n 元数据上会掉点。WikiPeople 则相反人物信息的关系模式很自然同一个实体在不同元数的事实里反复出现比较能检验模型对长尾实体的泛化。3.2 过滤式评估为什么在 n 元场景更麻烦评估用的是过滤式排序对每条测试事实把它某个位置上所有候选实体打分排序然后看正确实体的排名。过滤的意思是如果某个错误候选恰好也在训练集里存在作为另一个事实的某个位置就把它从排名里剔掉免得冤枉模型。二元时代这套流程已经被写进各种工具库但 n 元场景下有两个麻烦。麻烦一是排序对象是位置 候选的组合。你得明确是对哪一个位置做排序不能把一条 n 元事实当成整体排。论文的做法是对每个位置分别评估再聚合这也是为什么你会看到它报告的是整体 MRR 和 Hitsk而不同元数的关系贡献并不均衡——元数大的关系在单条事实里贡献的位置多权重自然就重。麻烦二是过滤集合的构造变复杂了。二元场景下只需检查头关系尾是否存在。n 元场景下你要检查的是候选实体放到这个位置后构成的新超边是否在已知集合里并且对顺序无关的关系还要把排列等价的情况也算进去。这一块如果实现得不对指标能差好几个点。提示自己实现过滤评估时先花十分钟手工验算三五条样本。我第一版就是漏了排列等价的过滤MRR 虚高了 0.03 左右排查了两晚上才发现。3.3 基线的短板在哪m-TransH、RAE 与 NaLP论文对比的几类方法正好代表了三条技术路线理解它们的短板比记住排名更有用。m-TransH 和 RAE 这一类本质上是把二元模型的平移思想或双线性思想搬到了 n 元但它们对元组里实体的处理接近于袋子——把实体当成一个集合用求和、平均这类对称操作聚起来。对称操作意味着顺序无关这在顺序无关的关系上没问题但一旦关系里位置有语义模型就彻底失去了区分能力。我在自己的数据上验证过对于买方/卖方这类关系这类模型的表现几乎等同于随机。NaLP 走的是另一条路把实体的表示按位置拼接起来再送进网络因为拼接对顺序敏感所以它能捕捉位置语义这是它的优势。但拼接的代价是输入维度随元数线性增长元数一变网络就得换而且它对关系内部的实体对建模偏重到了高元数关系上表达能力跟不上。HSimplE 系列和 HypE 则分别用平移和卷积绕开了这两类问题前者不用拼接就能保留位置信息后者不用拼接就能做到参数与元数无关。这个对比其实挺有启发——处理 n 元关系核心矛盾是顺序感和参数复用之间的取舍谁能在两者之间找到更好的平衡谁就赢。3.4 和先转二元再预测这条老路线的正面对比论文里还有一部分对比是关于 reification 的把 n 元事实拆成带中间节点的二元事实然后用成熟的二元模型去做预测。结论跟我的实战经验一致——在低元数、关系种类少的数据上reification 加二元模型能勉强跟上但元数一高中间节点的数量和长尾问题就压不住了指标掉得很快。具体掉在哪里主要是两处。一是多跳推理的误差累积本来一次打分就能解决的问题现在要经过两三次打分每一步都可能出错。二是中间节点导致的关系语义退化原本毕业这个关系里包含的所有约束现在被分散到了多条边上模型需要更多样本才能学出同样的约束。所以我给同行的建议是如果你手上的 n 元事实占比超过三成别再硬撑 reification 了换路子更划算如果只是零星的复合事实那用中间节点对付过去完全没问题没必要为了技术优雅重建整套链路。4. 自己复现时最容易翻车的几处细节4.1 数据切分与负样本假阴性比没负样本更可怕复现的第一道坎永远在数据上不在模型上。n 元数据的切分比二元麻烦得多因为同一批实体在训练集和测试集里的分布会互相影响。我的做法是按超边切而不是按实体切同时保证测试集里的实体在训练集里至少出现过一次否则就是纯粹的冷启动评估的是另一回事。如果想额外测零样本能力那就单独切一份测试集实体完全未见过的数据别跟主指标混在一起看。负样本构造前面提过假阴性的问题这里补一个更隐蔽的情况顺序无关关系的排列等价。假设关系合作是顺序无关的训练集里有甲乙丙测试集里有丙甲乙。你在训练时把甲乙丙的第一位换成丙得到丙乙甲这跟测试集里的丙甲乙不是同一条所以不算假阴性但它其实是同一件事的不同排列。如果模型是顺序无关的它给出的分数会很高这个负样本就变成了难度过低的负样本对训练帮助有限。处理办法有两个一是对顺序无关的关系做数据增广把所有排列都加进正样本元数小的时候可行元数大了会爆炸二是维护一个排列等价类索引构造负样本时先查这个索引命中了就重采。我一般用后者索引用字典存排序后的实体元组 - 原超边集合查询开销可以忽略。4.2 顺序敏感还是顺序无关选错变体指标会虚高这一条是我踩得最疼的坑。最开始的实验里我给朋友这种明显顺序无关的关系用了 HSimplE顺序敏感结果测试指标比 HypE 还高。当时挺高兴后来仔细一查发现是评估环节的问题我在做过滤评估时把该关系下所有排列等价的事实都从候选里滤掉了而 HSimplE 因为对顺序敏感本来就会给某些排列低分过滤掉之后它的排名自然被抬上去了。正确的做法是分关系类型看指标。我的经验是按位置语义强度把关系分三档强如买方/卖方/商品、弱如事件的参与人列表、无如集合类关系。强位置语义的关系看 HSimplE 系列弱和无关的看 HypE。最后再给一个加权总分。如果只看一个混合总分很容易得出某个模型全面碾压的错误结论实际上它只是在某一类关系上占了便宜。另外还有一个变体选择的细节HypE_0 把位置 0 单独拎出来那么问题来了你的数据里位置 0 到底是什么有些数据集的位置 0 是抽取工具决定的没什么语义。这种情况下用 HypE_0 反而引入了伪约束不如用全池化的 HypE。我是先统计了位置 0 的实体分布发现它在不同关系下的分布差异很大才确定该用 HypE_0。4.3 超参配置与显存开销的实测手感论文给了一套配置但直接照抄不一定会适合你的数据。我实测下来比较稳的起点是这样的嵌入维度 200能被 2、3、4、5、6 整除对循环平移友好批大小 128 到 512优化器用 Adam学习率 1e-3 起步、后期衰减负采样配比 1:3 到 1:5。HypE 的卷积窗口用 1 和 2 各一半滤波器滤波器总数 200 左右池化用位置维度的最大池化。显存和速度的差异值得单独说。同等嵌入维度下HypE 因为要做卷积和池化单步计算比 HSimplE 慢一些但参数量少、对元数不敏感整体训练时间反而可能更短尤其是数据里元数分布很散的时候。HSimplE 单步快但它对每个位置都要做一次平移和点积k 大的时候线性增长。我做过一次对比在一份元数 2 到 7 混杂、大约十万条超边的数据上HSimplE 一个 epoch 比 HypE 快大约两成但 HSimplE 因为参数多反而比 HypE 慢。还有个容易忽略的点元数越大批内样本的信息密度越高。一条 7 元事实里包含 7 个位置的正样本信号而一条二元只有 2 个。如果你的批处理是按条数组织的元数分布不均会导致每个 batch 的有效监督信号差异很大梯度噪声明显。我后来改成按位置数来组 batch训练曲线平稳了不少。4.4 按元数分桶的批处理与 padding 陷阱n 元模型实现里最容易被忽视的工程细节就是 padding。因为一个 batch 里不同样本的元数不同最省事的做法是补零到最大长度然后加 mask。但补零对这两个模型都有副作用。对 HSimplE位置是通过平移量定义的你补了几个零位置k 就变了平移量跟着变原本第 3 位的实体可能被当成第 5 位处理位置语义直接崩掉。对 HypE卷积窗口在位置方向滑动补进来的零会参与卷积池化时又可能被选为最大值污染整条样本的表示。正确的做法是按元数分桶把所有样本按 k 分组每个 batch 内所有样本的 k 相同这样完全不需要 padding。代价是每个 epoch 内的 batch 组织要重排一次实现上多写十几行代码。我用分桶之后同样配置下 MRR 提升了大概两个点而且训练更稳。这个改动投入产出比极高强烈建议一开始就做对。5. 这套思路能搬到哪些真实业务里5.1 事件与流程类知识时间、地点、参与人一起建模最适合知识超图的就是事件型数据。一条新闻事件天然包含主体、客体、时间、地点、结果抽取出来就是一条四到六元的超边。用超图建模之后链接预测能直接回答这个人在这个时间点还在哪出现过这个地点在这个月份还发生过什么类型的事件这类问题而不需要先把事件拆碎再拼回去。我做过的一个场景是舆情事件关联把每条事件当超边实体是人物、机构、地点、事件类型任务是预测缺失的事件类型或缺失的地点。用 HypE 打底因为事件的参与人列表基本是顺序无关的位置语义只在主体和时间上强。所以最终选的是 HypE_0把主体放在位置 0剩下的参与人池化。上线之后相比原来的 reification 方案同一批标注数据下召回提升比较明显而且长尾人物的向量质量肉眼可见地变好了——因为它们不再被拆到一堆一次性事件节点上。5.2 多方关系的行业场景除了事件还有几类数据天生就是多方的用二元模型纯属自找麻烦。一类是多方协议与合同一份合同里有甲方、乙方、标的、金额、期限五个位置全都有语义顺序不能乱。这种场景用 HSimplE 的位置专属嵌入比较合适因为每个位置的角色几乎固定元数也稳定在四五元参数膨胀可控。一类是组队与分组信息推荐场景里用户 A、用户 B、用户 C 在同一个群里这种事实顺序完全无关元数还可能很长HypE 的顺序无关性和与元数解耦的参数设计正好合适。一类是多跳路径的压缩表示把一条长度为 4 的推理路径压成一条 4 元超边直接建模从甲经乙、丙到丁的连通关系。这类数据的好处是省掉了多跳推理的误差累积坏处是路径数量可能爆炸需要控制采样。5.3 从链接预测往外扩补全、去噪、规则挖掘链接预测只是这套模型的第一个落点往下还有很多可以做的。超边补全这是最直接的给定部分实体预测缺失位置用于知识库自动补全。一致性去噪训练好的打分函数可以用来给已有事实打分把分数异常低的事实挑出来人工复核。我在自己的库上做过这件事挑出来的可疑事实里确实有相当一部分是抽取错误比如时间抽取到了错误年份、参与人漏了一个。这比随机抽检效率高得多。规则挖掘观察哪些关系在超图里频繁共现可以辅助发现隐式约束。比如同一个人的入学年份和毕业年份通常差 3 到 4 年如果某条事实违反了要么是抽取错误要么这个人是特殊学制。论文本身没有深入这部分但从打分函数到规则提取只有一步之遥工程上很值得试。跨元数迁移这个是比较前沿的玩法。如果一个 4 元关系和一个 3 元关系共享部分实体和语义比如甲在乙地举办了丙活动和甲在乙地举办了活动能不能用一个模型同时处理、互相受益HypE 因为参数与元数无关天然具备这个潜力只需要设计好缺失位置的处理方式。我自己试过用 HypE 统一训练不同元数的样本效果比分开训两个模型略好尤其在低资源关系上有提升但调参比较费劲目前还在折腾。最后分享一下我自己在实操里的体会n 元建模这件事最大的门槛从来不是模型结构而是数据规范和评估口径。模型就那么两个论文写得也清楚代码开源着抄下来改改就能跑真正花时间的是把数据组织成干净的超边、把顺序语义标注清楚、把过滤评估实现对。这三件事做扎实了随便挑一个模型效果都不会差。反过来模型选得再花哨数据里位置语义是乱的指标就是自欺欺人。我前后在这上面栽过两次现在开工前的第一件事永远是先花两天做一份位置语义标注表把每个关系的每个位置到底代表什么写清楚比调参有用得多。