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%
。