分享嘉宾:黄正杰 百度 资深研发工程师
编辑整理:杨洪珍 华东政法大学
出品平台:DataFunTalk
导读:本文的题目为知识增强图语义理解技术,主要介绍:
语义理解与图:预训练模型与外部知识
ERNIESage:百度语义图理解技术
知识增强预训练:隐式与显式知识表示
工业落地应用:案例介绍
第1节主要介绍:文本匹配的两种视角、ERNIE预训练模型、GraphSAGE模型。
1. 文本匹配的两种视角
顾名思义,图语义理解=图+语义理解。图神经网络是近年来火热的新兴技术,主要作用是建模一些不规则的非结构化数据。语义理解+图网络是希望用图的方法引入外部非结构化的知识数据来提升语义理解的能力,产生语义理解的新技术。
文本语义匹配问题是较常见的语义理解任务,也是在工业界比较常见的一个场景,如搜索,推荐,排序任务上都会涉及相关的技术。文本匹配有多种视角。第一种视角是语义理解视角,从纯文本的角度去理解。常用的方法如用语义匹配的双塔模型直接对一个文本进行建模,然后去评估两个文本的相似度;第二种视角是图学习视角。与学术场景不同的是,工业界搜索引擎和推荐系统具有丰富的知识,如在推荐系统中的点击序列,搜索的点击与文章标题的关系,文章百科类知识等都有丰富的非结构化信息。常见的文本可以通过图的方式来连接起来。如果所有的文本都可以通过某种方式来组织成一张文本图网络的话,文本匹配在图视角来看就变成链接的预测问题。
百度在语义理解视角方面做了很多尝试,如在BERT基础上进行了拓展和升级,研发出了预训练模型ERNIE,通常ERNIE模型建模时只会关心文本的单一序列。以图的视角进行图上的节点建模以GrahSage举例,只会关注图结构上的一些信息。
2. ERNIE预训练模型
简单介绍一下ERNIE预训练模型。ERNIE1.0的核心思想是改进BERT的masklanguage model模块,用实体mask方法去取代随机mask token,让预训练模型一定强度的捕捉一些额外知识。
ERNIE2.0的升级主要是通过构建多个自监督学习任务,在多个数据上进行持续学习,进一步提升预训练模型的效果。
因为在预训练模型上的突破使得ERNIE模型在多个语义理解任务上取得较大受益,ERNIE模型为GLUE榜单上的第一名,斩获SemEval2020五项世界冠军。
更多模型可访问百度文心平台:
https://ai.baidu.com/easydl/nlp
3. GraphSAGE模型
简单介绍下图结构方面的建模, GraphSAGE是比较常见的图神经网络。简单阐述下图网络思想,图神经网络可以简单类比在图象上的卷积操作。例如在图像上做3*3的卷积,相当于对一个像素周围的像素点,通过不同的权重叠加,然后以聚合后的小图片代表小范围的图片表示。图的卷积上,数据没那么规整,因为每个节点的邻居数量是不同的。我们可以用类似的概念,只是不像图像每个方向的权重是不同的,而是对所有的邻居一视同仁。对邻居通过加权的方法叠加,用周围的邻居代表自身。
GraphSAGE全称Graph SAmple and aggreGatE(图采样与聚合),在图网络上特别是工业界的场景,当节点很多时去建模一个单一节点会涉及多阶段邻居,邻居的数量也会随着阶数指数暴涨。一般会通过采样的方式选取不同的邻居来聚合作为中间节点的特征。
已有的办法无法同时满足结构建模和语义理解,如GraphSAGE模型对于链接关系和文本的建模会过于简单;像ERNIE这种纯语义模型,缺乏对外部知识的建模。
ERNIESage技术结合了结构建模和语义理解技术,技术开源地址:
https://github.com/PaddlePaddle/PGL/tree/main/legacy/examples/erniesage
ERNIESage主要通过PGL图神经网络框架和语义表示两个模块组成。图结构的建模会按照ERNIE模型作用在文本图上不同位置来命名。模型有很多的组件包括定制化训练池,因为要大规模的预测所以有大规模的推理引擎来整体支持一些应用的落地。
想在文本上使用一些外部的知识以及图信息,首先需要解决来源问题。
① 如果有大量的业务数据时,可以通过业务逻辑来抽取相关的领域知识。例如,在推荐系统上,可以根据文本的点击序列构造文本之间的关系。
② 在业务数据较少时,利用一些领域相关的知识,在做搜索问题相关的任务上可以使用query title之间的关系作为补充。
③ 无法获取领域相关的知识时,可以通过像百科类的通用知识进行知识的补充。所有的业务知识,领域知识,通用知识会以图的方式绑定要想要表示的文本上。
例如在业务上有title之间的关系,在领域知识上有title-query之间的关系,在通用知识上通过召回的办法获得一些spo三元组的关系。这些知识都通过图的方式绑定title 上。知识越贴近业务效果会越好。有图后需要对图进行建模。
ERNIESage-Node是一种最简单直接了当的方法。在GraphSAGE的最底层接入ERNIE模型,通过图聚合的方法获取节点表示。ERNIE模型会跟随着下游任务进行finetune。
ERNIESage-Edge模型与ERNIRSage-Node模型不同,因为单纯的节点模型建模缺乏了节点与外部知识之间token级别的交互。因此在Edge模型上,把ERNIE模型挪到图的边上去,做token级别的交互获取节点的表示。
主要思想是借鉴语义任务上的双塔模型与单塔模型。在学术上,双塔模型叫Bi-Encoder,单塔模型叫Cross-Encoder。大多数场景下,基本会有一个共同的结论:单塔模型由于有更细粒度的token间的交互会优于双塔模型。因此在Edge模型上引入单塔模型来增强模型的建模能力。
ERNIESage-1 Neighbor进一步扩大单塔的覆盖范围,把一些邻居通过采样的方式拉回来一部分,利用互不相接的Attention Mask以及独立的Position Embedding来保持神经网络聚合函数不变性的要求,将单塔ERNIE模型用在图神经网络的聚合函数上。
前面三种策略都是作用于一阶邻居。结合node和edge的方案,将token-level的交互扩展到通用多层聚合。首先用ERNIE模型获得context表示,在每一层邻居聚合时,将中心节点的context和邻居进行拼接,通过多头transformer进行中心表示抽取,最终通过聚合的方式,获得中心表示的汇总。每一层重复这样的步骤,就可以做到每一层都有token级别的特征交互。
以上4种模型是按照ERNIR在整个图上的作用区域进行划分的。Node作用于初始节点上,Edge作用于初始边上,1 Neighbor是作用在局部的邻居上,N Neighbor是作用在整个文本图的每一个环节,计算复杂度递增。
已经在多个场景下验证了ERNIESagede效果,例如在搜索场景上,ERNIESage本身更注重语义,ERNIE模型会优于GraphSage模型。在推荐场景下会更注重结构的信息,所以ERNIE模型效果会略差于GraphSage模型。因此可以通过ERNIESage的方法同时建模结构信息和文本信息,充分保持两种建模的特性,在多个场景上效果挺好。
举一个极端的语义理解失败的Case,如碰到一串神秘的数字,在没有额外知识的辅助下,通过ERNIE在下游任务上finetune,做一个语义召回,得到的也是一些神秘序列。当引入额外知识如搜索的点击关系,或者推荐系统的推荐关系。再用ERNIESage在文本图上建模,就会获得额外的知识。纯语义理解的ERNIE在通用场景下更像学习模型的先验知识。当有后验知识后,在做模型的匹配上会更加精确。
在处理文本图方面,把ERNIESage应用到了TextGraph的多步推理的比赛中。2020年比赛举办到第14届,TextGraph的任务是给出一个问题和答案,需要找出和答案相关的解释,解释是固定的一个库。
举办方会给出问题,答案,解释的少量标注数据。百度对给出的问题、答案、解释,通过关键词、实体词建了一张庞大的图。任务涉及的提问,回答覆盖的范围很广,如包括化学变化,日照/季节变化等科学常识。
百度将ERNIESage应用到TextGraph比赛中,做问题答案解释的打分,最终取得第一名,领先第二名2%。
ERNIESage模型将知识作为文本外挂的邻居关系,通过显式的方法作用到节点表示上。显式引入知识就是在文本理解上通过外部知识库做知识召回,再通过更复杂的语义模型对文本进行建模获得文本表示。所以上线时,首先涉及额外知识库的引入,上线逻辑更复杂;其次知识建模模块更复杂,计算效率变慢。
业务方提出希望能扩增知识收益同时又不想有线上资源的额外消耗,折中办法就是隐式引入知识。首先通过预训练的方式“尽量”捕捉额外知识,将知识设计成任务灌输到模型的参数中,同样对文本做词库的召回。相比于显示引入知识,隐式引入知识会用预训练的任务即通过参数学习的方法把知识隐式加入模型中。下游应用时就可以单独把知识召回模块剥离开来,只使用文本模型。
介绍一下隐式知识引入预训练办法。首先会在文本知识库中拉回对应的知识,使用Mask策略Mask掉文本一些Token词 。
文本照常过预训练模型,获得一个CLS和Context的表示,再拿出CLS通过Transformer模块建模文本和知识之间的交互,参考了Transformer-xh的结构。通过Transformer交互过的CLS又会筛回到文本表示本身去。再通过Transformer根据聚合过的CLS去补充缺失的Context的信息,做语言模型的还原。
中间像八爪鱼的模块主要负责知识的聚合,主要任务是捕捉知识之间的关系,帮助在缺失的Context上从别的信息源寻找额外的信息。
通过知识交互后的CLS会更好的辅助Context信息,因为Context在低层被Mask过有信息的缺乏。通过知识增强过的CLS还原被Mask的Tokens。
在下游任务的应用中,有很多应用的方式。当保留顶层Transformer的知识聚合模块, 相当于得到了经受过Pretrained的ERNIESage模型。当把聚合模块去除,只选取低层ERNIE来做CLS和文本的表示时会得到一个隐式模型。在计算速度和模型大小上不会有太大变化。
通过知识增强Post-Pretrained的ERNIE模型,经测试尽管拆除一个聚合模块,相较于用ERNIE模型直接finetune效果有较大提升。同时相较于直接使用显示的知识,效果略差。通过post-Pretrained的ERNIESage模型,由于聚合模块本身经过Pretrained,效果会比单纯用ERNIESage略好。
本节介绍一下工业落地的两个具体案例。
① 首先来介绍关键词触发,它是根据query的搜索序列,来构造query之间的关系;也会通过query买词构造query买词二步图。在这样的异构关系上进行ERNIESage的训练建模,最终得到query买词的表示。再通过ANN的召回来做query的触发。
相对于GraphSage基线,ERNIESage引入了一些语义模型,会带来更强的语义相关性。
② 第二个案例是地图兴趣点检索,主要场景是搜索地图时对搜索到的地理位置做相关性排序。由于query侧在线预测时间较高,会使用浅层的ERNIE-Tiny模型进行建模。对于POI来说由于地理位置信息相对稳定,会使用较复杂的模型进行建模,以及离线灌库。对于POI的表示就是通过构造POI的关系,使用ERNIESage来建模POI之间的表示。在线时通过查表的形式,拿到embedding和query进行在线匹配打分。
总结:首先将知识以图的形式加到语义理解模块中,利用ERNIESage进行语义图的建模,最后是设计了一些预训练技术,例如在显示的挂载知识时,上线会碰到的一些困难,可以通过预训练的方法解决。有两个产物,第一个产物是显示训练模型效果的提升,第二个产物是隐式模型通过预训练获得知识,在线应用时落地效果好。
Q:ERNIE大多处理的是文本性内容,如果想加入些视频,图片类的数据源。怎么设计embedding环节?
A:一般用多模处理,像图像的visual-transformer,先用resnet把一个图片抽取成很多小patch,再塞到ERNIE模型中。多模数据可以考虑ERNIE-Vil模型,ERNIE-Vil是文本+视觉的模型。
Q:task的token为什么要先用mask再用tranfomer进行学习?
A:如果token不mask直接通过transfomer上去,context信息本身没有缺失。做预测时最上面的language model 会集中用自己本身的信息decode回自己的token。如果在底层上对文本进行mask的话,信息会缺失,会通过CLS和transfomer以及其他外部知识获得知识的补充。上层的CLS和context(局部知识)做信息的还原。因此能够在一定程度上,让transformer做到知识的交互。(详情见“知识增强预训练”页PPT)
Q:图谱的节点多在建模相邻节点时,主要的节点都会encoding。有没有其他的筛选方式?召回过程中有无自回归的情况?
A:多个模块组合,遵从召回排序的方法。即来了一个节点会卡一个阈值,把相关性高的留下来。拿了知识后进行预训练,预训练完成后在下游任务上会有一个finetune。最终的任务不是预训练任务,而是会拿CLS做下游任务,自回归只是前面预训练阶段。
Q:ERNIESage相关的开源论文或其他资源可用吗?
A:Github上有具体技术的介绍,相关的论文可以搜textgraph比赛,ERNIESage在文本图推理TextGraph-14 Coling协办比赛中有小的论文介绍。(可参考“ERNIESage在文本图推理TextGraph-14 Coling协办比赛中的应用”页PPT)
Q:如何获得与text强相关的知识,如何保证这些知识一定能够还原成为mask token?
A:尽量做这样的事情。知识从重要性排序上来讲,业务知识会更贴近。当没有业务知识时用通用知识也会相应提升,越往通用上去,提升会越少。领域知识和业务知识对模型的效果提升会很大。尽量去做,越贴近下游任务本身,效果会越好。(详情见“文本图的来源:知识引入”,“显式Explicit/隐式Implicit引入知识”页PPT)
Q:对Query的长度有限制吗,对长度有什么处理方式吗?
答:不会用太长的长文,Query太长效率会低,这是长文建设方面的问题。
Q:目前ERNIE和ERNIESage在百度有什么应用的领域或者已经应用的场景和产品吗?
A:在百度的搜索推荐,商业广告,地图排序这种有较多文本图关系的场景都会用到这个模型的。
今天的分享就到这里,谢谢大家。
在文末分享、点赞、在看,给个3连击呗~
分享嘉宾:
专知便捷查看
便捷下载,请关注专知公众号(点击上方蓝色专知关注)
后台回复“知识图谱” 就可以获取《知识图谱专知资料大全》专知下载链接