DLNLP学习笔记26(QA)

1 Question Answering.
1)两个输入:① Question。② Knowledge source。
2)一个输出:Answer。
3)框架:

DLNLP学习笔记26(QA)


2 Answer.
1)Answer is simply a word.
① A benchmark corpus: bAbI

DLNLP学习笔记26(QA)

② 主要思想:将QA任务看成一个分类问题。

2)Multiple Choices.
① 实现:

DLNLP学习笔记26(QA)


3)Span in Source / Extraction-based.
① 两个corpus:SQuAD (英文);DRCD (中文)。

DLNLP学习笔记26(QA)

② 主要思路:将文章的每个token进行embedding,然后根据问题初始化start向量和end向量,再分别计算文章中每个embedding和start向量、end向量之间乘积得到一个分数,最后根据分数得到start的token和end的token。

DLNLP学习笔记26(QA)

③ Free Answer Generation. (对Answer没有限制。)

DLNLP学习笔记26(QA)

 Answer Generation.

DLNLP学习笔记26(QA)


4)Know what you don’t know.(当问题没有正确答案。)
① 一个benchmark corpus:SQuAD 2.0。(衡量机器不回答问题的能力。)

DLNLP学习笔记26(QA)

② 主要思想:在文章中加入一个token:Null。(在BERT中,将[CLS]当作Null。)

DLNLP学习笔记26(QA)

③ 其他做法:
训练一个Answerable model对问题能否进行回答进行判断。
or 训练一个Answer Verifier结合文章、问题、答案的信息判断问题是否能否进行回答。

DLNLP学习笔记26(QA)


3 Knowledge source.
1)Internet.
① 主要思想:首先提出一个问题且没有具体指定的文章,整个网络的所有文章就是Knowledge source,然后训练一个QA model从其中几篇文章获取答案。问题:这几篇从网络获取的文章可能存在与问题没有关联的文章。

DLNLP学习笔记26(QA)

② 一个实现的例子:V-Net。主要思想就是根据每一篇文章得到相应的答案,最后进行投票机制选出正确答案。

DLNLP学习笔记26(QA)

2)Visual. 主要思想:使用CNN模型将图片或者视频进行embedding,后续处理跟文本QA类似。

DLNLP学习笔记26(QA)

3)Audio.
① 语料库:

DLNLP学习笔记26(QA)

② 实现1:先对语音信息进行语音辨识,再进行QA训练。

DLNLP学习笔记26(QA)

② 实现2:直接对语音信息进行QA训练。

DLNLP学习笔记26(QA)

4)Movie QA.

DLNLP学习笔记26(QA)


4 Question.
1)Simple Question: Match & Extract.
① 任务描述:根据问题中的关键词,在文章进行匹配,然后在文章中这些关键词附近抽取答案。

DLNLP学习笔记26(QA)

② 实现:Query-to-context Attention.
主要思想,分别对文章中每一个token和问题进行embedding,再将文章的embedding和问题的embedding进行match(即进行attention计算),得到attention weight,再根据这些attention weight对新生成的文章embedding进行weighted sum(extract)得到一个结果向量,最后使用answer model对这个向量进行处理得到答案结果。

DLNLP学习笔记26(QA)

实现1:

DLNLP学习笔记26(QA)

实现2:

DLNLP学习笔记26(QA)

③ 实现:Context-to-query Attention.
主要思想:文章的每一个token的embedding都对问题中的每一个embedding计算attention,即文章对问题的注意力分布,然后进行weighted sum得到问题的注意力向量,再将问题的注意力向量跟文章的每一个embedding进行组合(例如拼接等)得到加入问题注意力向量的文章embedding,最后通过一个answer model得到答案。

DLNLP学习笔记26(QA)

实现1:其中self-matching就是self-attention。

DLNLP学习笔记26(QA)

实现2:其中self-boosted fusion就是self-attention。

DLNLP学习笔记26(QA)

④ 实现:两种方法结合。
Bi-directional Attention Flow.

DLNLP学习笔记26(QA)

DLNLP学习笔记26(QA)


Dynamic Coattention Networks.

DLNLP学习笔记26(QA)


QANet

DLNLP学习笔记26(QA)


BERT

DLNLP学习笔记26(QA)


2)Complex Question: Reasoning.(推论)
该任务不能用match&extract的方法解决,因为问题往往需要进行一定的推理,而不能直接从文章中找到。
① corpus:

DLNLP学习笔记26(QA)

DLNLP学习笔记26(QA)

DLNLP学习笔记26(QA)

② 解决:
Multiple-hop:不断改变match的对象,即改变问题。

DLNLP学习笔记26(QA)

基于Memory Network的Multiple-hop:

DLNLP学习笔记26(QA)

How many hops do we need?(一般为人为定义的超参数,而ReasoNet算法自行选择):

DLNLP学习笔记26(QA)

Graph Neural Network(不同于Multiple-hop,GNN并不会改变问题,而是通过图将各个实体连接起来,根据图中结点的关系来获得答案,除此之外,当把graph结构去掉,并使用BERT进行fine-tune时,效果也很好,即BERT的fine-tune可以取代graph的一定功能。):

DLNLP学习笔记26(QA)


3)Dialogue QA.
① Some Benchmark Corpus:

DLNLP学习笔记26(QA)

DLNLP学习笔记26(QA)

(与CoQA的不同在于QuAC可能会问出与文章甚至与上下问题无关的问题,机器只能回答No answer。)

② 解决:
Baseline,跟普通的QA model训练一样,将每个问题看做相互独立的问题进行训练,效果非常差:

DLNLP学习笔记26(QA)

基于RNN:其中token的embedding由BERT的某个layer获得。

DLNLP学习笔记26(QA)

基于self-attention:

DLNLP学习笔记26(QA)

③ 实验结果:
· BERT:

DLNLP学习笔记26(QA)


· 在bAbI等数据集上,分别使用文章加问题,只有文章,只有问题进行训练的实验结果:

DLNLP学习笔记26(QA)


· 当简化问题时,实验效果可能更好,甚至只有略微下降(也许是corpus的设计问题,而不是机器的效果超越了人类。):

DLNLP学习笔记26(QA)


· 对VQA corpus的问题分布进行修改得到VQA-CP,有利于解决上述问题:

DLNLP学习笔记26(QA)


· 在不同的corpus上进行训练测试,同样有效解决上述问题:

DLNLP学习笔记26(QA)