从属性,三元组到图:知识和语义融合进展研究

简介: 近十年来,语义表征学习获得了巨大的成功,从早期的word2vec和共现统计方法,到近期以Bert为代表的上下文表征预训练模型, 通过大规模非监督语料训练并斩落了多个下游NLP任务, 证明了AE模型强大的威力。 而知识表示学习(KRL),又称之为knowledge Embedding(KE), 将实体和关系映射到低维的连续向量空间, 早期方法主要以三元组, 近些年来以subgraph或path

近十年来,语义表征学习获得了巨大的成功,从早期的word2vec和共现统计方法,到近期以Bert为代表的上下文表征预训练模型, 通过大规模非监督语料训练并斩落了多个下游NLP任务, 证明了AE模型强大的威力。

而知识表示学习(KRL),又称之为knowledge Embedding(KE), 将实体和关系映射到低维的连续向量空间, 早期方法主要以三元组, 近些年来以subgraph或paths作为训练样本,进一步提升了SOTA效果。

知识和语义的融合会带来下游任务的效果提升。这是NLP与图谱结合的一个热门领域,被称为KGE(知识图谱嵌入)。 在我们的上下文中,知识可以是属性,关系,长文本描述,一般可以用图表示。 这里的图可以包括: 二部图,序列图,社交关系图,知识语义图,或知识图谱。

普通人能够读懂通用文本,但没有专业背景知识,就不能做出较好的专业回答。 然而,专业领域的语料来训练的成本实在太高,标注数据较少时,finetune bert模型会有较大的困难。 若引入知识,便能提升模型效果,同时大幅降低所需的标注数据量。

知识图谱可以融入到语义模型中(KG->Bert),融合可以在数据增强阶段,预训练(pretrain),微调(finetune),推理阶段进行。 在微调阶段融入知识时,就一定与具体任务有关,不具备通用性。

反过来,语义向量也能提升图和图谱模型的表现效果(Bert->KG),如KG-Bert。 但本文主要以知识融入语义这个方向为主。以下我们将沿着知识融合的脉络,对每类方法进行总结,按照知识本身的复杂程度顺序排序(属性,三元组,图),并指出各自优缺点。

undefined

1. 数据增强阶段

本方法一般用于图向语义模型融合。思路主要是利用现有知识构建更多的训练语料。

1.1 属性生成增强样本

主要是利用知识规则,随机替换实体和属性,创建更多的正负样本,进行数据增广。可用于pretrain和finetune阶段。

以保险为例,详细的可参考文献[3] 例如:

  • 如加限定词替换,对象(少年/老年/孕妇/...); 替换保险对象关键词 ‘高龄’, ‘老年’,“汽车险”。 同类替换正样本,异类替换负样本
  • 拼接模板,增加query端的语言完整性,增加提取语义,处理歧义的能力,比如“该买XX保险

1.2 三元组生成增强样本(CKLRM)

这也是一类较早期,但简单有效地方法, 例如方法1 即在知识图谱中获得三元组, 根据该三元组在维基百科中选取包含两个实体的句子, 随机mask掉其中一个实体。 接着将含有mask的这句话作为一个问题, 通过随机选取一些实体(当然要包括原实体)来作为答案构造样本,进而使得bert必须识别两者关系才能进行预测。 它的问题是:只能图谱中的最简单的三元关系, 和百度的ERNIE在技术上没有本质区别。

1.2 图遍历生成样本(adapter)

将知识构建为图,在图上进行遍历,生成大量文本样本, 用于pretrain阶段。 例如生成“张坤是易方达的基金经理,管理易方达蓝筹精选混合“等。

其中2就是这样的方法。 具体地,为了提升特定领域的效果,在bert上增加adapter。 在特定领域语料训练时,freeze住bert参数,只训练adapter。而在下游finetune训练时,bert和adapter一起更新。adapter结构如下:

$$Adapter(X) = X+ f(XW_d+b_d)W_u +b_u $$

这类方案实现简单,但问题是噪音不好控制,必须限制子图范围, 而且生成的文本似乎没有特别的语义含义,不具备语法的多样性,使得模型过拟合这类KG任务。 改进空间方面,可使用下文提到的类似CoLake的Mask self-attetion技术,使得在做MLM时每个节点只能看到与它相邻的1跳节点信息。

2. 预训练阶段

数据生成和预训练方法的共同好处,是无需像微调方法那样,需要解决语义和知识向量的不一致(Heterogeneous Embedding Space)。但其问题是,bert在fintune时容易忘记在之前学到的知识。不能免俗,下文的方法依然是属性,三元组,图融合的升级。

2.1 百度ERNIE(entity masking)

百度ERNIE是非常早的知识语义融合工作,其最大的价值还是对Bert的中文化改进。 其主要概念就是”entity masking”。因为bert的单token模式,无法对成语,或英文中常见的“pull up”等进行分析。 ERNIE通过语法解析,获得短语(phrase)和实体(entity)信息。 并以一定比例mask掉这些短语。

undefined

这类方法能够捕捉实体,却不提供实体的属性,更不能捕捉实体间的关系。 算是一种最简单的知识融合。论文也有缺点: 缺乏消融实验,例如增加了较多的训练语料,增益有多少来自于knowledge的增强?

2.2 清华ERINE

百度方案集中在预训练模型上,而清华的ERNIE则集中在于知识图谱的联合建模上,即通过TransE算法,将encode后的知识图谱融入到预训练模型。

undefined

具体的方案是多层T-Encoder和K-Encoder, 其中K-Encoder是主要的创新点。 信息融合层的设计值得借鉴,在这之后第i个aggregator采用了information fusion layer将两个信息进行了融合,这边不是采用简单的向量相加得到一个向量,而是先combine后divide的方式,分别得到新的token embedding以及entity embedding。其缺点是: 知识图谱中的关系信息没有被用到(这和entity-mask一样)。 由于实体向量和词向量使用不同的方法得到,存在向量空间的不一致。

2.2 CoLAKE

CoLake增加了节点的邻居信息,将图结构知识融入语义模型, 结构图如下:

undefined

CoLAKE[7]在加入实体嵌入表示的同时也加入它的上下文信息,允许模型在不同语境下关注实体的不同邻居,同时学习文本和知识的上下文表示。为此,CoLAKE将文本和知识的上下文组成了一张图作为训练样本,称为word-knowledge graph(WK graph),然后在图上做MLM同时学习文本和知识的表示。和K-Bert比较像,区别在于K-Ber作用于finetune,而CoLake作用于pretrain。 相比于ERNIE和KnowBert只使用了语义信息(semi-contextualized),CoLake则使用了完整的上下文(语义+图谱),并通过统一的pretrain task,学习统一的表征。

Transformer也能用在graph,文本也可看成全连接的graph,但一般的图怎么转换为文本序列送入到transformer中?在CoLake中, 类似于Bert的Position Embedding, CoLake也为每个entity和relation增加soft-position index。 如下图所示,在word graph使用原始句子顺序,而在knowledge graph中使用层次遍历,并支持可重复的postion index。

undefined

为了在Transformer 编码上图的序列时能体现节点的连接属性。CoLake使用了类似UniLM的Mask self-attetion技术,使得每个节点只能看到与它相邻的1跳节点信息。 但这对“全连接”的word graph并不起作用。

undefined

CoLake虽然是图谱向语义融合,但并不止于此。 通过mask不同类型的entity,可实现不同的下游任务:

  • mask word节点:对应于传统的MLM
  • mask entity: 能帮助语义和知识向量完成对齐
  • mask relation: 等价于关系抽取和链接预测。

训练完成后,在finetune和推理阶段,图谱结构可以不进行拼接,不拼也能一定程度上提升效果,这大大降低了后处理的难度。 在知识密集型任务中比较有用。

其改进空间是,”允许模型在不同语境下关注实体的不同邻居“,但实际上挑选邻域子图时,和上下文无关。当邻居较多时,可能采样到和文章上下文完全无关的节点。

3. 微调阶段

下面是在微调阶段进行知识融合的方案。在我们的场景中,finetune下游任务主要是分类和双塔的度量学习(如相关性和召回等)。

3.1 增加辅助任务+ 多任务学习(MTK)

增加辅助任务,例如在item_emb的基础上增加分类任务,预测item的细粒度属性,最终强迫表征模型学到表征中蕴含的类目信息。最终的loss是matching_loss和type loss的求和,并进行多任务学习。这些任务可能是:

  • query-item类别是否一致,
  • 包含的entity, type是否一致
  • 预测item类别

这类方法相对简单,很有用。不会修改bert中的特征。但缺点是:知识必须是可枚举的类目型属性,很难抵御特征缺失和属性冲突的问题,例如健康意外险。

3.2 属性拼接方法

通过在item上拼接属性,例如title+ [SEP] + Property1+ [SEP] +Property2 来融入知识。该方案也很简单,但缺点也明显,无法传导关系,对属性的缺失值和错误值比较敏感。可以试图通过随机mask掉部分属性的做法(转化为空字符串)来增强鲁棒性。

另一种做法,可以解决属性缺失,我们将传统的知识补全任务优化目标从 Head_Entity + Relation = Tail_Entity 改为 Head_Entity + Property = Query。 参考Improving multi-hop question answering over knowledge graphs using knowledge base embeddings.

以上两种方法,可以参考下图在保险上的真实结构:
undefined

3.3 K-Bert(北大+腾讯)

首先句子会经过一个知识层(knowledge layer),然后将关联到的三元组信息加入到句子中,形成一个句子树。结构如下图所示:

undefined

文章非常类似于CoLake, 通过soft-position给增加的语义信息编上位置。 为了使得各个分叉的词不会跨分叉互相影响,又引入了可见矩阵Visiable Matrix.(可见矩阵在XLNet, UniLM上都有使用。) 只不过CoLake的原始词和关联词分别分开放置,而K-Bert则混合了起来,使得visual matrix变得更加复杂。

方法 CoLake K-Bert
应用过程 pretrain finetune
融入的知识结构 三元组 三元组
三元组过滤逻辑 随机抽取15个 不过滤
原文本构图方式 原文本构成全连通图 原文本构成链表
图节点元素 短语(phrase) 单词
混合方式 左句子右图谱 原始句子和图谱混合表达

K-Bert最大的好处是,它可以直接加载市面上已经公开预训练好的Bert模型,而不用重新训练。在通用问题上提升不太明显,但在专业领域上提升较多。论文的问题是:通过Visiable Matrix仅仅影响了mask-self-attention, Bert的其他步骤不会影响吗?

3.4 增加邻居节点信息(TextGNN, QA-GNN和DHGAN)

这类方法不会修改bert模型,检索子图然后获取knowledge。 在打分的过程中也需要检索子图, 因此依赖检索中的精度对齐。

除了拼接属性,还可以拼接item的邻居。 这类方法可以参考TextGNN和DHGAN(例如在点击图上,query拼item, item拼query等),在原始论文中,它们都应用于召回相关性的类双塔模型中,因此被放置到finetune分类中。CoLake与这类方法也非常接近,区别仅在于CoLake原始论文中没有增加finetune任务,本质应当都差不多。

在TextGNN中,为了降低噪音,提升邻居节点的相关性,通常可使用点击率和点击数过滤的原则,取top3的邻域节点等。在搜索场景下,长尾query缺乏足够的曝光点击行为,因此考虑基于近似最近邻(Approximate Nearest Neighbor,ANN)的邻域补全技术,使用邻域图搜索技术,找到当前长尾query最近邻的高频query来做替换。

TextGNN用一种简化思路处理关系型知识。 通过GNN(如GAT,GraphSage)等方法建模邻域关系。通过图数据的附加信息对文本编码器进行补充,实现了比仅靠纯语义信息所能实现的更强的性能。

undefined

QA-GNN相比TextGNN,会检索包含该节点的子图,通过将Node节点和context融合,并经过一个分类器,增加邻居节点相关性的判定,对无关节点进行剪枝。 不过本方法主要应用于QA领域来做选择题。QA-GNN结构如下:

undefined

DHGAN是TextGNN方法的一个优化和特化, DHGAN双塔模型中, 会同时考虑同构邻居和异构邻居,并使用两层注意力网络。它在两个部分增加了邻居信息, 分别是在DHGAT中增加同构的query2query,异构的 query2shop的邻居节点;以及在TKPS模块中,增加query下产生交易的商品title信息。

它更面向于实际应用,通过拼接user这类feature,实现了端到端的召回,相关性甚至排序。若说到改进之处,一方面DHGAN号称它能很好地解决长尾query问题,但它仅通过拼接q-s-i图来间接地学习长尾词,问题是长尾词甚至都很难关联到合适的shop和item,与TextGNN显式地通过ANN寻找高频临近query相比,还是显得有些粗糙了。另一方面工业属性较强,增加了非常多的模块和trick,进而限制了它能适应的范围。

undefined

下图展示了它们之间的区别:

| 名称 | TextGNN | DHGAN | CoLake |
| -------- | -------- | -------- | --------- |
| 图来源 | q2k | q2q,q2s, q2i,s2s,s2i | 知识图谱 |
| 邻居类型和数量 | 同构,top3 | 同构+异构,邻居数6 | 异构的三元组,15个三元组|
| 特征 | 无 | 加入user特征 | 未增加side-feature |
| 聚合方式 | 单层GNN | DHGAN: 层次图注意力,双层\n TKPS: term AVG-pooling*N | 层次遍历+ bert encoder |
| loss | 交叉熵 | 交叉熵+ 邻居节点相似度 | MLM+NSP多分类 |
| 孤立节点优化 | ANN映射到高频query | | 未提及 |
| 模型结构 | 双塔+dot | 双塔+dot | Bert MLM |
| 应用 | 搜索相关性 | 搜索端到端 | 见2.3Colake一节 |

上表中, q代表query, s为shop, i为商品item. k为keywords(在微软搜索中是赞助商打在item的keyword)
在异构图中,通常会增加type-embedding来区别node types。 以CoLake为例,类型如word, entity和relation .

4. 推理阶段

在推理阶段融合的主要思想是设计多个模型,分别注重语义和知识。 通过模型集成(ensemble)的手段融合多个模型结果。在最终结果上,实现了知识和语义的融合。

在此方法的基础上,通常会增加模型蒸馏,融合到一个student模型中。例如Distilling Structured Knowledge for Text-Based Relational Reasoning[6]。 它蒸馏模型表征,并增加了对比学习(contrastive learning):

undefined

5. 使用语义用于图谱建模(Bert->KG)

主要可用于知识库补全(如三元组分类,链接预测和关系预测),结合预训练模型,能将更丰富的上下文补充到模型中。

6.1 KG-Bert

在原始bert中,是通过任意的span来区分词和文档序列。 但在KG-bert里,我们明确地将它们区分为h,r,t。 它们会经过一个统一的Bert生成向量,而非随机生成的向量表征。 item内部的实体,明确地用[sep]来分割。 h,t分享segment emb, r除外,因为r和ht是本质不同的。

KG-Bert(a)和KG-Bert(b), 本质的区别在于问题定义不同,前者是h,r,t判断是否为一个正例; 后者为一个多分类问题。 在样本构造时,负样本是通过正样本随机替换h或t来进行的。以下是KG-Bert(a)的结构图:
undefined

KG-Bert的缺点也比较明显:

  • 只使用三元组用于图谱建模
  • KG-Bert只使用了Bert的pretrain后的向量表征,并没有做联合训练
  • 所有的h,r,t都必须全部过bert才能预测,这导致了线上推断会非常的耗时
  • 同时只局限于预训练加载,并没有实现端到端训练。

6.2 与图结构融合训练

笔者暂时还没有看到这类论文,待补充。主要可能用于在工业界的具体应用上进行联合训练。

6. 其他方法

6.1 小样本和元学习策略

元学习也是解决知识融合的一路策略,因为本质上知识在表现形式上就是小样本,人就是通过简短,寥寥几次的文本图像信息,来获得知识的。小样本学习的几种分类:

  • Model Based: 在通过模型结构的设计快速在少量样本上更新参数,直接建立输入x和预测值P的映射函数
  • Metric Based: 通过度量batch集中的样本和support 集中样本的距离,借助最近邻的思想完成分类;
  • Optimization Based: 通过特定的优化器来解决。

此处不限于在GPT-3上进行小样本的finetune,也是一种思路。度量学习也是一种解法。限于笔者水平,还难于详细介绍元学习的具体细节,有兴趣的读者可以参考相关内容。

7.2 待补充

持续啃论文中。

总结

以上哪些方法最好? 笔者认为,需要非常仔细地思考当前场景的具体情况,包括图和图谱的建设完备情况,已有的语料规模和质量,以及是泛知识场景,还是知识密集型场景(如医学,金融等领域)。

简单的方法未必不好,如语料生成(1.1),辅助任务(3.1)和属性拼接(3.2),它们可以精准地控制知识融入的范围,并在训练前进行检查。 而那些将三元组甚至子图融入到语义模型的方法, 需要精细的控制(如三元组的筛选和子图的裁剪),否则很容易就为语言模型加入大量噪音(knowledge noise) 。

需要针对数据集的知识类型,选择合适的融合方法。泛知识语料,优先使用数据生成和pretrain类方法,而对知识密度较高的专业领域,建议使用微调方法,更容易实现精细知识控制。 但在融入子图时,就必须对子图进行采样剪枝,否则就会融入大量噪音。

我们能将各类方法的基本元素予以抽象,它们只是这些元素的不同排列组合而已:
undefined

并将各类方法的优缺点总结成下表:

融合方向 在何时融合 方法 团队 融合方式 缺点 改进点
--- -- -- -- -- --- ---
属性->语义 微调 side-task 蚂蚁 增加辅助任务来融入知识 只能是分类标签,交互能力太浅 属性拼接更深一点
属性->语义 bert-finetune 属性拼接 将属性以SEP添加到句子中,类似K-Bert 无法建模关系,属性缺失性能大幅下降,且不是所有知识都能划分类目 使用VM或mask来降低对属性的依赖
图谱-> 语义 数据生成阶段 生成数据 蚂蚁 通过知识生成更多训练数据 数据量陡增,和真实样本分布不同
bert-finetune 融合GCN GCN标准+ bert表征 部分场景GCN规模不大
实体->bert bert-finetune entity-mask 百度ERINE mask掉整个entity 无法建模关系,适用于长文本
图谱->bert bert-finetune K-bert 北大,腾讯 将三元组挂载在句子树+ VM baseline不强,只能建模一阶关系,引入更多噪声
bert->图谱 pretrain KG-bert 将bert训练后的结果,融入图谱进行训练 所有的三元组都要打分,耗时过大
图谱->bert bert-finetune K-encoder 清华ERINE TransE算法,图谱encode融入到预训练模型 ?
图谱->bert pretrain 图语义融合 蚂蚁 构图后(query,属性,)生成训练样本 ?
图谱->bert pretrain Text GNN WWW2021 ?
并行 pretrain Distilling Structed EMNLP 2020 ?

从以上的分析来看,可以做的方向还有很多。

首先,知识融合有几种层次,除了实体对齐外,还有概念层的知识融合、跨语言的知识融合等工作。本文限于篇幅,主要笔墨用在了属性和关系类知识到语义模型方面;

实际上不仅是短文本,长描述信息这类知识如何建模却少有人讨论;其次,当前针对下游特定任务设计Pre-training task还处于探索期,是一个值得持续深耕的方向;针对未见过的分类属性,如何自适应地学习也是需要探索的,可以参考阿里巴巴云小蜜的相关工作[9]

再次,在工业界,如何将语义和图等信息,与用户个性化等信息联合建模,用于召回,相关性甚至个性化排序方向,都是值得深入研究的话题:除了文中已经提到的DHGAN,还有KGAT,它将user-item和知识图谱融合在一起,形成一种新的网络结构。

限于笔者知识,文章中难免有疏漏和错误,欢迎读者一起讨论。

参考文献:

[1] Align, Mask and Select: A Simple Method for Incorporating Commonsense Knowledge into Language Representation Models arxiv 2019
[2] Common Sense or World Knowledge? Investigating Adapter-Based Knowledge Injection into Pretrained Transformers. emnlp2020 workshop
[3]基于Bert和UniLM强知识融合的保险语义相关性算法
[4] Lazada搜索语义匹配模型2.0&3.0-文本与知识的融合
[5] A Dual Heterogeneous Graph Attention Network to Improve Long-Tail Performance for Shop Search in E-Commerce
[6] Distilling Structured Knowledge for Text-Based Relational Reasoning
[7] CoLAKE: Contextualized Language and Knowledge Embedding
[8]QA-GNN:
[9] 知识表示与融入技术前沿进展及应用 https://zhuanlan.zhihu.com/p/343814502

目录
相关文章
|
2月前
|
机器学习/深度学习 人工智能
类人神经网络再进一步!DeepMind最新50页论文提出AligNet框架:用层次化视觉概念对齐人类
【10月更文挑战第18天】这篇论文提出了一种名为AligNet的框架,旨在通过将人类知识注入神经网络来解决其与人类认知的不匹配问题。AligNet通过训练教师模型模仿人类判断,并将人类化的结构和知识转移至预训练的视觉模型中,从而提高模型在多种任务上的泛化能力和稳健性。实验结果表明,人类对齐的模型在相似性任务和出分布情况下表现更佳。
70 3
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
AI自己长出了类似大脑的脑叶?新研究揭示LLM特征的惊人几何结构
近年来,大型语言模型(LLM)的内部运作机制备受关注。麻省理工学院的研究人员在论文《The Geometry of Concepts: Sparse Autoencoder Feature Structure》中,利用稀疏自编码器(SAE)分析LLM的激活空间,揭示了其丰富的几何结构。研究发现,特征在原子、大脑和星系三个尺度上展现出不同的结构,包括晶体结构、中尺度模块化结构和大尺度点云结构。这些发现不仅有助于理解LLM的工作原理,还可能对模型优化和其他领域产生重要影响。
44 25
|
25天前
|
机器学习/深度学习
NeurIPS 2024:标签噪声下图神经网络有了首个综合基准库,还开源
NoisyGL是首个针对标签噪声下图神经网络(GLN)的综合基准库,由浙江大学和阿里巴巴集团的研究人员开发。该基准库旨在解决现有GLN研究中因数据集选择、划分及预处理技术差异导致的缺乏统一标准问题,提供了一个公平、用户友好的平台,支持多维分析,有助于深入理解GLN方法在处理标签噪声时的表现。通过17种代表性方法在8个常用数据集上的广泛实验,NoisyGL揭示了多个关键发现,推动了GLN领域的进步。尽管如此,NoisyGL目前主要适用于同质图,对异质图的支持有限。
38 7
|
4月前
|
机器学习/深度学习 vr&ar
Sora视频重建与创新路线问题之Perceiver AR模型模态无关的自回归生成如何处理
Sora视频重建与创新路线问题之Perceiver AR模型模态无关的自回归生成如何处理
|
7月前
|
机器学习/深度学习 编解码 自然语言处理
一文综述 | 万字文总结,近几年都有哪些语义分割模型用了Transformer方法呢?
一文综述 | 万字文总结,近几年都有哪些语义分割模型用了Transformer方法呢?
544 0
|
7月前
|
机器学习/深度学习 存储 算法
基于多模态融合与图神经网络的用户精准感知系统研究
基于多模态融合与图神经网络的用户精准感知系统研究
226 0
|
机器学习/深度学习 人工智能 算法
AI Earth有没有相关文档或论文介绍平台地物分类、目标提取、变化检测等算法的原理呢?
AI Earth有没有相关文档或论文介绍平台地物分类、目标提取、变化检测等算法的原理呢?
345 1
|
机器学习/深度学习 数据可视化 自动驾驶
NeurIPS 2022 | 准确建模多智能体系统,斯坦福提出隐空间多层图模型
NeurIPS 2022 | 准确建模多智能体系统,斯坦福提出隐空间多层图模型
201 0
NeurIPS 2022 | 准确建模多智能体系统,斯坦福提出隐空间多层图模型
|
机器学习/深度学习 人工智能 算法
一文尽览!弱监督语义/实例/全景分割全面调研(2022最新综述)(下)
今天分享一篇上交投稿TPAMI的文章,论文很全面的调研了广义上的弱监督分割算法,又涵盖了语义、实例和全景三个主流的分割任务。特别是基于目标框的弱监督分割算法,未来有很大的研究价值和落地价值,相关算法如BoxInst、DiscoBox和ECCV2022的BoxLevelset已经证明了,只用目标框可以实现可靠的分割性能。论文很赞,内容很扎实,分割方向的同学一定不要错过!
一文尽览!弱监督语义/实例/全景分割全面调研(2022最新综述)(下)
|
机器学习/深度学习 人工智能 自然语言处理
多模态如何自监督?爱丁堡等最新「自监督多模态学习」综述:目标函数、数据对齐和模型架构
多模态如何自监督?爱丁堡等最新「自监督多模态学习」综述:目标函数、数据对齐和模型架构
786 0
下一篇
DataWorks