Machine Reading Comprehension(主要是NRC)
MRC:数据集与技术——主要是神经阅读理解
数据集(详细数据集见论文 or 笔记图)
- 抽取答案数据集: triviaQA\ SQUAD1.0/2.0; triviaQA; WIKIHOP(multi-hop reasoning)
- 描述性 descriptive:NarrativeQA\unanswerable questions)
- 多选回答 multiple-choice : RACE; CoQA; ARC
- 未来数据集的趋势后面会说
MRC的基础
RC任务四类
- 完型填空类型,问题包含一个placeholder占位符
- 多项选择类型,答案可是一个单词、短语or一句话 -CoQA
- 范围预测类型(抽取式问答extractive question answering),答案必须是文本中的一个范围。因此答案可以表示为(a_start, a_end) SQUAD
- 自由形式回答类型(free-form answer),允许答案是任何形式的文本 a∈V CoQA
还有如多跳推理multi-hop question: hotpotQA
PS推理类型
word matching
paraphrasing
single-sentence reasoning
multi-sentence reasoning
ambiguous/insufficient
resolving the coreference
评估指标
通常使用:
- EM(exact match)、F1(F1 score计算平均单词重叠)
- 自由形式的回答阅读理解任务没有理想的评价指标
MRC与QA
- 高性能的RC系统成为问答/对话系统的关键。
- RC看作是QA的一个实例;但是强调了不同的东西:
QA目标是建立一个系统,系统可以依赖任何资源。
RC强调文本理解和一些被认为是衡量语言理解程度的尖锐问题,so所有回答理解问题的信息都来自文章本身,而不是任何世界知识。
NRC的基本构建模块
- word embeddings(现在有character embeddings\ context embeddings)
- RNN 对NLP中时态or段落进行建模(变体 lstm grus bi-rnn等)
- attention机制 (transformer最近的趋势,transformer新的神经网络结构仅仅依赖注意力机制):
soft\hard\co\bi\self-match
MRC模型(MRC综述论文总结)
-
几乎所有做SQuAD的模型都可以概括为同一种框架:
Embed 层,Encode 层,Interaction 层和 Answer 层。
但ReasonNet不同,使用的是Memory networks框架 + 强化学习; 模仿人类推理过程
-
关注NN结构:R-NET\FastQA\QANET问答架构(encoder仅由卷积+self-attention组成不用RNN)
-
关注语言模型:Bert(它将双向 Transformer 用于语言模型)\XLNet
细节与tips:
- stacked BiLSTMs
(可以增加 question&passage encoding的bi-LSTMs 的深度,堆叠的 BiLSTM比单层的效果更好)
- Dropout
(可以添加到LSTM层的嵌入、输入、隐藏向量中)
- handling word embedding
( or 当trainset足够大的时候,对所有单词的embeddings进行微调; 训练集小的时候可以固定为静态特征)
- fine-tune
对常用的疑问词(如:what how which)进行微调是有帮助的!
- 集成模型可以进一步提高性能的几个点!
【好】重要组件与改善:
-
最近进展用于:
初始化的预训练语言模型;
更细粒度的attention机制;
数据增强技术;
更好的训练目标
几种改善方式:在单词表示、注意机制、LSTMs的变体、其他(训练目标、数据扩充) -
词表示:
- 学习更好的分布式单词表示;为特定任务发现更好的词嵌入集合(如将Glove用更新的fasttext向量表示代替)
- 字符嵌入character embeddigns(对罕见字or词汇表外单词更有用–> CNN n-gram字符的表面模式 char-CNN)
- 上下文单词嵌入——(如ElMo Embeddings)重要创新
- 上下文单词嵌入 + 传统单词嵌入 + 字符嵌入一起使用,这在非常大的文本语料库上预训练上下文词嵌入非常有效
----以上基于统计,无法解决一词多义问题----
ELMo(embeddings for LM) 可以解决一词多义问题
GPT——不使用LSTM,而使用transformer
Bert(无法处理需要复杂推理的例子,bert的好处见后面)
GPT\GPT2都使用单向语言模型来学习词表示,bert使用双向,ELMo虽然考虑了上下文context但是效果不如bert
-
预训练方法
目前的预训练方法来看主要可以分为以下两个类型:- 基于特征(feature-based)主要代表有ELMo,用做任务的模型来学习提前预训练好的语言模型内部隐状态的组合参数
- 微调(fine-tuning)主要代表有openAI GPT,用做任务的数据来微调已经训练好的语言模型。
以上的预训练存在一个问题,就是在预训练的时候仅仅考虑的文本的单向顺序,始终不能很好的解决同时学习词汇上下文信息的问题(ELMo只是把两个方向拼接起来而已),因此本文的bert提出了一种新的预训练语言模型的方法。
-
attention机制——捕捉问题和文章之间的语义相似性
- bi-attention
- self-attention
对段落——文章中的单词可以与其他文章中的单词对齐,希望它可以解决相互参照的问题,并从文章中的多个地方收集(同一实体的)信息。
attention还有(soft\hard\co\bi\self-match)- transformer:
一种注意力机制,可以学习文本中单词之间的上下文关系的。原型包括两个独立的机制,一个 encoder 负责接收文本作为输入,一个 decoder 负责预测任务的结果。
BERT 的目标是生成语言模型,所以只需要 encoder 机制。
- LSTM替换
因为LSTM有梯度消失问题、可拓展性问题、层数增加而训练时间也线性增长。
方法:
1.层与层之间添加告诉连接or残差连接
2.(RNN替换)LSTM替换: transformer、 SRU
例:QANET问答架构(encoder仅由卷积+self-attention组成不用RNN) -
改进训练目标:
- 完型填空or多项选择题: 交叉熵 or 最大边际损失
- 跨度预测span prediction: ,涉及到gold answer 与 ground truth之间的单词重叠; 混合训练目标,将位置交叉熵损失和训练后的单词重叠量与强化学习相结合
- free form QA: 更好的seq2seq; 句子level的训练; 最小风险训练
-
数据增强:
- data augmentation:SQUAD与TRIVIAQA联合训练(Joshi等,2017)可以适度提高SQUAD上的性能。
- 迁移学习and多任务学习进行更多研究,建立跨数据集的高性能模型
现在vs未来
现有问题:
数字推理、多跳推理问题、or问题不在文档中or大文档QA;问题根据文章提出的过于简单了、不需要多句推理、只允许文章中一个跨度可以回答的问题
现有问题:文末添加让人分心的句子 ; 添加不符合语法的单词序列 效果更糟;
- 目前模型在很大程度上依赖于文章和问题之间的词汇线索。分散注意力的句子会如此具有破坏性;
- 模型在原始开发集上取得了很高的精度,但对于对抗性的例子,它们的鲁棒性并不强。这是标准监督学习范式的一个关键问题,它使得现有的模型难以在现实世界中部署。
- 目前的模型只关注文本的表层信息,在理解的(稍微)更深层次上仍然存在简单的错误。
- 有一些困难的例子需要在SQUAD中进行复杂的推理,但是由于它们的稀缺性,它们的准确性并没有真正反映在平均度量中。
未来趋势
数据集:与SQUAD相比,这些数据集:
- 要么需要更复杂的跨时态或文档推理(hotpotQA多个文档),要么需要处理更长的文档(triviaQA NarrativeQA),很长的文档用RNN编码不现实;
- 要么需要生成自由形式的答案而不是提取单个跨度,(NarrativeQA)
- 要么需要预测文章中何时没有答案。(SQUAD2.0)
模型的未来:
-
speed and scalability 更快、可拓展到更长的文档
用RNN编码一个很长的文档(例如TRIVIAQA)甚至是一本书(例如NARRATIVEQA)都是不现实的,这仍然是一个严峻的挑战
更快的构建模型(用于训练and推理)
- transformer模型 or 更轻的non-recurrent模型取代LSTMs
- 训练学习跳过部分文档模型,这样不用阅读所有内容,从而运行更快;论文:Yu等(2017)和Seo等(2018)。
优化算法的选择也会极大地影响收敛速度; 多gpu和硬件性能
-
Robustness:
现有的模型对于对抗性例子来说是非常脆弱,目前的大多数工作都遵循标准范例:对一个数据集的分割进行培训和评估。未来:
1.如何创造更好的对抗训练示例并且将它们加入到训练过程中
2.对迁移学习and多任务学习进行更多深入的研究,建立跨数据集的高性能模型。
3.打破监督学习的标准范式,并考虑如何创建更好的方法来评估我们当前的模型 -
Interpretability:可解释性(难)
1.最简单的方法是要求模型学会从文档中提取输入片段作为支持证据
模型结构:缺失的元素
- 当前的模型要么建立在序列模型的基础上or对称地处理所有单词对(例如TRANSFORMER),but忽略了语言的固有结构。
- 这些语言知识/结构仍然是对现有模型的有益补充。
- 大多数现有模型仍然缺少的另一个方面是模块(modules),如果我们想达到更深层次的阅读理解,我们未来的模型将更加结构化,模块化,解决一个综合任务可以分解成许多子问题,我们可以单独解决每一个规模较小的子问题(例如,每个推理类型)并组合它们。
研究问题
-
评估阅读理解的指标?
参加人的标准化考试可以作为评价机器阅读理解系统性能的一个好策略。
未来需要将许多阅读理解数据集集成为一个测试套件进行评估,而不是只在一个数据集上进行测试。
我们需要更好地理解我们现有的数据集:描述它们的质量和回答问题所需的技能,这将是构建更具挑战性的数据集和分析模型行为的重要一步。 -
Representations vs. Architecture在对阅读理解模型性能影响上的角色
两类模型表明了两个极端:一方面非监督表示的不可思议的力量(Radford et al., 2018;Devlin et al ., 2018)。从大量文本中预先训练的强大的语言模型,该模型已经编码了大量关于语言的属性,而一个连接篇章和问题的简单模型足以学习两者之间的依赖关系。(利用完整预训练的语言模型,能大大减轻业务端网络结构的复杂度)
另一方面,当只给出单词嵌入时,似乎对文章和问题之间的交互进行建模(或者为模型提供更多的先验知识)会有所帮助。
未来,鼓励更多在非监督学习和迁移学习上的研究。
* 模型(chen论文 可省)
- 篇章编码 and 问题编码(question encoding & passage encoding)
篇章编码stanford attentive
reader是拼接拼接:词嵌入、篇章token、em、align四个组件 - 计算上下文中问题 and 它的短文词之间的相似度函数(得到问题-短文相似度评分)
- 答案预测(attention来训练2个分类器 起始位置)
- 训练和推理training and inference. (训练目标这里是最小化交叉熵损失——一般问答形式常用的方式)
MRC应用研究方向
- 开放领域的问答 (信息检索 + 阅读理解),回答一般的问题
- 会话形式的问答 (对话 + 阅读理解) 在一段文本中多轮对话