1.QA的基本流程:
问题的答案可能是明确的,也可能是有变化的。
答案给出的方式,可能是一个词,或者是一个单个的句子,
获取知识的来源,可以使文本,声音,搜索,视频。
答案形式部分:
2.输出的答案就是一个单词:
15年的一个数据集:BABI
做法:
3.选择题:
4.要给出的答案就在给出的文本中:
SQUAD:是针对英文的。
DRCD:是针对中文的。
找哪个token当做答案开头的概率最大,哪个token当做答案结尾的概率最大。
5.Free Answer Generation:
答案不在文章中
一种特殊的情况是答案分布在文章的不同位置。
其他特殊情况如下图小黑体字所示:
6.用seq2seq产生一个model:
S-net:
7.QA还需要考虑的一个特殊的问题:
并不是所有的问题都是有答案的:
当遇到这些问题的应该,应该不回答:
bert的做法,在文章里面加入一个特别的token:NULL
也就是:句子中加入CLS的作用
其他模型,再训练一个决定问题能不能被回答的model:
还有的模型是把:问题,答案,文章 再一次的输入到另一个模型决定能否回答。
knowledge source 部分:
8.通过搜索引擎来查找问题的答案:
多个答案的话,需要评估每一个答案的可信度,选出正确的答案:
V-Net采用的方式是投票的方法:
9.还可以语音视频等,
过。
问题的类型:
10.Simple Questions:![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ed07e7b03c363124ccbc4edc906d1d04.png)
使用: Query-to-context:
第二版本:Question不是单个的向量,每个都与knowledge source做一次attention,得到的结果进行处理(如max),
context-to-Query:
相关的经典的架构:R-net
把上述两个attention结合起来,Bi-directional Attention Flow:
11.bert之前有很多的模型:
过。
12.bert:
bert效果好的原因就是:
**不但有Context-to-query, Query-to-context, **
还有Self
13.Complex Question:Reasoning。
相关的语料:
14.Multiple-hop:
每次不是将直接提取到的答案直接输出,而是在进行更新的提取。
上述找答案的过程可以概括成如下的模型:
reasonet:让机器自己决定做几次上述的:
15.Graph Neural Network:
16.Dialog QA:
问题可能无法回答:
17.没有用bert的解决方式:
RNN:
self-attention:
18.使用bert家族的结果:
19.很奇怪的现象:
给模型看问题和文章进行训练。
只给模型看问题进行训练。
只给模型看文章进行训练。
只看文章有时竟然高于看问题和文章。
original是最原始的问题。
reduced:是做很简短的提问。
confidence:认为回答正确的概率。
竟然发现,reduced之后,分数有的上升了,有的只有稍稍的下降。
20.出现上述问题的原因是机器学错了特征,比如原来的语料中,一出现运动,答案基本上就是网球:
所以对语料进行如下改变: