hot-pot QA
- 为
reasoning提供sentence-level的supporting 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是一个concept,frontier nodes是新加入图中的节点和与新加入节点有连接边的节点。
- 从图中我们可以看到
x是一个frontier nodes,然后将question和cluesx以及关于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 candidate和next hop两种节点有不同的模式,比如如果问题是where开头的,那么answer candidate更有可能是纽约而不是2019,而下一个跳的entity的模式不是这样的。可以看到提取span的方法也很暴力,就是有四个指针指示从哪里开始哪里结束,那么问题来了,岂不是一个节点只能有一个answer candidate和一个next hop node,Sans和Eans等等都是可学习的参数,有一个细节是选择K个spans并且如果谁的概率低于cls位置的概率那么就被丢弃,这个位置的概率被称为negative threshold - 说是因为最后一个层的
cls hidden state用于进行span prediction就是上面的threshold所以这次是用,倒数第三层的当做句子的表示。 - 作者发现光更新
frontier node和一次性更新全部节点是没有什么区别的。
-
得到答案是取出图中的节点然后过全连接层得到表示。
- 训练集中的下一条和答案
spans以及被提前取出来,因为答案只有一个,所以答案的开始为1,而一个句子中可以有k个跳所以初始化为1/k表示每个跳跃的概率是一样的,但是这个模型只能建模一个paragraph中只有一个跳的情况,那么就需要能够很好的预测第一个跳的位置。 - 每个答案有两个
negative是random从hop node中提取出来出来的span
- 构建图的方法,
x是节点可以指向para,para中的supporting fact中有片段和gold entity以及answer大致可以匹配到那么就将边x,y连接起来,这个就是连接初始边的方法,后面的方法都是可以推断得到的。实际上是直接把clues当成supporting fact。
- 评估的时候不仅要把答案找到还要找到
supporting facts,可解释性就很强。
-
还有一个表示逻辑推断严格性的一个指标。
-
GNN真的很重要,直接提高了50%。























