GNN和bert做Hot-potQA

hot-pot QA

  • reasoning提供sentence-levelsupporting fact
  • 数据集长这种形式,需要supporting facts的原因是需要对推理作出解释,所以不仅要找到正确答案还要把supporting facts找出来。

Cognitive Graph for Multi-Hop Reading Comprehension at Scale

  • 问题的意思是谁导演了2003年的一个电影,这个电影有一个场景在洛杉矶的Quality Cafe拍摄的,然后有5个段落,两个段落是介绍Quality Cafe的,一个是介绍Log Angeles的,然后是两个段落分别介绍两部电影的。实心的线是理想的推理路线,圆形的是答案和候选答案。
  • 两个系统,系统1负责提取和问题有关的entities以及answer candidates,系统2负责进行推理得到正确的答案。
  • Cognitive Graph 是一个有向图,每一个图中的节点要么是entity 要么是候选答案.
  • 系统1从关于实体x的介绍段落中得到answer candidates以及next-hop entities,注意这两个不同种类的节点是用不同的方式提取的。
  • clue是一个conceptfrontier nodes是新加入图中的节点和与新加入节点有连接边的节点。
  • 从图中我们可以看到x是一个frontier nodes,然后将questioncluesx以及关于x的段落paragraph[x]得到第一是句子的表示sem[x,q,clues]以及x的下一个节点hop span以及ans span,然后GNN是根据和x之前节点的表示过一个矩阵然后将所有的差值相加,然后在个x句子的表示共同得到的x的表示。
  • 可以看到GNN更新的时候这次只更新了x并不是更新了完整的图,而且没有用到x的表示,而且sem[x,q,clues]不是最后一层的表示的而是倒数第三层的表示。
  • 还有不懂的是怎么得到的clues以及successor Node y
  • clues是提取节点x的那个句子。
  • 对于answer candidate来说没有para[x]那么直接用sem[x,q,clues]来初始化节点的表示。如果连clues[x]也没有那么就用question来初始化
  • 提取span,因为answer candidatenext hop两种节点有不同的模式,比如如果问题是where开头的,那么answer candidate更有可能是纽约而不是2019,而下一个跳的entity的模式不是这样的。可以看到提取span的方法也很暴力,就是有四个指针指示从哪里开始哪里结束,那么问题来了,岂不是一个节点只能有一个answer candidate和一个next hop nodeSansEans等等都是可学习的参数,有一个细节是选择Kspans并且如果谁的概率低于cls位置的概率那么就被丢弃,这个位置的概率被称为negative threshold
  • 说是因为最后一个层的cls hidden state用于进行span prediction就是上面的threshold所以这次是用,倒数第三层的当做句子的表示。
  • 作者发现光更新frontier node和一次性更新全部节点是没有什么区别的。
  • 得到答案是取出图中的节点然后过全连接层得到表示。
  • 训练集中的下一条和答案spans以及被提前取出来,因为答案只有一个,所以答案的开始为1,而一个句子中可以有k个跳所以初始化为1/k表示每个跳跃的概率是一样的,但是这个模型只能建模一个paragraph中只有一个跳的情况,那么就需要能够很好的预测第一个跳的位置。
  • 每个答案有两个negativerandomhop node中提取出来出来的span
  • 构建图的方法,x是节点可以指向para,para中的supporting fact中有片段和gold entity 以及 answer 大致可以匹配到那么就将边x,y连接起来,这个就是连接初始边的方法,后面的方法都是可以推断得到的。实际上是直接把clues当成supporting fact
  • 评估的时候不仅要把答案找到还要找到supporting facts,可解释性就很强。
  • 还有一个表示逻辑推断严格性的一个指标。
  • GNN真的很重要,直接提高了50%