查看原文
其他

【源头活水】基于认知图谱实现多跳阅读

“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。

作者:知乎—lpc

地址:https://www.zhihu.com/people/lpc-59-61


论文来源: ACL 2019
论文链接: https://arxiv.org/abs/1905.05460
代码链接: https://github.com/THUDM/CogQA‍

01

前言
尽管基于深度学习的自然语言处理技术已经在多个领域上取得了杰出的成绩,由于深度学习的黑盒机制和其较差的可解释性。使得深度学习的模型虽然具备较好的感知能力,但却不具备认知能力。这种特性会使得模型在面对复杂的语义信息时可能出现错误的判断。对于文本推理问题,当我们使用传统算法(如 BIDAF, BERT, XLNet)来解决问题时,模型算法可能只会找到局部的片段,仍然缺乏一个在知识层面上的推理能力,这是当前大多数的深度学习算法所欠缺的。2020 年 3 月,清华大学计算机系唐杰教授在中科院“先导杯”并行计算应用大奖赛启动仪式带来《人工智能下一个十年》的主题报告。介绍了认知图谱,核心概念为知识图谱+认知推理+逻辑表达。认知图谱的概念旨在用知识表示、推理和决策,包括人的认知来解决上述问题。该解决方法的基本的思想是结合认知科学中的双通道理论。在人脑的认知系统中存在两个系统:System 1 System 2,如下图所示。
图1. 认知科学双通道理论
System 1 是一个直觉系统,它可以通过人对相关信息的一个直觉匹配寻找答案,它是非常快速和简单的;而 System 2 是一个分析系统,它通过一定的推理、逻辑找到答案。在 NIPS 2019 上,图灵奖获得者 Bengio 在大会的 Keynote 也提到,System 1 到 System 2 的认知是深度学习未来发展的重要的方向。因此国内外目前也有许多相关研究按照这个方向进行探索。
本文作者将认知图谱相关的理念运用于多跳阅读理解中,以下为我个人对本文章的理解,若存在理解偏差请各位指教~

02

正文
深度学习模型在机器阅读理解方面取得了重大进展,甚至在单段问答(QA)基准上的表现超过了人类,然而在一些比较复杂的阅读理解任务上(如: 多跳阅读),计算机和人类之间还是存在巨大的差异。作者分析了其中的几大挑战:
  1. 推理能力: 单段问答模式倾向于在与问题匹配的句子中寻找答案,这并不涉及复杂的推理。因此,多跳阅读将成为下一个需要攻克的领域。
  2. 可解释性: 显式推理路径能够验证逻辑的严密性,这对QA系统的可靠性至关重要。而人类可以解释答案每一步的解决方案,这表明可解释性是一个有序的和实体级别的解释。
  3. 可伸缩性。对于任何实际有用的QA系统,可伸缩性是必不可少的。这里的可伸缩性指的是能够在大量的知识中快速的预检索有用的知识信息。
因此,针对这些挑战的解决方案可以从人类的认知过程中受到启发。双过程理论认为,我们的大脑思考过程由两套系统构成: System1 和 System 2:
  • System 1: 我们的大脑首先通过System 1隐式的、无意识的和凭借直觉的过程来检索相关信息。
  • System 2: 在System 1过程的基础上,再进行一个显式的、有意识的、可控的推理过程,即System 2。
System 1可以根据请求提供资源,而System 2可以通过在工作记忆中进行顺序思考来深入挖掘关系信息,虽然速度较慢,但具有人类特有的理性。对于复杂的推理,这两个系统是协调执行快速和缓慢的思考迭代。
人类的推理能力主要依赖于信息关系结构,作者直观地采用有向图结构对多跳问答的认知过程进行一步步的演绎和探索。本文的阅读理解设置中,认知图谱  中的每个节点对应一个实体或可能的答案  ,也可以互换表示为节点  (这里应该是指既可以作为实体也可以作为答案节点)。作者使用BERT模型构建System 1,使用GNN模型构建System 2。如下图所示:
图2. CogQA实现概述。System 1访问节点x时,根据System 2发现的clues[x, G]生成新的跳数和答案节点。它还创建初始表示形式sem[x, Q, clues],System 2中的GNN以此为基础更新隐藏表示X [x]。
System 1作为抽取组件,根据实体 检索出介绍性段落(引言部分)  并从中抽取候选答案和有用的下一跳实体。然后将这些新的节点用于认知图谱 ,为System 2提供明确的结构。
System 2运用深度学习计算节点  的隐藏表示  。因此System 1在提取span时需要将总结为一个向量(就像BERT模型做分类问题时使用第一个Token向量代表整个句子的表示)。System 2根据图谱结构对进行更新作为推理结果。
图3. 基于认知图谱的多跳阅读理解的一个例子。每个跳节点根据其文章开头的提示对应于一个实体(例如,"Los Angeles")。图中圆表示ans节点,即问题的候选答案。认知图谱模仿人类的推理过程。图中的边是思考过程中当引用一个实体的时候其“意识”建立的。实心黑边是正确的推理路径。
对于多跳问题,传统的检索-提取框架可能会牺牲后续模型的潜力,因为远离问题的多个跳段与问题共享的常见单词和语义关系很少,导致检索失败。然而,这些段落可以通过在我们的框架中使用  进行迭代扩展来发现。
算法1描述了我们的CogQA框架的过程。
在初始化之后,就开始了图谱拓展和推理的迭代过程。
如算法1所描述的:
System 1: 在  和问题  的引导下读取  ,提取中的  同时生成语义向量  。
System2: 更新隐藏层表示  ,并为后续任何可能的节点  提供  。最终的预测是基于做出的。
对于任一节点  ,如果是一个hop节点,使用  抽取出中的hop和候选答案。
遍历所有从抽取的hop,判断每一个hop是否已经存在图谱  的节点中,若不是则添加一个新节点到中;若已存在判断这个节点y是否和之间存在一条边,若不是则将节点之间添加一条新的边,并将节点标记为前沿节点。
遍历所有从抽取的候选答案,将其在图谱中添加为一个答案节点并将节点和y相连接。
因为有了新的线索,这些新添加的节点或拥有新边的节点被称作前沿节点,它们都需要被重新访问。当图谱中已经没有前沿节点或是足够大时,算法结束。
接下来讲一下System 1和System 2的实现:

在System 1中,BERT模型的输入形式如下:

输入中包含3个分隔符,其中Sentence A相当于前置线索信息,Sentence B是当前  的介绍性段落。是从前置节点中获取的句子,在本文中,直接由原文构成。值得一提的是,当缺失时可以不计算span,只计算。同时初始化图谱时只计算输入中的Question部分。
Span的提取参考BERT做普通QA任务的方法,其中hop的起止符号定义为  ,答案的起止符号定义为  。第  个输入  是一个答案区域开始的概率,  的计算如下:
设  为第  个输入 是一个答案空间结束的概率,同样可以用上式计算。我们只关注  的开始概率{  }的位置。对于每个  ,结束位置  由以下公式计算
其中  是span的最大可能长度。
关于语义信息的生成,最直接的方法是使用BERT输出的第0个位置  来表示整个序列的总结,这里其实和BERT做分类任务时的原理一致,即使用字向量表示整句话。然而BERT模型的最后几层大多数位置都指向了  或  。在本文作者选择倒数第3层的输出  来表示  。

System 2有两大功能,第一个功能是为前沿节点提供前置节点包含的原文信息。第二个功能是更新隐藏特征表示  。

第一个功能的实现其实就是收集了  的前置节点包含的原文信息然后整合作为System 1的输入 。这里重点讲一下第二个功能,对于每一个节点  ,的初始表示其实就是System 1输出的,定义  表示通过GNN每一次迭代更新的新的隐藏状态表示。  的更新公式如下:
其中  是激活函数,  是权重矩阵。  是图谱  的邻接矩阵,它用来表示不同节点之间的相邻关系。的所有列归一化成  ,  即对角线是的每一列和。隐藏向量  左乘以,这个操作可被表示为一个局部光谱滤波器。值得一提的是,这部分的操作可以是异步执行的,异步更新与同步更新的效果相同且效率更高。

03

实验结果
本文使用了CMU、Stanford和Montréal大学共同提出的HotpotQA数据集,语料范围是全维基百科。HotpotQA的每个问题都涉及多个文本,并且不仅要求模型输出答案,而且要输出支持信息所在的句子,只有当答案和支持句都判断正确才被认为是正确的。本文的CogQA显著超过了之前的方法和同时期的其他模型:
除了性能的比较上外,作者也提供了可解释性的实验结果,充分体现了双通道思想带来的优势。

04

思考
本文带给我们的绝不仅仅是模型性能上的提升,更像是作者将深度学习结合认知科学理论的一次尝试,这篇文章验证了认知图谱理论的可行性。现阶段,我们即可以将这个理论应用于其他自然语言处理任务中,构造出一个具有强可解释性的文本推理模型。

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“源头活水”历史文章


更多源头活水专栏文章,

请点击文章底部“阅读原文”查看



分享、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存