ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【CS224n】(lecture11)Question Answering

2022-01-14 22:00:30  阅读:238  来源: 互联网

标签:BERT right mathbf Answering QA 答案 lecture11 CS224n left


学习总结

文章目录

一、QA介绍

QA:构建能够自动回答人类用自然语言提出的问题的系统。
在这里插入图片描述

1.1 QA的分类:

(本task主要讲texutal QA,不考虑KB-QA、visual-QA等)

  • 根据信息来源分类:一个文本段落,所有的Web文档,知识库,表格,图像;
  • 问题类型:Factoid vs non-factoid, open-domain vs closed-domain, simple vs compositional等等;
  • 回答类型:A short segment of text, a paragraph, a list, yes/no等等。

QA系统的类型:

  • 根据任务类型
    • 1.任务型机器人用于完成用户特定任务,机器人利用语义去执行后台已对接的能力,帮用户完成特定任务。例如预订酒店,销售产品等。
    • 特点:智能决策,状态转移,槽位填充,多轮问答。
  • 解答型机器人
    • 用于解答用户的问题,机器人的回复来源于特定知识库,以特定回复回答用户。例如跟百科问答相关的机器人或者产品客服机器人。
    • 特点:问答模型,信息检索,单轮为主。
  • 闲聊型机器人
    • 跟用户的无目的闲聊,机器人回复不限制,多以趣味性跟个性化回复为主。
    • 特点:开放域,个性化,内容丰富。

根据解决方案:

  • 基于检索式的问答系统:根据问题从数据库搜索最接近的问题,返回相应答案。特点:稳定可控,缺乏灵活性。
  • 基于生成式的问答系统:根据实际问题直接生成答案。特点:回复更加丰富,相对灵活,生成答案不受控。(多用于闲聊机器人)

1.2 QA的框架

问答系统通常包括三个环节,NLU(自然语言理解),DM(中控平台),NLG(自然语言生成)。其中:

  • DM主要包括对话状态跟踪(Dialogue State Tracking)跟策略学习(Policy Learning)两个部分。
  • 如下图所示,其中NLU主要是对用户问题的解析,可以理解为把用户问题转化为机器能理解的语言。对话状态跟踪主要是获得当前的状态,可以理解为机器人所理解的用户问题的所处的状态,策略学习主要是根据当前系统的状态采取的策略(例如用户在这里可能是要询问地址,那么就返回的策略就是跟询问地址相关的),NLG是对用户的问题的回复,可以理解为用户最终会看到的机器人返回的结果。在这里插入图片描述

在这里插入图片描述

IBM Watson在2011年打败Jeopardy champions

1.3 QA在深度学习领域

Open-Retrieval Question Answering一个重要方面是其表现力,能够检索开放语料库中的任何文本,而不是局限于信息检索所返回的封闭集,模型的框架如下所示:
在这里插入图片描述
几乎所有至今最先进的QA问答系统都是建立在端到端的预训练语言模型中(如BERT等)。

1.4 Beyond textual QA problems

在这里插入图片描述
除了文本QA问题,今天我们要讨论问的QA如何回答基于非结构化数据文档的问题:
在这里插入图片描述

二、阅读理解

2.1 reading comprehension

阅读理解reading comprehension:阅读一篇文章,并回答基于文章的相关问题。

  • 在生活中有很多实际的应用;
  • 许多NLP任务可以归结为一个阅读理解任务。

2.2 SQuAD数据集

斯坦福开发的SQuAD1.1、SQuAD2.0。这两个数据集都是抽取式问答,因此

可以建模为序列标注问题(预测passage的每个token是答案开头和结尾的概率),在评价指标上可以使用F1和EM(exact match)
在这里插入图片描述
SQuAD-1.1数据集介绍将SQuAD数据集可视化如下草图,每一个元素表示的就是答案,问题,以及问题编号。答案中给出了答案的起始位置和答案的文本字符串。

我们要的数据包括context,这代表一个段落,而对于这个段落会有几个问题和对应的答案,所以还需要question和text以及answer start,text就是question的答案。这个数据集一个question只有一个答案。result中的字段除了id外其余的就是我们训练需要的字段。

另外SQuAD 2.0数据集可以通过NLP 高引论文解读两篇 | BERT模型、SQuAD数据集了解。
在这里插入图片描述

  • Passage 是来⾃维基百科的⼀段⽂本,系统需要回答问题,在⽂章中找出答案
  • 答案必须是⽂章中的⼀系列单词序列,也就是提取式问答
  • 100k examples

(1)SQuAD evaluation, v1.1

  • 系统在两个指标上计算得分
    • 精确匹配:1/0的准确度,您是否匹配三个答案中的⼀个
    • F1:将系统和每个答案都视为词袋,并评估:
       Precision  = T P T P + F P ,  Recall  = T P T P + F N ,  harmonic mean  F 1 = 2 P R P + R \text { Precision }=\frac{T P}{T P+F P}, \text { Recall }=\frac{T P}{T P+F N}, \text { harmonic mean } \mathrm{F} 1=\frac{2 P R}{P+R}  Precision =TP+FPTP​, Recall =TP+FNTP​, harmonic mean F1=P+R2PR​
    • Precision 和 Recall 的调和平均值
    • 分数是(宏观)平均每题F1分数
  • F1测量被视为更可靠的指标,作为主要指标使⽤
    • 它不是基于选择是否和⼈类选择的跨度完全相同,⼈类选择的跨度容易受到各种影响,包括换行
    • 在单次级别匹配不同的答案
  • 这两个指标忽视标点符号和冠词(a, an, the only)

(2)SQuAD 2.0

  • SQuAD1.0的一个缺陷是,所有问题都有答案的段落
  • 系统(隐式地)排名候选答案并选择最好的一个,这就变成了一种排名任务
  • 你不必判断⼀个span是否回答了这个问题
  • SQuAD2.0中 1/3 的训练问题没有回答,大约 1/2 的开发/测试问题没有回答
    • 对于No Answer examples, no answer 获得的得分为1,对于精确匹配和F1,任何其他响应的得分都为0
  • SQuAD2.0最简单的系统方法
    • 对于一个 span 是否回答了一个问题有⼀个阈值评分
  • 或者可以有第二个确认回答的组件
    • 类似 自然语言推理 或者 答案验证

2.3 神经网络模型

(1)LSTM-based vs BERT models

在这里插入图片描述

(2)带注意力机制的seq2seq模型

  • 除了源句和目标句,我们还有两个序列:段落和问题(长度不平衡)
  • 我们需要建模找出文章中哪些词与问题最相关(以及哪些疑问词)
  • 我们不需要一个自回归解码器来逐字生成目标句子。相反,我们只需要训练两个分类器来预测答案的开始和结束位置。

(3)BiDAF: the Bidirectional Attention Flow model

《BiDAF: the Bidirectional Attention Flow model》 是RNN时代的一篇经典工作,可以参考知乎上的一篇解读
在这里插入图片描述

  • 多年来,BiDAF architecture有许多变体和改进,但其核心思想是 the Attention Flow layer。

1)encoder

  • 为上下文(context)和查询问题(query)中的每个单词,使用单词embedding(Glove)和字母字符embedding(基于CNNs的字符embedding):
    e ( c i ) = f ( [ GloVe ⁡ ( c i ) ; charEmb ⁡ ( c i ) ] ) e\left(c_{i}\right)=f\left(\left[\operatorname{GloVe}\left(c_{i}\right) ; \operatorname{charEmb}\left(c_{i}\right)\right]\right) e(ci​)=f([GloVe(ci​);charEmb(ci​)]) e ( q i ) = f ( [ GloVe ⁡ ( q i ) ; charEmb ⁡ ( q i ) ] ) e\left(q_{i}\right)=f\left(\left[\operatorname{GloVe}\left(q_{i}\right) ; \operatorname{charEmb}\left(q_{i}\right)\right]\right) e(qi​)=f([GloVe(qi​);charEmb(qi​)])
  • 然后使用2个双向LSTM分别为上下文context和查询query生成上下文嵌入embedding。
    c → i = LSTM ⁡ ( c → i − 1 , e ( c i ) ) ∈ R H q → i = LSTM ⁡ ( q → i − 1 , e ( q i ) ) ∈ R H c ← i = LSTM ⁡ ( c ← i + 1 , e ( c i ) ) ∈ R H q ← i = LSTM ⁡ ( q ← i + 1 , e ( q i ) ) ∈ R H c i = [ c → i ; c ← i ] ∈ R 2 H q i = [ q → i ; q ← i ] ∈ R 2 H \begin{array}{ll} \overrightarrow{\mathbf{c}}_{i}=\operatorname{LSTM}\left(\overrightarrow{\mathbf{c}}_{i-1}, e\left(c_{i}\right)\right) \in \mathbb{R}^{H} & \overrightarrow{\mathbf{q}}_{i}=\operatorname{LSTM}\left(\overrightarrow{\mathbf{q}}_{i-1}, e\left(q_{i}\right)\right) \in \mathbb{R}^{H} \\ \overleftarrow{\mathbf{c}}_{i}=\operatorname{LSTM}\left(\overleftarrow{\mathbf{c}}_{i+1}, e\left(c_{i}\right)\right) \in \mathbb{R}^{H} & \overleftarrow{\mathbf{q}}_{i}=\operatorname{LSTM}\left(\overleftarrow{\mathbf{q}}_{i+1}, e\left(q_{i}\right)\right) \in \mathbb{R}^{H} \\ \mathbf{c}_{i}=\left[\overrightarrow{\mathbf{c}}_{i} ; \overleftarrow{\mathbf{c}}_{i}\right] \in \mathbb{R}^{2 H} & \mathbf{q}_{i}=\left[\overrightarrow{\mathbf{q}}_{i} ; \overleftarrow{\mathbf{q}}_{i}\right] \in \mathbb{R}^{2 H} \end{array} c i​=LSTM(c i−1​,e(ci​))∈RHc i​=LSTM(c i+1​,e(ci​))∈RHci​=[c i​;c i​]∈R2H​q ​i​=LSTM(q ​i−1​,e(qi​))∈RHq ​i​=LSTM(q ​i+1​,e(qi​))∈RHqi​=[q ​i​;q ​i​]∈R2H​

2)attention

在这里插入图片描述

  • 首先计算每一对的相似度分数 ( c i , q j ) \left(\mathbf{c}_{i}, \mathbf{q}_{j}\right) (ci​,qj​): S i , j = w s i m ⊤ [ c i ; q j ; c i ⊙ q j ] ∈ R w s i m ∈ R 6 H S_{i, j}=\mathbf{w}_{\mathrm{sim}}^{\boldsymbol{\top}}\left[\mathbf{c}_{i} ; \mathbf{q}_{j} ; \mathbf{c}_{i} \odot \mathbf{q}_{j}\right] \in \mathbb{R} \quad \mathbf{w}_{\mathrm{sim}} \in \mathbb{R}^{6 H} Si,j​=wsim⊤​[ci​;qj​;ci​⊙qj​]∈Rwsim​∈R6H
  • Context-to-Question (C2Q) 注意力 (哪些查询词与每个上下文词最相关): α i , j = softmax ⁡ j ( S i , j ) ∈ R a i = ∑ j = 1 M α i , j q j ∈ R 2 H \alpha_{i, j}=\operatorname{softmax}_{j}\left(S_{i, j}\right) \in \mathbb{R} \quad \quad \mathbf{a}_{i}=\sum_{j=1}^{M} \alpha_{i, j} \mathbf{q}_{j} \in \mathbb{R}^{2 H} αi,j​=softmaxj​(Si,j​)∈Rai​=j=1∑M​αi,j​qj​∈R2H
  • Question-to-Context (Q2C) 注意力(上下文中最重要的单词相对于查询的加权和——通过max略有不对称) β i = softmax ⁡ i ( max ⁡ j = 1 M ( S i , j ) ) ∈ R N b = ∑ i = 1 N β i c i ∈ R 2 H \beta_{i}=\operatorname{softmax}_{i}\left(\max _{j=1}^{M}\left(S_{i, j}\right)\right) \in \mathbb{R}^{N} \quad \mathbf{b}=\sum_{i=1}^{N} \beta_{i} \mathbf{c}_{i} \in \mathbb{R}^{2 H} βi​=softmaxi​(j=1maxM​(Si,j​))∈RNb=i=1∑N​βi​ci​∈R2H

3)Modeling and output layers

  • Modeling layer:
    m i = BiLSTM ⁡ ( g i ) ∈ R 2 H \mathbf{m}_{i}=\operatorname{BiLSTM}\left(\mathbf{g}_{\mathrm{i}}\right) \in \mathbb{R}^{2 H} mi​=BiLSTM(gi​)∈R2H
  • Output layer:
    p start  = softmax ⁡ ( w start  ⊤ [ g i ; m i ] ) p end  = softmax ⁡ ( w end  ⊤ [ g i ; m i ′ ] ) m i ′ = BiLSTM ⁡ ( m i ) ∈ R 2 H w start  , w end  ∈ R 10 H \begin{aligned} p_{\text {start }}=\operatorname{softmax}\left(\mathbf{w}_{\text {start }}^{\top}\left[\mathbf{g}_{i} ; \mathbf{m}_{i}\right]\right) & p_{\text {end }}=\operatorname{softmax}\left(\mathbf{w}_{\text {end }}^{\top}\left[\mathbf{g}_{i} ; \mathbf{m}_{i}^{\prime}\right]\right) \\ & \mathbf{m}_{i}^{\prime}=\operatorname{BiLSTM}\left(\mathbf{m}_{i}\right) \in \mathbb{R}^{2 H} \quad \mathbf{w}_{\text {start }}, \mathbf{w}_{\text {end }} \in \mathbb{R}^{10 H} \end{aligned} pstart ​=softmax(wstart ⊤​[gi​;mi​])​pend ​=softmax(wend ⊤​[gi​;mi′​])mi′​=BiLSTM(mi​)∈R2Hwstart ​,wend ​∈R10H​

(4)BERT应用在阅读理解上

BERT用在来阅读理解时,最朴素的做法就是,将一个样本的passage和Question作为两个原始的segment用【sep】拼接起来作为BERT的输入
在这里插入图片描述

  • BERT是一种深度双向transformer的编码器encoder部分,在大量文本上进行了预训练(维基百科+ BooksCorpus)。
  • BERT在两个任务上进行预训练:
    • MLM:Masked language model
    • NSP:Next sentence prediction
  • BERTbase版本有12 layers and 110M个参数;BERTlarge有24 layers 和 330M 的参数量。

在这里插入图片描述
这里BERT的作用可以理解为一个提取特征的encoder,其对于每个passage的token都生成了一个包含上下文信息以及篇章同问题之间的交互信息(具体去了解transformer,它是BERT的backbone)的向量(representation)。接下里针对QA任务构建简单的下游网络,其实就是两个预测层,分别预测该representation对应的token是答案开头或者起始的概率。

其训练目标就是两个loss相加。
在这里插入图片描述

(5)BiDAF 和 BERT 之间的区别

  • BERT模型有更多的参数(110M或330M), BiDAF有 大约 2.5M 参数;
  • 两者的backbone不同。BiDAF是建立在几个双向lstm之上的,在训练和推理时都是线性的;而BERT是建立在transformer(没有递归架构,更容易并行化)。
  • BERT是大规模语料预训练得到的,而BiDAF只是建立在GloVe之上(所有剩余的参数需要从监督数据集学习),从头训练。

(6)针对下游任务设计更好的预训练目标

danqi这里用QA做例子很好地渗透了一种思想:预训练为什么work,其实就是因为其任务本身和下游任务之前存在overlap(当然也要加上充足的数据量),比如MLM任务可以很好地锻炼模型的“理解能力”,所以BERT在NLU任务上刷榜了,又比如自回归和生成类任务天然更搭,所以GPT在生成类任务上更好一些。因此,其提出了一个针对阅读理解任务的预训练目标,即span-BERT。
在这里插入图片描述

  • 掩蔽连续的单词跨度,而不是15%的随机单词
  • 利用span的两个端点预测中间的所有掩码词=将span的信息压缩到它的两个端点 y i = f ( x s − 1 , x e + 1 , p i − s + 1 ) \mathbf{y}_{i}=f\left(\mathbf{x}_{s-1}, \mathbf{x}_{e+1}, \mathbf{p}_{i-s+1}\right) yi​=f(xs−1​,xe+1​,pi−s+1​)

(7)存在的问题

我们的模型在SQuAD上的表现已经超过人类的水平,但不代表其已经具有阅读理解能力了。当前系统在对抗性示例或领域外分布的示例上仍然表现不佳,模型很容易被其他候选项迷惑。
在这里插入图片描述
领域(数据集)间迁移能力差:
在这里插入图片描述
这里提到了acl2021的best paper:《Beyond Accuracy: Behavioral Testing of NLP Models with CheckList》

这篇论文认为模型在held-out集合上的测评结果不能真正的代表这个模型的能力,因为测试集规模小并且往往和训练集有相似的分布,同时一些指标也不见得合理,并且将模型表现聚合到一个指标上,就不能很好地发现模型在哪些case上比较差进而进行针对性的改进。因此,本文提出了一套基于软件工程领域的“黑箱测试”理论的模型评估套件——checklist。更多的内容可以参看论文,这里只截取danqi课程相关的内容,即checklist针对BERT-large(在SQuAD上微调)的测试结果:
在这里插入图片描述
从这里可以看出来,虽然bert在SQuAD上的表现超过了人类表现,但是却经不起checklist的检验,主要体现在双重否定,属性、人和物品之间的比较级,指代分辨,主客体区分上。可见QA问题远远没有被解决。

三、Open-domain (textual) question answering

开放域文本问答,与阅读理解不同,Open-domain (textual) QA并不会基于给定的文章给出答案,而是从大规模的知识库或者文本集合(如维基百科等)中返回答案。。

3.1 Retriever-reader framework

在这里插入图片描述
将问题分解为两阶段,首先检索出最相关的passage,然后转化为一个阅读理解问题。这里danqi很快地过了两篇论文:
在这里插入图片描述

Lee et al., 2019. Latent Retrieval for Weakly Supervised Open Domain Question Answering

在这里插入图片描述

Karpukhin et al., 2020. Dense Passage Retrieval for Open-Domain Question Answering

这两个区别简单来说就是,前者需要question和passage联合输入模型,这样经过排列组合后,模型的计算量就大大增加了。后者直接将question和passage编码为固定向量,然后直接计算相似度,减少了复杂度。
  • Input: a large collection of documents D = D 1 , D 2 , … , D N \mathscr{D}=D_{1}, D_{2}, \ldots, D_{N} D=D1​,D2​,…,DN​ and Q Q Q
  • Output: an answer string A A A
  • Retriever: f ( D , Q ) ⟶ P 1 , … , P K f(\mathscr{D}, Q) \longrightarrow P_{1}, \ldots, P_{K} \quad f(D,Q)⟶P1​,…,PK​ K is pre-defined (e.g., 100)
  • Reader: g ( Q , { P 1 , … , P K } ) ⟶ A g\left(Q,\left\{P_{1}, \ldots, P_{K}\right\}\right) \longrightarrow A g(Q,{P1​,…,PK​})⟶A A reading comprehension problem!
    In DrQA,
  • Retriever = A standard TF-IDF information-retrieval sparse model (a fixed module)
  • Reader = a neural reading comprehension model that we just learned
  • Trained on SQuAD and other distantly-supervised QA datasets
    Distantly-supervised examples: ( Q , A ) ⟶ ( P , Q , A ) (\mathrm{Q}, \mathrm{A}) \longrightarrow(\mathrm{P}, \mathrm{Q}, \mathrm{A}) (Q,A)⟶(P,Q,A)

3.2 Dense retrieval + generative models

之前提到的都是从已有的文本中抽取答案,随着研究的进展,生成式问答出现了。这篇论文提出,先通过检索找到和问题强相关的上下文,然后将其输入给seq2seq模型,训练模型直接生成正确答案。
在这里插入图片描述

Izacard and Grave 2020. Leveraging Passage Retrieval with Generative Models for Open Domain Question Answering

随着预训练的发展,人们发现一些“巨无霸”甚至不需要上下文信息,只需要给其输入问题,它就能从自身参数保存的知识中寻找到正确答案。
在这里插入图片描述

Roberts et al., 2020. How Much Knowledge Can You Pack Into the Parameters of a Language Model?
## 3.3 不需要reader 模型 这篇论文直接将知识库切分为phrases(60 billion),然后encoding,再将question进行encoding,最后进行phrase vector和question vector之间的相似度评估(近邻搜索),返回最相似的phrase作为答案。这种做法的效果竟然也很好。 ![在这里插入图片描述](https://www.icode9.com/i/ll/?i=c3a4142f532b42019e4726dd7b7f33fc.png#pic_center =700x)

3.4 Dense retrieval + generative models

最近的研究工作表明,生成答案代替抽取答案会更好。
在这里插入图片描述

Reference

(1)课程ppt:https://web.stanford.edu/class/cs224n/slides/
(2)Speech and Language Processing :https://web.stanford.edu/~jurafsky/slp3/
(3)课程官网:https://see.stanford.edu/Course/CS224N#course-details
(4)https://zhuanlan.zhihu.com/p/451347191

标签:BERT,right,mathbf,Answering,QA,答案,lecture11,CS224n,left
来源: https://blog.csdn.net/qq_35812205/article/details/122457386

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有