问答系统(Question Answering)实际需求很多,比如我们常用的谷歌搜索就可看做是问答系统。通常我们可以将问答系统看做两部分:从海量的文件中,找到与问题相关的可能包含回答的文件,这一过程是传统的信息抽取information retrieval;从文件或段落中找到相关的答案,这一过程也被称作Reading Comprehension阅读理解。
阅读理解需要数据是Passage即文字段落,Question问题以及相应的Answer回答。SQuAD(Stanford Question Answering Dataset)就是这样的数据集。对于每个问题都有人类提供的三个标准答案,为了评估问答模型,有两个metric:
通常F1 score被当做是更可靠的metric。
SQuAD1.0的一个缺陷是,所有问题都有答案的段落,系统(隐式地)排名候选答案并选择最好的一个,这就变成了一种排名任务。SQuAD2.0中 ⅓ 的训练问题没有回答,大约 ½ 的开发/测试问题没有回答,对于No Answer examples, no answer 获得的得分为1,对于精确匹配和F1,任何其他响应的得分都为0
当然SQuAD存在其局限性:1.答案需直接截取自段落中的文字,没有是非判断、计数等问题。2.问题的选择依赖于段落,可能与实际中的信息获取需求不同那个。3.几乎没有跨句子之间的理解与推断。
这里介绍关于QA的一个最小的,非常成功的阅读理解和问题回答架构Stanford Attentive Reader。该架构的思路如下:
首先将问题用向量表示:
之后处理文章:
在Stanford Attentive Reader的基础上进行了改进得到了Stanford Attentive Reader++。具体的模型架构如下图,该架构对文章和问题部分都进行了改进。
问题部分
文章部分,文章中每个token的向量表示由一下部分连接而成:
BiDAF(Bi-Directional Attention Flow for Machine Comprehension)是另一个重要的QA模型。
其核心思想是attention 应该双向流动——从上下文到问题,从问题到上下文。
更近期的发展基本上是更复杂的结构以及attention的各种结合。对于embedding的提取方面,也更多采用contextual embedding,收到了很好的效果。
之前的Neural Machine Translation基本上都是基于word单词作为基本单位的,但是其缺点是不能很好的解决out-of-vocabulary即单词不在词汇库里的情况,且对于单词的一些词法上的修饰(morphology)处理的也不是很好。一个自然的想法就是能够利用比word更基本的组成来建立模型,以更好的解决这些问题。
一种思路是将字符作为基本单元,建立Character-level model,深度学习模型可以存储和构建来自于多个字母组的含义表示,从而模拟语素和更大单位的意义,从而汇总形成语义。这种方法都被证明是非常成功的
Fully Character-Level Neural Machine Translation without Explicit Segmentation中利用了多层的convolution, pooling与highway layer来解决这一问题,其中encoder的结构如下图所示,解码器是一个字符级的GRU:
其编码器流程如下:
实验结果显示,基于字符的模型能更好的处理OOV的问题,而且对于多语言场景,能更好的学习各语言间通用的词素。但是由于基本单元换为字符后,相较于单词,其输入的序列更长了,使得数据更稀疏且长程的依赖关系更难学习,训练速度也会降低。
基本单元介于字符与单词之间的模型称作Subword Model。Subword的选择有两种方式:一是与word级模型相同的架构,但是使用更小的单元;二是混合架构,主模型使用单词,其他使用字符级。
参考论文:Byte Pair Encoding
BPE最早是一种压缩算法,基本思路是把经常出现的byte pair用一个新的byte来代替,例如假设(‘A’, ’B‘)经常顺序出现,则用一个新的标志’AB’来代替它们。
以下图为例,在原有的语料库中,“es”的频率最高,因此将其加入,之后依次加入“est”、“lo”直到词汇库大小达到我们所设定的目标。
谷歌的NMT模型用了BPE的变种,称作wordpiece model,BPE中利用了n-gram count来更新词汇库,而wordpiece model中则用了一种贪心近似来最大化语言模型的对数似然函数值,即选取新的n-gram时都是选择使得perplexity减少最多的ngram。
进一步的,sentencepiece model将词间的空白也当成一种标记,可以直接处理sentence,而不需要将其pre-tokenize成单词。
还有一种思路是在大多数情况下我们还是采用word level模型,而只在遇到OOV的情况才采用character level模型。
其结构如下图所示,大部分还是依赖于比较高效的word level模型,但遇到例子中的"cute"这样的OOV词汇,我们就需要建立一个character level的表示,decode时遇到这个表示OOV的特殊标记时,就需要character level的decode,训练过程是end2end的,不过损失函数是word部分与character level部分损失函数的加权叠加。
混合模型与字符级模型相比
在Word Vector中,word vector是基于word level来建立的,对于含有很多OOV的词汇的文本效果不好,那么我们可不可以采取类似于上面的subword的思路来产生更好的word embedding呢?
下图是一种用于单词嵌入和单词形态学的联合模型(Cao and Rei 2016)
参考论文:FastText
FAIR的FastText就是利用subword将word2vec扩充,有效的构建embedding。
其基本思路是将单词表示为用边界符号和整词扩充的字符n-grams和单词本身的集合,例如对于where这个单词和n=3的情况,它可以表示为
其中"<",">"为代表单词开始与结束的特殊标记。将word表示为这些表示的和,令w为中心词、c为上下文词、G表示为中心词n-gram的、Zg为每个n-gram的矢量表示,则上下文单词得分为
之后就可以按照经典的word2vec算法训练得到这些特征向量。
这种方式既保持了word2vec计算速度快的优点,又解决了遇到training data中没见过的oov word的表示问题,可谓一举两得。
自然语言生成指的是我们生成(即写入)新文本的任何设置
解码算法是一种算法,用于从语言模型生成文本。以下介绍几种解码方法及其优缺点:
自然语言生成的子任务包括:机器翻译、摘要、对话(闲聊和基于任务)、创意写作(讲故事,诗歌创作)、自由形式问答(即生成答案,从文本或知识库中提取)、图像字幕等
摘要是指给定输入文本x,写出更短的摘要 y 并包含 x 的主要信息,摘要可以是单文档,即写一个文档 x 的摘要 y,也可以是多文档,即写一个多个文档的摘要y。
句子简化是一个不同但相关的任务:将源文本改写为更简单(有时是更短)的版本。
摘要主要有两种策略:
对于Pre-neural摘要,大多是抽取式的,Pre-neural MT通常有一个pipeline,即:
单文档摘要摘要是一项翻译任务,因此我们可以使用标准的 seq2seq + attention NMT 方法,神经摘要自2015年以来,有了更多的发展:
ROUGE (Recall-Oriented Understudy for Gisting Evaluation):类似于 BLEU,是基于 n-gram 覆盖的算法,不同之处在于:
对话包括各种各样的设置,面向任务的对话(客户服务等),社会对话(闲聊)等,对话系统的发展同样有两个阶段。最早的对话系统是Pre- and post-neural dialogue,这个阶段对话系统经常使用预定义的模板,或从语料库中检索一个适当的反应的反应。
之后使用seq2seq方法设计对话系统,然而简单的应用标准seq2seq +attention 的方法在对话(闲聊)任务中有严重的普遍缺陷,包括:
一般性/无聊的反应,解决办法:在Beam搜索中增大罕见字的概率/使用抽样解码算法而不是Beam搜索,用一些额外的内容训练解码器(如抽样一些内容词并处理)
无关的反应(与上下文不够相关):不是去优化输入 S 到回答 T 的映射来最大化给定 S 的 T 的条件概率,而是去优化输入S 和回复 T 之间的最大互信息Maximum Mutual Information (MMI),从而抑制模型去选择那些本来就很大概率的通用句子
重复,解决办法:在 Beam 搜索中禁止重复n-grams,在seq2seq中训练一个覆盖机制,定义训练目标以阻止重复
缺乏上下文(不记得谈话历史)
缺乏一致的角色人格
神经讲故事的大部分工作使用某种提示,例如给定图像生成的故事情节段落、给定一个简短的写作提示生成一个故事等
基于词重叠的指标(BLEU,ROUGE,METROR,F1,等等)并不是非常适合NLG任务,因为NLG任务比机器翻译更开放,因此,我们采用一些其他的指标,当然,这些自动指标也难以充分捕捉整体质量
虽然以上这些指标不衡量整体质量,他们可以帮助我们跟踪一些我们关心的重要品质。
人类的判断被认为是黄金标准,但是进行人类有效评估非常困难,主要问题在于人必然非常主观、回答者有不同的期望等,因此设计了一个详细的人类评价体系分离的重要因素,有助于整体chatbot质量
可能的新方法:
当前NLG的研究趋势: