机器阅读理解根据输出的答案类型可以分为:
填空式阅读理解,抽取式阅读理解,多项选择式阅读理解,生成式阅读理解
填空式阅读理解
对于填空式阅读理解,具体的做法如图
一篇文章对应一个问题,词嵌入之后送入模型,注意就算一篇文章有多个问题,
那么也仍然是一篇文章对应一个问题,如图所示,模型返回的张量shape==(passage_length,1),因为填空式问答只有一个空需要填,所以对应的标签是one_hot形式的张量,只有答案单词那个位置是1。
抽取式阅读理解
抽取式阅读理解指的就是从文章中提取出来一段连续的单词作为答案。
如图所示,对于抽取式问答来说,我们要预测的是答案的起始位置概率和终止位置概率,最简单的方式就是独立的预测。也就是说模型最后输出的张量V,形状是(passage_length,dim),然后用两个线性层即可得到
S=V*W1,E=V*W2.
其中W1.shape==W2.shape==(dim,1)
S.shape==(passage_length,1)==E.shape
如上图,两个向量乘积后得到(passage_length,passage_length)的一个矩阵,每一行表示的是passage中某个单词作为答案起始位置的概率,每一列表示的是passage中某个单词作为答案终止位置的概率。上图中矩阵一开始不是上三角的。但是我们要把它强行做成上三角,因为下三角的元素值表示的答案的起始位置大于终止位置。做成上三角矩阵后,我们只需要选出来其中值最大的,那个值做对应的行的下标就是passage中的第几个单词,也就是预测的答案的起始位置,所对应的列就不必说了。
多项选择式问答
多项选择式问答类似于我们考试做的阅读理解题,一篇文章,几个问题,一个问题四个选项。
这种情况下送入模型的仍然是一篇文章对应一个问题,而一个问题又对应四个选项,此时的做法就是(文章,问题,选项1)送入模型中,得到score_1表示的就是模型根据当前这篇文章,当前这个问题以及第一个选项然后给出了对第一个选项的分值。
如图
后面三个选项按照类似的做法,模型最后给出四个选项的各自的分值
如下图
对给出的分值和答案做交叉商即可得到loss。这里可以看出问题转变为四分类问题。